44

Добавим HTTPS (SSL) в Home Assistant - установим Let's Encrypt и Duck DNS в Docker, настроим веб-сервер Nginx

Привет Пикабу!

В этом посте расскажу как добавить HTTPS (SSL) в Home Assistant.

А для этого установим Let's Encrypt и Duck DNS в Docker, настроим веб-сервер Nginx.

Здесь была "подготовительная часть" - "Установка Docker, Docker Compose и Portainer"

Вы это легко можете сделать с помощью аддонов, если у вас версия Home Assistant Supervised или Home Assistant OS:

Мы же рассмотрим универсальную инструкцию (не зависящую от версии Home Assistant) с установкой Let's Encrypt Duck DNS и Nginx в в Docker, которая одинаково подходит для обоих вариантов, рассмотренных мной ранее: -  Home Assistant Supervised и Home Assistant Core.

Рассматриваемый вариант вполне подходит для  Ubuntu 20.04 / Debian 10 / Kali Linux ... (Сервер, Десктоп, VPS Oracle ...)

Первым делом создадим домен на duckdns.org  - привяжем IP адрес реальной или виртуальной машины, где расположен наш  Home Assistant к имени DNS вида вашдомен.duckdns.org


DNS (Domain Name System) - система доменных имен, смысл которой в том, что каждому цифровому IP-адресу присваивается понятное буквенное имя (домен). Когда вы вводите в браузере доменное имя, сервера DNS преобразуют его в IP-адрес. Например, вашдомен.duckdns.org будет соответствовать IP-адресу  вашего сервера.

Далее будем использовать docker-compose для создания и запуска своих образов и контейнеров, а именно Let's Encrypt и Duck DNS. Вот содержание docker-compose.yml для этого:

version: '3.3'

services:


duckdns:

image: ghcr.io/linuxserver/duckdns
container_name: duckdns
environment:
- PUID=1000 #optional
- PGID=1000 #optional
- TZ=Europe/Samara
- SUBDOMAINS=вашдомен.duckdns.org
- TOKEN=89eJKhnby678nknt6NGHfghffe823

- LOG_FILE=false #optional
volumes:
- ./config:/config #optional
restart: unless-stopped
letsencrypt:
image: linuxserver/swag
container_name: letsencrypt
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Samara
- URL=вашдомен.duckdns.org

- VALIDATION=http
- EMAIL=mail@mail.ru #optional
- EXTRA_DOMAINS=вашдомен.duckdns.org

volumes:
- ./config:/config
ports:
- 443:443
- 80:80 #optional
restart: unless-stopped
ВАЖНО СОБЛЮДАТЬ ТАБУЛЯЦИЮ (ОТСТУПЫ)!!! При копировании текста в ваш docker-compose.yml с Пикабу отступов не будет - поставьте по 2 и 4 пробела в файле вручную (как на фото ниже).

TOKEN, DOMAIN (duckdns) .... - выделенные жирным, укажите естественно свои!


Итак, создаём файл docker-compose.yml в удобном для вас месте и удобным для вас способом. Я покажу пример для  Ubuntu 20.04 на VPS Oracle, где у  меня стоит тестовая Home Аssistant Supervised (конечно же это полная аналогия и для других вариантов).


Создам его по пути /home/ubuntu


# echo "version: '3.3'

services:" >/home/ubuntu/docker-compose.yml


Вы можете командой echo сразу отправить весь текст (содержание файла выше), либо открыть файл после создания командой nano, вставить содержимое:


# sudo nano /home/ubuntu/docker-compose.yml

Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.


Либо, всё то же самое можно сделать через WinSCP

Для создания и редактирования таких файлов рекомендую использовать Notepad++ вместо "блокнота":

После создания и сохранения файла, переходим в терминале в папку, где у нас лежит docker-compose.yml командой # cd (в Ubuntu 20.04 на VPS Oracle мы по умолчанию находимся в ней) и запускаем контейнеры:


#  docker-compose up -d


Если будет ошибка: "docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))", то возможно вы просто забыли добавить "своего пользователя" в группу докеров на этом этапе.
# sudo usermod -aG docker $USER
# newgrp docker
Если вы ставили Ubuntu 20.04 на бесплатный VPS сервер от Oracle, то необходимо открыть порт 80 и 443 в Oracle. Как это сделать написано в конце этого поста.
Для "домашней" Ubuntu  или Debian на сервере или десктопе тоже нужно открыть порты 80 и 443 для Let's Encrypt, пробросив их на вашу машину в роутере (см. инструкцию к нему)

Проверяем в Portainer, что контейнеры Let's Encrypt и Duck DNS успешно запустились:

Осталось настроить Nginx.

Сейчас ваш Home Assistant всё ещё открывается по адресу HTTP://вашдомен.duckdns.org:8123 нам же нужен HTTPS (HTTPS://вашдомен.duckdns.org) :-)))


Открываем (для редактирования, удобным вам способом)  файл с настройками Nginx - default.

(В папке, где у вас был файл docker-compose.yml - появилась папка config)

В моём примере файл default расположен по пути /home/ubuntu/config/nginx/site-confs

# sudo nano /home/ubuntu/config/nginx/site-confs/default


ALT+T - очищаем всё его содержимое файла default, и вставляем следующее:


server {
listen 443 ssl;
listen [::]:443 ssl;
server_name вашдомен.duckdns.org;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
proxy_pass http://10.0.0.42:8123;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api/websocket {
proxy_pass http://10.0.0.42:8123/api/websocket;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.


СОБЛЮДАЕМ ТАБУЛЯЦИЮ (ОТСТУПЫ)! При копировании в ваш файл default с Пикабу их не будет - поставьте пробелы в файле вручную (как на фото ниже).

вашдомен.duckdns.org и http://10.0.0.2:8123 .... - выделенные жирным, укажите естественно свои!

В строке proxy_pass - указываете локальный адрес вашей машины или в случае с VPS Oracle - "Private IP Address":

Заходим в Portainer и перезапускаем контейнер letsencrypt:

Теперь заходим по адресу HTTPS://yourdomain.duckdns.org и входим в Home Assistant со своими учётными данными:

В С Ё!!! Цель достигнута ;-)


Теперь вы имеете не только удалённый доступ к своему Home Assistant через "шифрованные транспортные механизмы SSL", но и можете настроить, например  управление колонками с Алисой из Home Assistant... и/или  добавить ваши умные устройства из Home Assistant в умный дом Яндекса и управлять ими с любого устройства с Алисой, в том числе с колонок....


Всем пока и "Бобра"! ;-)

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества