Проверен полностью33 326

Панели сервисов

Homepage

Homepage объединяет ссылки на сервисы, закладки и дополнительные виджеты интеграций в настраиваемой домашней панели. Рецепт включает вход по паролю, проверку Host, запуск без root и локальное хранение конфигурации.

Вместо start.meGPL-3.0-onlyВерсия v2.7.0

Обзор

Homepage — стартовая страница для домашнего сервера. Она группирует сервисы и закладки, ищет их через Quick Launch и показывает дополнительные виджеты интеграций. Подойдёт тем, кому удобнее редактировать YAML, чем обслуживать портал с базой данных.

Начальные ссылки ведут на панель и официальную публичную документацию. Замените их своими адресами в config/services.yaml; сами приложения по этим ссылкам не устанавливаются. Панель дополняет мониторинг сервисов.

Начиная с v2 upstream поддерживает пароль и OIDC. Рецепт включает один общий пароль и случайный секрет сессий. OIDC не настроен. Раздельных прав пользователей, нативных SAML и MFA в рецепте нет; MFA можно получить у внешнего провайдера идентификации.

YAML панели, custom CSS/JavaScript и логи находятся в подключённом каталоге конфигурации. Не нужны база данных, Docker socket, Kubernetes, API-ключи или облачный аккаунт. Виджеты ресурсов видят окружение контейнера. Отправка поискового запроса может обращаться к выбранному поисковому сервису.

Для домашней инфраструктуры Homepage заменяет часть start.me со ссылками на сервисы, но не повторяет облачную совместную работу. В репозитории upstream находится GPL версии 3; метка образа всё ещё указывает Apache-2.0, поэтому источником лицензии на странице служит LICENSE репозитория.

Официальные источники: установка и вход, конфигурация, Docker, исходники v2.7.0.

Оценка безопасности (2026-10-24): включён пароль, loopback, процесс без root и нет Docker socket. Публичному доступу всё ещё нужны HTTPS и внешняя защита входа. Это разбор конфигурации, а не скан уязвимостей образа.

Отслеживание обновлений

Это сохранённые результаты отдельных проверок, а не данные в реальном времени. Неизвестный статус означает, что проверка ещё не выполнялась.

Новые релизы

Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.

Актуальная версия v2.7.024 окт. 2026 г., 09:00 UTC

Критические уязвимости

Результат отдельного сканирования Docker-образов, а не проверки Compose.

Не провереноПроверка не выполнялась

Несовместимые обновления

Новый major находится сравнением номеров версий. Вердикт о совместимости заносится вручную после чтения release notes и порядка миграции.

Не провереноПроверка не выполнялась

compose.yaml

Изменения upstream Compose относительно проверенного рецепта.

Upstream Compose не отслеживаетсяПроверка не выполнялась

Устаревшие Docker-образы

Проверка закреплённых тегов образов на наличие новых версий.

Не провереноПроверка не выполнялась

От наблюдения к действию

План обновления

Рецепт уже закрепляет последний известный релиз. Ниже показаны сохранённые основания для этой версии.

v2.7.0v2.7.0
  1. Открыть основания релиза

    Открыть релиз на GitHub ↗ Ссылка нужна для ревизии и сама по себе не доказывает совместимость.

  2. Проверить границу версий

    Номера версий не пересекают major-границу совместимости. Вердикт о совместимости не записан.

  3. Подготовить смену тегов образов

    Смена тегов образов сейчас не планируется.

  4. Следовать документированной схеме миграции

    Смена тега и перезапуск. Шаги конкретного релиза всё равно берутся из release notes и инструкции по установке.

  5. Защитить точку отката

    Смена версии сейчас не планируется. Рецепт содержит процедуру backup. Restore проверен.

  6. Проверить обновлённый рецепт

    Точная проверка уровня «Проверен полностью» для этой версии записана 2026-10-24.

Прочитать порядок обновления в инструкции по установке ↓

Характеристики

Безопасность и публикация

Уровни установки

Статус показывает, насколько опубликованный рецепт покрывает требования каждого уровня.

Готово

Для дома

Минимальная конфигурация для локальной сети или доступа через VPN.

  • Один сервер
  • Локальный доступ
  • Минимум компонентов

Рецепт закрывает все требования этого уровня.

Готово

Для VPS

Публичная установка с защищённым доступом и резервными копиями.

  • Домен
  • HTTPS через reverse proxy
  • Backup вне сервера

Рецепт закрывает все требования этого уровня.

Не поддерживается

Надёжная

Конфигурация для предсказуемой эксплуатации и наблюдаемости.

  • Отдельная БД
  • Healthcheck
  • Внешний мониторинг
  • Лимиты CPU и памяти

Нужно добавить вручную: отдельная бд, внешний мониторинг, лимиты cpu и памяти.

Собрать под свой сервер

Генератор конфигурации

Ответьте на пять вопросов и скачайте готовый комплект Homepage.

Работает локально
01 Есть домен?
02 Какой reverse proxy?
03 Архитектура сервера
04 Где хранить данные?

Укажите абсолютный путь для отдельного диска, например /srv/homepage.

