Оглавление
Cтатья 1 (установка)
Cтатья 2 (базовая настройка)
Cтатья 3 (добавляем устройства)
Cтатья 4 (интеграция с HomeKit)
Статья 5 (автоматизации)Статья 6 (GUI)Статья 7 (Z-Wave)Статья 8 (MQTT)Статья 9 (HTTPS, SSL)
Предисловие
Сейчас, когда наш умный дом достаточно разросся, пора задуматься о его безопасности и добавить шифрования нашим страничкам. Это особенно важно, если ваш Home Assistant (Далее HA) смотрит наружу вашей локальной сети. Так же данное действие позволит в будущем интегрировать HA как минимум в Google Home, используя API гугла, а не облако самого HA. Давайте разберемся более подробно.
Что необходимо для этого?
Во первых ваш HA должен быть в домене второго или третьего уровня, то есть иметь вид my-homeassistant.com или my-homeassistant.domain.com. А так же нам необходимо будет каким то образом получить подписаний сертификат, мы будем для этого использовать пакет certbot.
Что там с доменом?
Самый простой способ - воспользоваться ddns сервисом. Это будет возможно, если ваш провайдер использует статический и динамический IP адрес. Узнать данную информацию можно, позвонив вашему провайдеру. Вообще сервисов, предоставляющих услуги ddns великое множество, вы можете выбрать тот, который вас устроит:
Регистрируемся на выбранном сервисе, выбираем себе доменное имя, настраиваем сервис ddns на роутере и через пару минут пытаемся перейти по выбранному адресу в браузере. Если при переходе у вас открылась страничка настроек вашего роутера или веб морда HA (Зависит от ваших настроек), значит все настроено верно.
Let's encrypt!
Теперь нам необходимо поставить пакет для запроса и получения ssl сертификата. Подключаемся по ssh к малине, и вводим следующую команду:
sudo apt-get install certbot
при этом система предложит установить еще несколько пакетов, соглашаемся и ждем окончания процесса.
Получаем сертификат
Мы будем делать это используя временно поднятый веб сервер, который создает сам certbot. Для этого необходимо в настройках вашего роутера пробросить порт 80 извне сети на порт 80 вашей малинки. На кастомной прошивке у роутера Xiaomi это выглядит так:
Далее в ssh подключении на малине выполняем следующую команду:
sudo certbot certonly --standalone --email your_email@gmail.com -d your.domain.org
Не забудьте, что
- your_email@gmail.com - вместо этого необходимо написать свой действующий email
- your.domain.org - а тут должен быть написан ваш домен, который вы зарегистрировали у ddns сервиса
Если все сделано правильно, вывод команды будет примерно такой:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for your.domain.org Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations<span class="cm-variable-2"></span><span class="cm-variable-2"></span><span class="cm-variable-2"></span>! Your certificate and chain have been saved at: /etc/letsencrypt/live/your.domain.org/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your.domain.org/privkey.pem Your cert will expire on 2019-02-19. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If<span class="cm-variable-2"></span><span class="cm-variable-2"></span><span class="cm-variable-2"></span> you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Настраиваем Home Assistant
Теперь нам необходимо копировать полученные сертификаты в папку настроек HA. Делаем следующее:
cd /home/homeassistant/.homeassistant/ sudo cp /etc/letsencrypt/live/my.domain.org/fullchain.pem fullchain.pem sudo cp /etc/letsencrypt/live/my.domain.org/privkey.pem privkey.pem sudo chown -R homeassistant:homeassistant /home/homeassistant/.homeassistant/
Не забывайте менять my.domain.org на ваш домен. После открываем файл configuration.yaml вашего HA удобным для вас способом и в разделе http: прописываем следующее:
http: ssl_certificate: /home/homeassistant/.homeassistant/fullchain.pem ssl_key: /home/homeassistant/.homeassistant/privkey.pem
если у вас в этой секции прописаны какие-то настройки - внесите новые после существующих. Пример можно посмотреть в моем Github. Проверяем файл с настройками на правильность и сохраняем. Далее в настройках роутера необходимо добавить переадресацию для еще одного порта. В моем случае это выглядит так:
Теперь наконец можем перезагрузить наш сервис HA и попробовать перейти на его вебморду, используя свеженастроеный https используя адрес вида https://my.domain.org проверив тем самым, что все настроено правильно. Не забудьте поправить ссылку в приложении для iOS, если вы его используете.
P.S. Не забывайте, что сертификаты выдаются сроком на три месяца, и спустя этот срок, необходимо будет повторить действия из раздела "Получаем сертификат". На этом все!
Бро, а как на счет автоматизировать получение сертификата? А именно оставить 80ый порт и сделать скриптик, который будет кроном раз в три месяца запускаться и потом менять сертификаты в папке ХА?
для тех кто в будущем задаётся тем же вопросом:
certbot теперь по дефолту имеет установку крон-задач
Вот тут можно посмотреть актуальную инструкцию установки:
https://certbot.eff.org/lets-encrypt/debianbuster-nginx">https://certbot.eff.org/lets-e...
Tip: Для raspbian buster надо выбрать debian 10
правда в инструкции предлагается копировать ключи
я пробовал сделать вместо этого симлинки, но homeassistant не захотел их читать (((
так что придется таки добавить дополнительный крон скедул, который будет копировать ключи
например каждый день в 4 ночи:
sudo crontab -e
```
0 4 * * * cd /etc/letsencrypt/live/ВАШ_ДОМЕН/; cp fullchain.pem privkey.pem /usr/share/hassio/homeassistant/.ssl/
```
где ВАШ_ДОМЕН надо заменить
См так же объяснение cron-магии: https://crontab.guru/#0_4_*_*_*
После этих настроек попасть на вебморду по локальному адресу не получится?
получится конечно
Можно ли таким образом получить сертификат на доменное имя четвертого уровня? Объясняю ситуацию. Я использую сервис кинетика для получения доступа к домашнему роутеру по доменному адресу. По типу myrouter.keenetic.ru. Далее в роутере настроил доменное имя по типу mydom.myrouter.keenetic.ru. Можно ли аналогичной инструкцией получить ссл сертификат на доменное имя умного дома?
У keenetic есть статья как получить https://help.keenetic.com/hc/ru/articles/360002171260">сертификат на доменное имя 4-го уровня. Вот только, что делать дальше пока так и не понял. HA как не открывался по
https://mydom.myrouter.keenetic.ru так и не открывается. Может кто подскажет?
Не решилась проблема? на роутере получен сертификат для д.и. 4го уровня, при переходе по ссылке типа
https://mydom.myrouter.keenetic.ru">https://mydom.myrouter.keeneti... я попадаю на страницу авторизации ХА, но после логина я вижу
Unable to connect to Home Assistant.
Нет, не получилось решить. Те-же симптомы. На форуме
ХА, говорят, что проблема в настройках роутера, к которым нет доступа.
Проверено, работает на микротике так же 4ого уровня домен
Настроил SSL через Let's encrypt. Работает, по https доступ есть. Проблема в том, что теперь в программе Дом устройства не подключены. После отключения SSL в конфиге устройства в программе Дом появляются в сети. В аддоне homebridge до аддона homekit был параметр, отключающий использование SSL с
homebridge (
verify_ssl: false). Как можно отключить использование ssl для homekit?
Огонь!
Будет ли работать, если вместо основной SD используется SSD, подключенный также к USB? Как малина поймет, с какого USB загружаться?
Подскажите, есть возможность реализовать по вашей инструкции если роутер xiaomi на родной прошивке не дает пробросить 80 порт?
Добрый вечер! Подскажите, пта:
https://sprut.ai/static/media/cache/00/54/20/5/3674754/57293/1000x_image.jpg?1588616377" alt="1000x_image.jpg?1588616377" />HA на docker Synology. Synology через https.
Подскажите, пта, по настройке https:
1. Пробросил порт 8123 на роутере
https://sprut.ai/static/media/cache/00/54/20/5/3674754/57295/1000x_image.jpg?1588616431" alt="1000x_image.jpg?1588616431" />2. На Synology сделал обратный прокси
3. Файл конфигурации:
homeassistant:
auth_providers:
- type: homeassistant
- type: legacy_api_password
api_password: secret! my_api_password
…
http:
ssl_certificate: /config/chain.pem
ssl_key: /config/privkey.pem
base_url: https://xxx.xxx.com:8123/">https://XXX.XXX.com:8123/
Спасибо
Подскажите, нынче статья актуальна? Захожу по ssh на малину, ввожу sudo apt-get install certbot
в ответ получаю
sudo: apt-get: command not found
Какой дистрибутив? Что за железка?
можно выполнить uname -a (с пробелом)
Здравствуйте! При копировании полученных сертификатов в папку настроек HA получаю:
-bash: cd: /home/homeassistant/.homeassistant/: Нет такого файла или каталога.
Подскажите, пожалуйста, новичку в HA, что не так.
если у кого-то что-то подобное, то возможно поможет поменять путь на /usr/share/hassio/homeassistant/
либо сделайте
find / -name homeassistant -type d 2>/dev/null
чтобы найти путь если он у вас совсем другой
А директории .homeassistant внутри нет и не должно быть, в статье какая-то ошибка
Создайте сами. Только я бы назвал её иначе: .ssl
Итого:
mkdir /home/homeassistant/.ssl
или
mkdir /usr/share/hassio/homeassistant/.ssl
смотря где лежит HA
И на последнем шагу нужно будет уже этот новый путь прописать
Так же, если конфиг добавлен в гит (удобно чтобы сохранять и делиться конфигами), обязательно надо дописать .ssl в .gitignore, иначе при следующем коммите ключи попадут в публичный репозиторий
Здравствуйте, подскажите что я делаю не так?
запускаю:
sudo certbot certonly --standalone --email ХХХХХХ@gmail.com -d ХХХХХХ.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for XXXXXXXXX.com
Waiting for verification...
Challenge failed for domain ХХХХХХХ.com
http-01 challenge for ХХХХХХХ.com
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: ХХХХХХХХ.com
Type: dns
Detail: DNS problem: query timed out looking up A for
ХХХХХХХХХ.com
И вот не может пройти верификация как я понимаю?
к примеру если в браузере ввожу
ХХХХХХХХХ.com:80 - то попадаю в свой homeassistant
подскажите пожалуйста. если модем пишет что порт 80 занят маршрутизатором и перекидывает на порт 8080 , как это победить ? модем eltex ростелеком. сильно не пинайте , я только учусь ))
https://sprut.ai/static/media/cache/00/83/75/5/8396846/78113/1000x_image.jpg?1620739840" alt="1000x_image.jpg?1620739840" />