Skip to content

Установка ​

Homer ставится в три шага: стек дома на сервер, приложение на устройства, вход в дом. Установщики публично не выкладываются: всё нужное для первых двух шагов лежит на странице ссылки на установку.

По приглашению ​

Ссылку на установку даёт тот, у кого Homer уже стоит: владелец выдаёт её в веб-версии, Доступы → Ссылка на установку, см. Доступ и приглашения. Нет знакомых с Homer — заявка на сайте homer.varyen.net, ссылку выдаст автор. Ссылка открывает страницу «Установка Homer», а на ней:

  • Сервер дома — команда установки для Linux или Windows, ниже;
  • Приложение Homer для Android — кнопка Скачать APK;
  • Homer Node — кнопка Скачать Homer Node, установщик для Windows. См. Homer Node.

Команда для сервера, где <адрес дома> — адрес дома, выдавшего ссылку, а <токен> — её токен; на странице ссылки она уже заполнена.

Linux (мини-ПК, неттоп, Raspberry Pi 4/5 на 64-битной системе), нужен Docker:

curl -fsSL https://<адрес дома>/v1/install-invites/<токен>/install.sh | sudo bash

Windows с Docker Desktop, в PowerShell от администратора:

irm https://<адрес дома>/v1/install-invites/<токен>/install.ps1 | iex

Установщик:

  1. проверяет Docker и Compose (нужен 2.24 или новее);
  2. узнаёт адрес сервера в домашней сети, часовой пояс и стик Zigbee;
  3. скачивает с homer.varyen.net подписанный архив образов текущей версии (около 310 МБ), сверяет sha256 и загружает образы в Docker; раскладывает папку дома (/opt/homer, на Windows %USERPROFILE%\homer): compose, .env, конфиги Mosquitto с паролем, Zigbee2MQTT и Home Assistant;
  4. поднимает дом. Сервер Хомера сам проходит первый запуск Home Assistant, берёт себе токен и подключает MQTT;
  5. печатает QR. Приложение снимает его в мастере, на шаге «У меня приглашение», и становится владельцем. Там же — код для ручного ввода и ключ владельца: перепишите его на бумагу.

Каждый запуск установки сервера считается установкой по ссылке и тратит её лимит; скачивание APK лимита не тратит. Закрытая, истёкшая или исчерпанная ссылка вместо команд показывает объяснение — попросите новую у того, кто её выдал.

Повторный запуск обновляет установку: общий compose и образы новые, данные и пароли прежние. Настройки — переменными: HOMER_DIR, HOMER_VERSION, HOMER_IP. Если у вас есть доступ к закрытому реестру образов, те же установщики работают и без приглашения: curl -fsSL https://homer.varyen.net/install.sh | sudo bash и irm https://homer.varyen.net/install.ps1 | iex.

Дальше дом обновляется сам: ночью в 4 часа сервер проверяет homer.varyen.net, сверяет подпись выпуска и ставит новую версию сервера Хомера, веб-версии и go2rtc; не поднялась за две минуты — возвращается прежняя. То же делается кнопкой, см. Обновление Хомера. Дом, где сервер собран из исходников, так не обновляется.

Что не включено сразу: камеры (docker compose --profile cameras up -d), удалённая поддержка (--profile support). На Windows стик Zigbee в контейнер не пробрасывается, а обновления HA ставятся повторным запуском установщика.

Логин Home Assistant, который завёл сервер, — homer, пароль лежит в томе сервера: docker exec homer-sidecar cat /data/setup/ha-admin.json.

Ниже — как устроен стек, если ставить или чинить руками.

Что понадобится ​

  • Ссылка на установку — от того, у кого Homer уже стоит, или от автора по заявке на homer.varyen.net.
  • Сервер дома, который не выключается: мини-ПК, неттоп, домашний сервер. Linux или Windows с WSL2, Docker с Compose.
  • USB-стик Zigbee, если в доме есть Zigbee-устройства. Ставьте его на удлинитель подальше от портов USB 3.0: они глушат эфир.
  • Устройства с Android 7 и новее: телефон, планшет, телевизор с Android TV, шлем Meta Quest.
  • По желанию — компьютер с Windows для колонки Хомера.

Стек дома ​

Всё серверное — один проект Docker Compose с именем homer. Файл — deploy/docker-compose.yml в репозитории. На сервере он лежит в папке проекта, рядом с данными служб: конфиг Home Assistant, данные Zigbee2MQTT и Mosquitto, исходники сайдкара и веб-версии.

СлужбаКонтейнерПортЧто делает
mosquittomosquitto1883MQTT-брокер для Zigbee2MQTT и устройств по Wi-Fi
zigbee2mqttzigbee2mqtt8080Мост Zigbee: стик ↔ MQTT. На 8080 его веб-интерфейс
homeassistanthomeassistant8123Home Assistant
sidecarhomer-sidecar8730, 8731Сайдкар: дом, файлы, доступы, журнал, тревоги
apphomer-app8740, 8741Веб-версия Homer
gatehomer-gate8124Развилка внешнего входа: один домен на дом, сайдкар, веб и хаб
go2rtchomer-go2rtc—Видео с камер. Отдаёт его только через сайдкар
updaterhomer-updater—Обновляет Home Assistant по заявке сайдкара, см. Обновления
hubhomer-hub—Хаб удалённой поддержки, нужен только интегратору. См. Поддержка
webhomer-web8081Простая веб-страница поверх Home Assistant, без сайдкара