05 Требуется VPN-доступ?

Комплект готов к сборке

Архив создаётся в браузере. Ответы никуда не отправляются.

Те же файлы одним shell-скриптом, обычными heredoc, чтобы всё читалось до запуска. Скрипт проверяет Docker, архитектуру, память, диск и нужные порты и без --apply ничего не пишет.

Скриншоты

Быстрый запуск

Сначала прочитайте полную инструкцию: в ней описаны доступ извне, backup и расположение данных.

Подготовить настройкиcp .env.example .env
Запуститьdocker compose up -d
Проверить состояниеdocker compose ps

Пошаговая инструкция

Ubuntu и Debian

Подойдут Ubuntu 24.04 LTS или Debian 12/13, Docker Engine и Docker Compose >=2.24.0. Установите Docker из официального репозитория вместе с Compose plugin. Скачайте рецепт целиком, включая config/.

cp .env.example .env
chmod 600 .env
openssl rand -hex 24
openssl rand -hex 32

Первое случайное значение впишите в HOMEPAGE_AUTH_PASSWORD, второе — в HOMEPAGE_AUTH_SECRET. Замените значения CHANGE_ME; пустые значения недопустимы. Укажите URL и разрешённые Host, затем запустите:

docker compose config --quiet
docker compose pull
docker compose up -d --wait
docker compose ps

Откройте http://localhost:3000, введите пароль и настройте YAML в config/. Инициализатор меняет владельца на UID/GID 1000; при необходимости редактируйте через sudo. После изменений перезапускайте homepage. Все вошедшие посетители видят общую конфигурацию.

VPS

Нужны домен, HTTPS, firewall и зашифрованные внешние backup. Оставьте порт 3000 на loopback, наружу выставляйте только прокси. Закройте вход VPN/списком IP либо настройте ограничение попыток на внешнем прокси: встроенного лимита нет. Пример Nginx включает ограничение; для Caddy и Traefik его нужно организовать отдельно.

Доверенная LAN или VPN

По умолчанию доступ только через loopback. Предпочтительны SSH-туннель (ssh -L 3000:127.0.0.1:3000 user@server) или VPN/прокси. Для прямой LAN явно поменяйте опубликованный адрес Compose и ограничьте доступ firewall. В HOMEPAGE_EXTERNAL_URL укажите точный адрес браузера, в HOMEPAGE_ALLOWED_HOSTS — его host:port. Не используйте *.

Домен и HTTPS

Для https://home.example.com задайте HOMEPAGE_EXTERNAL_URL=https://home.example.com и HOMEPAGE_ALLOWED_HOSTS=home.example.com, затем пересоздайте сервис. URL определяет защищённые cookies сессии и должен совпадать с реальным адресом браузера.

Caddy

Подключите proxy/Caddyfile на хосте после настройки DNS. Caddy получает TLS автоматически. Добавьте VPN/ограничение IP или отдельно настроенный лимит попыток входа.

Nginx

Используйте proxy/nginx.conf, предварительно получите сертификаты и проверьте sudo nginx -t. limit_req_zone располагается в контексте http. Обработчик пароля ограничен пятью запросами в минуту с burst пять; подберите значения для своих пользователей и наблюдения.

Traefik

Загрузите proxy/traefik.yaml через file provider с entry point websecure и resolver letsencrypt. Пример предполагает Traefik на хосте; контейнер не видит loopback хоста без подходящей сети. Добавьте VPN/ограничение IP либо защиту входа на внешнем прокси.

Данные и окружение

HOMEPAGE_CONFIG_DIR (по умолчанию ./config) подключён к /app/config: настройки, сервисы, закладки, виджеты, custom-файлы и логи. При переносе рецепта используйте абсолютный путь и не делите его с другим приложением. Базы данных нет. Сохраняйте пользовательские иконки внутри этого каталога, если они нужны конфигурации.

Все параметры .env.example:

Переменная Значение
HOMEPAGE_VERSION Фиксированный тег образа, исходно v2.7.0
HOMEPAGE_PORT HTTP-порт loopback хоста, исходно 3000
HOMEPAGE_CONFIG_DIR Каталог конфигурации; инициализатор задаёт владельца 1000:1000
HOMEPAGE_ALLOWED_HOSTS Точные Host через запятую, с нестандартными портами
HOMEPAGE_EXTERNAL_URL Адрес браузера со схемой и при необходимости портом
HOMEPAGE_AUTH_PASSWORD Обязательный сложный общий пароль панели
HOMEPAGE_AUTH_SECRET Обязательный случайный секрет сессий от 32 символов
TZ Часовой пояс, исходно Etc/UTC
HOMEPAGE_BACKUP_DIR Необязательная закрытая папка для backup.sh

Для смены пароля или секрета поправьте .env и пересоздайте сервис. Не помещайте секреты в custom CSS/JavaScript и статику: они публичны. Ключам виджетов выдавайте минимум прав. Docker/Kubernetes discovery и OIDC в рецепте не включены.

Резервная копия

bash backup.sh

