- Работа
- Home Assistant
- Home Assistant и доступ извне.
Home Assistant и доступ извне.
Расскажу в кратце.
Для того что бы иметь доступ к нашему умному дому за пределами самого дома нужно как то организовать доступ. Есть несколько решений.
- Облако от HA, решение платное от самих разработчиков, если у вас есть 5$ в месяц, то это и вам проще и поддержите ребят, кто это все дело разрабатывает, что очень хорошо. Но такой способ мне лично дороговат, к тому же я могу сделать по другому.
- Постоянный внешний IP адрес. Платить за него тоже придется, может и не меньше чем ребятам из HA. Но он часто недоступен, особенно у мобильных операторов связи.
- Создание туннеля с вашим VPS сервером и уже через него осуществить доступ. Да конечно VPS штука тоже платная и надо еще раз взвесить, что будет дешевле и проще, платить 5$ или содержать облачную виртуалку. Опять же про себя, у меня этих виртуалок вагон и я просто прицепляюсь к одной из них и никаких доп плат нет.
- Способ когда IP адрес меняется, но все же хоть он и меняется он жестко фиксируется за вами на момент сесси, много на каких провайдерах именно так сделано. Тут нужно просто воспользоваться одним из сервисов динамических DNS и входить по доменному имени. Кстати много производителей роутеров имеют свои собственные сервисы динамических DNS.
И так поехали.
Для способов 2 и 4 мы делаем проброс портов 80 и 443 на своем роутере на сервак с HA.
Для способа 3 нам нужно поднять туннель между HA и VPS. Самый классный способ как по мне это WireGuard. На debian 11 ставится без всяких заморочек и входит в состав дистрибутива. Конкретно описывать не буду, есть куча мануалов в сети как настроить. А установка и пример конфига есть тут https://github.com/vkiranananda/ha-ansible/blob/main/playbooks/roles/wireguard/tasks/main.yml .
Если у вас VPS не KVM, а просто локальная виртуализация (часто дешевле), то WireGuard не встанет, тогда используйте OpenVPN, он чуть сложнее в настройке.
Теперь общие настройки.
Поднимаем nginx для способов 2 и 4 на HA для способа 3 на VPS.
Тут все просто, пишу по памяти.
apt-get install nginx
Конфиг
server {
server_name my-ha.ru;
listen 80;
location / {
proxy_pass http://192.168.1.1:8123;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
192.168.1.1 адрес HA, для локальной установки подойдет 127.0.0.1.
my-ha.ru ваше DNS имя.
Для того что бы HA не ругался пишем в configuration.yaml
http:
use_x_forwarded_for: true
trusted_proxies: 192.168.1.2
где 192.168.1.2 это адрес nginx, если локально, то 127.0.0.1.
Проверяем по 80 порту, если все работает едем дальше.
Далее нам нужны сертификаты. Будем использовать certbot. Инструкция тут https://certbot.eff.org/instructions?ws=nginx&os=debianbuster .
Он же и донастроит нам nginx как нужно :). Так же он предложит сделать редирект с 80 порта, соглашаемся, что бы обезопасить себя от своих же кривых ручек :).
Все готово. Но напоследок расскажу очень классную вещь. HA очень удобно управлять с мобилки, особенно вне дома. Но согласитесь сидя дома, глупо гонять трафик через удаленный VPS и вот за это еще одно огромное спасибо разработчикам. На мобильном приложении они сделали два адреса, один внешний, а другой внутренний и там же можно указать wifi ssid для того что бы он понимал где вы находитесь :) .
Удачи :).
[ Править ]