Настройки конкретного дома — адреса сайдкара для устройств, навык Алисы, колонка, speaches, хаб поддержки, роутер — лежат в .env рядом с compose. Образец — deploy/.env.example; пустое значение выключает возможность.

Сайдкар и веб-версия собираются из исходников на самом сервере. Поднять всё:

docker compose up -d --build

Одну службу можно пересобрать, не трогая остальные: docker compose up -d --build sidecar.

Сайдкар и Home Assistant ​

Сайдкару нужен токен долгосрочного доступа Home Assistant — переменная HA_TOKEN в файле sidecar/.env на сервере. Создаётся он в Home Assistant: Профиль → Безопасность → Токены долгосрочного доступа → Создать токен.

Токен учётки дома

Берите токен той учётки, под которой живёт дом. Токен другой учётки даёт пустой дом без единой ошибки в логе.

Если токен отозвать в Home Assistant, сайдкар перестаёт видеть дом: план не читается, команды не проходят. Выпустите новый, замените его в sidecar/.env и пересоздайте контейнер: docker compose up -d --force-recreate sidecar.

Проверка ​

С устройства в домашней сети откройте http://<адрес сервера>:8730/v1/health. В ответе поле entry должно быть internal. Снаружи, через внешний адрес, — external. Если оба адреса отвечают одинаково, входы перепутаны, и узнать об этом лучше в день установки.

Два входа ​

У сайдкара и веб-версии по два входа: домашний и внешний. По тому, каким входом пришёл запрос, сайдкар решает, можно ли управлять домом. Доступ без права «Можно снаружи» управляет только из дома.

ВходСайдкарВеб-версияКто достаёт
Домашний87308740Вся домашняя сеть
Внешний8731, только 127.0.0.1 сервера8741Обратный прокси, проброс роутера

Внешний вход сайдкара намеренно опубликован только на 127.0.0.1 сервера. Опубликуете его в домашнюю сеть — различие «дома / снаружи» перестанет что-либо значить.

Внешний адрес ​

Снаружи дом открывается одним доменом. Роутер или обратный прокси терминирует TLS и отдаёт всё на homer-gate (порт 8124), а тот разводит по путям:

ПутьКуда
/v1/внешний вход сайдкара
/web/веб-версия
/hub/хаб поддержки
остальноеHome Assistant

Внешний адрес не обязателен. Без него дом доступен только из домашней сети, и это нормально.

Приложение ​

Одна сборка APK для телефона, планшета, телевизора и шлема.

  • Телефон и планшет — план в портрете, план с панелью комнаты в ландшафте.
  • Телевизор — управляется пультом. Приложение появляется в лаунчере Android TV. Холста сценариев на телевизоре нет, список сценариев с кнопками «включить» и «запустить» есть.
  • Meta Quest — прогулка по дому в шлеме, см. План и прогулка.

Первый раз APK скачивают со страницы ссылки на установку, кнопка Скачать APK: это та же сборка, которую сервер выдавшего ссылку дома раздаёт своим устройствам. Дальше приложение обновляется с сайдкара своего дома само: не чаще раза в три часа спрашивает версию, скачивает сборку и ставит её. При первом обновлении Android спросит разрешение ставить приложения из этого источника. Что с обновлением, видно по версии в заголовке настроек; нажатие на неё проверяет сразу.

Вход в дом ​

Первое открытие приложения — мастер первого запуска, а не адрес и токен.

  1. Владелец. На первом устройстве выберите в мастере У меня приглашение и снимите QR, который напечатал установщик. Снимать нечем — наберите код с экрана установщика руками и укажите адрес сервера Хомера (http://<адрес>:8730). Устройство становится владельцем. Ключ владельца, который напечатал установщик, перепишите на бумагу: им входят в веб-версию и возвращают дом, если приложение снесли. Если стек собран руками, без установщика, путь через админство Home Assistant описан в Владельце.
  2. Остальные устройства входят по приглашению: владелец показывает QR-код, устройство его снимает. Телевизор набирает код руками. Нескольких сразу зовут открытой ссылкой. Подробнее — Приглашение.
  3. Браузер входит по ссылке приглашения или ключом владельца на странице входа веб-версии.

Дальше расставьте устройства на плане: Настройки → Устройства → Устройства на плане.

Локальный адрес надёжнее

Приложение живёт в той же сети, что и дом. С домашним адресом свет переключается даже без интернета.

Дальше ​

Первое открытие приложения или веб-версии — мастер первого запуска: шаблон квартиры, подключение и первая лампа.