Скрипт останавливает запись, сохраняет весь каталог конфигурации, .env и Compose, затем возвращает прежнее состояние запуска. Права архивов — 600. Копируйте их за пределы сервера и шифруйте: внутри могут быть API-ключи и секреты входа. Временный кеш образа и local storage браузера не входят в backup. Внешние пользовательские ресурсы вне config сохраняйте отдельно.

Восстановление

Восстановление заменяет всю конфигурацию. Используйте только собственный доверенный архив. Один раз запустите рецепт для создания контейнера и mount, вручную сравните архивную configuration.env с текущей .env и согласуйте версию. Архивное окружение не исполняется и не активируется автоматически.

bash restore.sh /safe/path/homepage-backup.tar

Скрипт проверяет обязательные файлы до остановки, делает страховочный backup, заменяет каталог конфигурации и ждёт health. При ошибке распаковки сервис остаётся остановлен. Войдите и проверьте ссылки и закладки. Возврат старого секрета может снова разрешить ещё действующие старые cookies; при необходимости смените секрет.

Обновление

Прочтите release notes, сделайте backup, установите новый явный HOMEPAGE_VERSION и выполните docker compose pull && docker compose up -d --wait. Не используйте latest. Проверьте вход и каждую интеграцию. Для текущего рецепта это замена образа на месте; перед будущими major-релизами изучайте отдельные инструкции.

Откат

Остановите homepage, верните прежний фиксированный тег в .env, скачайте и один раз запустите его, затем восстановите соответствующий архив до обновления через restore.sh. Сверьте окружение и проверьте вход/виджеты. Миграций БД в рецепте нет, но новые параметры YAML могут не поддерживаться старым образом: возвращайте соответствующую конфигурацию.

Остановка и удаление

docker compose down удаляет контейнеры и сети, сохраняя bind-каталог. Для полного удаления сначала выгрузите backup, выполните docker compose down --volumes и отдельно удалите только выбранный HOMEPAGE_CONFIG_DIR и закрытую .env, проверив абсолютные пути. Это уничтожит настройки и ключи внутри. DNS, прокси и ненужные backup удаляются отдельно.

Официальное руководство по доступу описывает пароль/OIDC, публичную статику, проверку Host и отсутствие встроенного лимита входа.

Сообщить о проблеме с рецептом

Рассказать, как прошло на вашем сервере

Откроется предзаполненный issue на GitHub. Нужен аккаунт GitHub; после отправки сообщение будет публичным.

Диагностика

Диагностика

docker compose ps
docker compose logs --tail=100 homepage
docker compose config --quiet
curl -fsS http://127.0.0.1:3000/api/healthcheck

Host validation failed: разрешите точный адрес браузера с портом в HOMEPAGE_ALLOWED_HOSTS. Не ставьте wildcard. Health с внутренним Host 127.0.0.1:3000 не доказывает доступность внешнего адреса.

Вход зацикливается или cookie не сохраняется: HOMEPAGE_EXTERNAL_URL должен совпадать со схемой и адресом браузера. Для HTTPS cookie защищённая и не работает через HTTP. После изменения .env пересоздайте контейнер.

Ошибка YAML или нет ссылок: проверяйте отступы в settings/services/bookmarks/widgets. Закладки содержат дополнительный список с href, сервисы — объект. Перезапустите приложение. Неверная конфигурация может сломать панель даже при успешном health.

Permission denied: каталог config и logs должны быть доступны UID/GID 1000. Инициализатор меняет владельца рекурсивно; не указывайте системную или чужую папку. При NFS/root-squash настройте права на стороне хранилища.

Виджет не работает: URL должен быть доступен из контейнера; localhost указывает на сам Homepage. Проверьте минимальные права токена. Рецепт не подключает Docker socket и Kubernetes и не устанавливает связанные приложения.

Слишком много попыток входа: ограничивайте обработчик пароля на прокси или используйте VPN/IP. В логах есть Failed password sign-in attempt; не публикуйте дампы конфигурации с секретами.

Backup/restore: запускайте из полного рецепта с его .env; для другого env используйте FOSSARY_ENV_FILE. Архив сохраняет секреты. При неудачной распаковке сервис остаётся остановлен: проверьте логи, свободное место, права и страховочный архив перед повтором. На чистой машине сначала запустите рецепт один раз.

Официальные источники

Последний релиз: 2026-10-23 · GitHub Stars: 33 326 · данные проверены 24 окт. 2026 г., 09:00 UTC

Отказ от ответственности

Fossary — независимый информационный каталог, не связанный с разработчиками представленных приложений. Мы собираем сведения из открытых источников и проверяем опубликованные рецепты, но не разрабатываем, не распространяем и не контролируем эти приложения.

Публикация карточки или статус проверки не являются требованием, навязыванием либо персональной рекомендацией использовать приложение. Вы самостоятельно решаете, подходит ли оно вам, и используете его на свой риск. Мы не гарантируем безопасность, доступность или пригодность приложения и, в пределах, допускаемых законом, не отвечаем за вызванные им потери или ущерб. До установки проверьте лицензию, настройки безопасности, обработку данных и резервное копирование.