Блог

Простой внешний доступ в Hass.io

Очередная инструкция как настроить внешний HTTPS доступ в Hass.io.

У вас должен быть статический или динамический "белый" IP-адрес.

Статью для "серого" IP-адреса я когда-нибудь напишу...

1. Заводим своему дому имя*

Если ваш роутер (mikrotik, keenetic, d-link, asus) или NAS (synology) уже поддерживают свои собственные DDNS - можете завести доменное имя там.

Если не поддерживают, регистрируемся тут: https://www.duckdns.org/

2. Пробрасываем порты на роутере

В настройках роутера пробрасываем порты 80 и 443 на локальный IP-адрес вашего Hass.io (на порты 80 и 443 соответственно). Как это делать читайте в инструкциях к своему роутеру.

Обязательно нужны оба порта и именно эти.

3. Устанавливаем аддон

Добавляем новый репозиторий аддонов Hass.IO:

https://github.com/bestlibre/hassio-addons

И устанавливаем аддон:

Caddy Proxy

4. Настраиваем и запускаем аддон

Serving HTTPS on port 443 https://myhome.duckdns.org Serving HTTP on port 80 http://myhome.duckdns.org

5. Пользуемся

Да, это действительно всё. Уже можно пользоваться. Ваш дом уже доступен по адресу:

https://myhome.duckdns.org/

Никаких портов в адресе указывать не нужно.

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

Ваш Home Assistant уже готов к подключению к Яндекс Алисе или Google Ассистенту.

http://myhome.duckdns.org/ автоматически будет перенаправлять на https-версию.

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

Вы можете не знать слова HTTP2, GZIP, SSL, но это всё уже у вас есть, настроено правильно и работает.

Секция http в файле configuration.yaml вообще не нужна! Можете полностью её закоментировать.

Вы всё ещё можете отрыть свой HA по локальному IP-адресу:

http://192.168.1.123:8123/ тут указание любимого порта 8123 обязательно, протокол обязательно http.

PS

1. Рекомендую включить 2х факторную авторизацию. Это делается в профиле пользователя в HA. Ключи может генерировать мобильное приложение Google Authenticator.

2. На некоторых роутерах HA не откроется в локальной сети по доменному имени. Можете погуглить Hairpin NAT для своего роутера. Лично я прописал статический DNS адрес на роутере, где привязал публичное доменное имя к локальному IP-адресу. Но не все роутеры так умеют.

3. Редким компонентам всё же нужно знать публичное доменное имя HA, например сервису cast.show_lovelace_view компонента cast. Тогда можете вернуть секцию http c base_url: https://myhome.duckdns.org/

4. Если вы выбрали DDNS от duckdns.org и у вас динамический IP-адрес - к сожалению эта версия аддона не поддерживает обновление адреса при его смене. В этом случае вы можете установить второй аддон - Duck DNS и использовать его только для обновления IP-адреса. При этом отключить в нём обновление сертификата с помощью accept_terms: false


А что делать когда 80 порт занят?) 

Страдать :)

Есть способы получить сертификат без 80 порта, но я ими не владею.

Для официального аддона https://github.com/home-assistant/hassio-addons/blob/master/duckdns/README.md">DuckDNS не требуется открытие портов, т.к. верификация проводится другим способом (DNS-01 challenge), иначе это было бы проблемой при домашнем использовании.

Caddy такое тоже поддерживает. Но версия из этого аддона, к сожалению, нет.

Документация подсказывает, что хватит одного любого из этих портов. Но рекомендуют всё же оба
https://caddyserver.com/v1/docs/automatic-https#faq">https://caddyserver.com/v1/docs/automatic-https#faq
Я не экспериментировал.

Хватило одного 443

Супер! 80й порт нужен только для автоматического перенаправления на 443. Трафик по нему не ходит.

Очень хочется узнать, как с "серым" ip адресом подключить!

Через облако

Keendns не получается никак настроить. Он свой сертификат подставляет.

роутер какой?

Keenetic giga kn-1010

Все прекрасно работает через облако Keendns. Билайн, серый ip. Гугл ассистент и алиса работают.   

А какой у вас домен? У меня пока работает на
mykeenetic.ru, но его собираются отключить. А на
доменах с автоматической защитой SSL-сертификатами

