Установка
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 bashWindows с Docker Desktop, в PowerShell от администратора:
irm https://<адрес дома>/v1/install-invites/<токен>/install.ps1 | iexУстановщик:
- проверяет Docker и Compose (нужен 2.24 или новее);
- узнаёт адрес сервера в домашней сети, часовой пояс и стик Zigbee;
- скачивает с homer.varyen.net подписанный архив образов текущей версии (около 310 МБ), сверяет sha256 и загружает образы в Docker; раскладывает папку дома (
/opt/homer, на Windows%USERPROFILE%\homer): compose,.env, конфиги Mosquitto с паролем, Zigbee2MQTT и Home Assistant; - поднимает дом. Сервер Хомера сам проходит первый запуск Home Assistant, берёт себе токен и подключает MQTT;
- печатает 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, исходники сайдкара и веб-версии.
| Служба | Контейнер | Порт | Что делает |
|---|---|---|---|
mosquitto | mosquitto | 1883 | MQTT-брокер для Zigbee2MQTT и устройств по Wi-Fi |
zigbee2mqtt | zigbee2mqtt | 8080 | Мост Zigbee: стик ↔ MQTT. На 8080 его веб-интерфейс |
homeassistant | homeassistant | 8123 | Home Assistant |
sidecar | homer-sidecar | 8730, 8731 | Сайдкар: дом, файлы, доступы, журнал, тревоги |
app | homer-app | 8740, 8741 | Веб-версия Homer |
gate | homer-gate | 8124 | Развилка внешнего входа: один домен на дом, сайдкар, веб и хаб |
go2rtc | homer-go2rtc | — | Видео с камер. Отдаёт его только через сайдкар |
updater | homer-updater | — | Обновляет Home Assistant по заявке сайдкара, см. Обновления |
hub | homer-hub | — | Хаб удалённой поддержки, нужен только интегратору. См. Поддержка |
web | homer-web | 8081 | Простая веб-страница поверх 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. Если оба адреса отвечают одинаково, входы перепутаны, и узнать об этом лучше в день установки.
Два входа
У сайдкара и веб-версии по два входа: домашний и внешний. По тому, каким входом пришёл запрос, сайдкар решает, можно ли управлять домом. Доступ без права «Можно снаружи» управляет только из дома.
| Вход | Сайдкар | Веб-версия | Кто достаёт |
|---|---|---|---|
| Домашний | 8730 | 8740 | Вся домашняя сеть |
| Внешний | 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 спросит разрешение ставить приложения из этого источника. Что с обновлением, видно по версии в заголовке настроек; нажатие на неё проверяет сразу.
Вход в дом
Первое открытие приложения — мастер первого запуска, а не адрес и токен.
- Владелец. На первом устройстве выберите в мастере У меня приглашение и снимите QR, который напечатал установщик. Снимать нечем — наберите код с экрана установщика руками и укажите адрес сервера Хомера (
http://<адрес>:8730). Устройство становится владельцем. Ключ владельца, который напечатал установщик, перепишите на бумагу: им входят в веб-версию и возвращают дом, если приложение снесли. Если стек собран руками, без установщика, путь через админство Home Assistant описан в Владельце. - Остальные устройства входят по приглашению: владелец показывает QR-код, устройство его снимает. Телевизор набирает код руками. Нескольких сразу зовут открытой ссылкой. Подробнее — Приглашение.
- Браузер входит по ссылке приглашения или ключом владельца на странице входа веб-версии.
Дальше расставьте устройства на плане: Настройки → Устройства → Устройства на плане.
Локальный адрес надёжнее
Приложение живёт в той же сети, что и дом. С домашним адресом свет переключается даже без интернета.
Дальше
Первое открытие приложения или веб-версии — мастер первого запуска: шаблон квартиры, подключение и первая лампа.