у меня не работает.

keenetic.pro с SSL нормально работает. Минус - ХА и роутер доступны по адресу из инета.  

В итоге написал в поддержку Keenetic и вот их ответ:
Для
чтобы отключить SSL-сервера и тем самым освободить работу TCP\443,
потребуется поочередно ввести команды в CLI:

no ip http ssl enable
no ip http ssl redirect
ip http security-level public
system configuration save




У меня заработало.

Здравствуйте, вы еще используете способы с  keenetic? не могли бы помочь в некоторых настройках?

Здравствуйте, вы еще используете способы с  keenetic? не могли бы помочь в некоторых настройках?

Если на эту статью кто-то набредет в 2021, то у Keenetic сейчас не только облако, но и реверс прокси походу (лишь предполагаю).
В настройках есть возможность указать поддомен, веб-сервис homeassistant и порт на котором он работает (8123).

При любых запросах извне по http Keenetic редиректит на свой https со своим сертификатом, а уже оттуда тихонечко на http HA.
Т.е. на самом HA https можно не поднимать, Caddy не ставить


OpenVPN-VDS+
Nginx

-домен.
У меня только этот способ получился. Так как провайдер дает серый ip, приобрести белый у мобильных операторов не реально на физ лицо.

Пользовался KeenDNS , но постоянно переподключается, править конфиги не получается.

А можно поподробнее, а желательно подробную статью))

Подойдет ли этот способ для использования Яндекс Алисы в home assistant?

Удалось подключиться с серым ip?

А не проще просто взять статический IP у провайдера?

```Статью для "серого" IP-адреса я когда-нибудь напишу...``` Очень Актуально!!! Жду...

Там сложнее. Нужно обязательно арендовать VDS/VPS сервер.

для мобильных роутеров это единственный вариант?

Вот такой вот вариант есть https://sprut.ai/client/blog/2487">https://sprut.ai/client/blog/2487

Супер просто! Спасибо все работает!

Добрый день. Все сделал по инструкции шаг за шагом, но https нет доступа, в чем может быть проблема?

Только что установил чистый (не докер) Caddy для докер контейнера ХА, без всяких аддонов и хассио.

Если делать первый раз, то густой лес.  Половину дня убил на штудирование инета по данной теме. Но результат радует. А эпопея началась с того, что у меня при включении в конфиг файл ХА секции http с сертами, отваливалось TTS у колонок гугл хом мини. Caddy рекомендую!

Сделал, вроде все норм, и по https могу зайти, но при объединении аккаунтов яндекс станции и предварительно созданного HA - яндекс ругается на то, что "сайт не может обеспечить безопасное соединение"

Столкнулся с аналогичной проблемой. Вам удалось её решить?

Сделал всё как в статье, но доступа в локальной сети по wifi нет, со всех устройств через оф. приложение. С браузера доступ есть. Предполагаю что всему виной двухфакторная аутентификация. Есть у кого идеи как решить проблему?

А так статья огонь, получилось всё без проблем с первого раза!

После того как по непонятным мне причинам аддон DuckDNS перестал видеться снаружи, хотя в логах все ок, перешел на Keenetic.


В Keenetic очень просто все, никаких портов не открывал, только назначил домен на адрес ХА:8123 и все ок работает, Или что тут не так?

Ох, сколько народа сидит без публичного IP у провайдеров ... 10.ххх

Роутер микротик, включил ddns, открыл 8123, 80 и 443 порт.

Установил caddy proxy, настроил, запустил. В логах ошибка:

failed to obtain certificate: acme: error: 429 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/, url: 

Кто-нибудь сталкивался?

При попытке открыть по https - получаю ошибку 

403: Forbidden

Обновил HA на 

core-2021.7.0 и теперь не зайти по доменному имени, пишет 400: Bad Request. Как то можно исправить?

В чате подсказали, что помогает:

http: 
use_x_forwarded_for: true
trusted_proxies:
- 172.30.33.0/24

Для тех кто не понял, что с этим делать - вставляем эти строки в файл конфигурации yaml :)

Все отлично, настроил через облачный сервис keenetic.

Вернуться назад
Вернуться назад