Home assistant

Домен и SSL Сертификат

• 20-05-2023 •

В этой теме мы рассмотрим, как включить Let’s Encrypt для бесплатных SSL-сертификатов и дать вам возможность использовать собственный домен. Большая часть настроек может быть выполнена человеком, не обладающим значительными техническими навыками.

Я также должен отметить, что хотя время «работы с клавиатурой», скорее всего, составит около двух часов максимум, общее количество времени, которое потребуется для настройки, составит 1-2 дня из-за того, как работает DNS, но об этом чуть позже.

Сервисы, которые мы будем использовать:

Beget: Регистрация домена
Cloudflare: Предоставляет бесплатные услуги разрешения DNS
Let’s Encrypt: Предоставляет бесплатные SSL-сертификаты.

Зарегистрируйте свой домен в первую очередь

Когда вы зарегистрируете свой домен, имя и конфигурация должны распространиться по корневым DNS-серверам по всему миру. В среднем это может занять 1-2 дня, но я рекомендую дать на это три дня.

Переходим на сайт Beget и проходим регистрацию. После регистрации вы попадаете в свой кабинет. Переходим в раздел Домены и поддомены и выбираем вкладку Регистрация Доменов

Beget - регистрация домена

Вам нужно ввести имя своего домена, нажать продолжить и завершить покупку.

Создайте учетную запись в Cloudflare

Интернету нужен способ преобразовать ваше новое доменное имя в IP-адрес. Cloudflare — очень авторитетная компания, которая существует уже много лет, она очень проста в использовании и не требуют кредитной карты.

Как только вы войдете в систему, перейдите в раздел Domain Registration с левой стороны. Вы можете увидеть уведомление о том, что вам необходимо подтвердить свою электронную почту. Убедитесь, что вы сделали это, прежде чем продолжить.

cloudflare-add-site

После проверки электронной почты нажмите на кнопку Add site в верхней части страницы. Введите только что созданный домен в подсказку и нажмите кнопку Add site. Помните: ваш домен может быть еще недоступен. Если вы получаете ошибку, это означает, что ваш домен еще не распространился в Cloudflare. Не волнуйтесь, на это просто нужно время.

Если Cloudflare сможет добавить ваш домен, перейдите к завершению регистрации, выбрав услугу Free, а затем нажмите Continue.

cloudflare-free-option

Назначьте Cloudflare своим DNS-провайдером

Cloudflare просканирует существующие записи для вашего домена. Поскольку их нет, вам будут представлены серверы имен Cloudflare, которые вы должны добавить на сайте Beget. Откройте новую вкладку и снова войдите в свой аккаунт Beget.

После входа в аккаунт Beget, выберите раздел «DNS». Выберите «Редактирование DNS-серверов» и введите имена серверов, которые отображаются для ваших записей DNS на сайте Cloudflare. После этого нажмите «Сохранить» внизу.

Изменение сервера имен может произойти довольно быстро, но может занять до 24 часов. Вы можете продолжать процесс до тех пор, пока не дойдете до получения сертификатов.

Создание API-токена Cloudflare

API-токен необходим для того, чтобы Let’s Encrypt мог проверить, что вы являетесь владельцем зарегистрированного домена. С этим токеном следует обращаться как с паролем: не сообщайте его и нигде не публикуйте.

Нажмите на значок «Профиль» в правом верхнем углу на Cloudflare. Нажмите на My Profile.

Там нажмите на «API Tokens» в левом меню. Затем нажмите на Create Token.

cloudflare-api-tokens

Согласно документации Let’s Encrypt, для создания API-токена требуется доступ к редактированию вашего домена. Выберите вариант Edit zone DNS.

В разделе Zone Resources выберите ваш конкретный домен. Должно быть написано «Include» «Specific zone«, а затем ваш домен.

Оставьте все остальные значения по умолчанию.

Нажмите «Continue to summary«. Просмотрите свои параметры, а затем нажмите «Create Token«.

Скопируйте токен в блокнот или в другое безопасное место на вашем локальном компьютере. Он понадобится вам позже. Вы НЕ сможете получить его снова!

После того как вы надежно сохранили свой токен, можно переходить к следующему шагу.

Проверьте внешнее подключение

Если вы еще не выполнили инструкции, перечисленные в разделе Remote access, сделайте это в первую очередь.

В сервисе Beget зайдите в раздел DNS, выберете свой домен и пропишите свой статический IP Address для типа А

Установите аддон Let’s Encrypt

Войдите в веб-портал Home Assistant и перейдите в раздел «Настройки» > «Дополнения». Нажмите на «Магазин дополнений» в правом нижнем углу и найдите «Let’s Encrypt».

Нажмите «Установить», но НЕ выбирайте «Запуск при загрузке». Мы включим эту функцию в самом конце.

Настройка Let’s Encrypt

После установки перейдите на вкладку «Конфигурация».

Нажмите на меню «3 точки» с правой стороны и выберите «Текстовый редактор«. (В пользовательском интерфейсе нет возможности ввести имя домена).

Скопируйте и вставьте текст ниже, заменив то, что указано в списке:


domains:
  - example.com
  - "*.example.com"
email: null@null.com
keyfile: privkey.pem
certfile: fullchain.pem
challenge: dns
dns:
  provider: dns-cloudflare
  cloudflare_api_token: replace-me-with-your-api-token

Настоящий адрес электронной почты не требуется. Указав его, вы сможете отправлять напоминания, когда срок действия вашего сертификата истечет.

Не забудьте заменить «cloudflare_api_token» на токен, который вы сгенерировали несколько шагов назад.

После завершения нажмите кнопку сохранить.

Запуск аддона Let’s Encrypt

Вернитесь на вкладку «Информация» для аддона Let’s Encrypt. Нажмите «Запустить» и задержите дыхание!

Если все сработало, вы должны увидеть зеленый круг в правом верхнем углу аддона. Перейдите в «Журнал«, чтобы подтвердить, что все прошло правильно. После этого установите опцию «Автозагрузка«.

Если вы получили ошибку, перепроверьте правильность ваших API-токенов, при необходимости измените их. Вам не нужно обновлять HTTP-порт, так как вы проверяете с помощью Cloudflare.

Установите сертификаты

Когда все будет завершено, вам нужно будет обновить файл configuration.yaml. Проще всего отредактировать этот файл, установив Studio Code Server или File Editor.

Убедитесь, что в разделе http у вас есть следующие строки:


http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

После обновления вам нужно будет перезапустить Home Assistant. После обновления вам нужно будет начать использовать полный URL вашего домена для доступа к Home Assistant. В локальной сети это будет example.com. Вы будете получать сообщение «Не доверено», если попытаетесь перейти к Home Assistant, используя https://homeassistant:8123. Это ограничение/функция Let’s Encrypt.

Заключение

Надеюсь, это будет полезно для всех, кто хочет добиться того же самого в Home Assistant. Если я что-то упустил, не стесняйтесь сообщить об этом в комментариях.

4 thoughts on “Домен и SSL Сертификат

  1. Добрый день! Подскажите пожалуйста способ описанный в статье будет работать только в локальной сети?
    Если нет то подскажите в каком сервисе связать свой домен со своим статическим Ip и какие порты нужно открывать/пробрасывать?

    1. Добрый день, если бы этот способ работал только в локальной сети, то в собственном домене не было бы смысла)) Как раз эта статья и отвечает на ваш вопрос. с 80 и 443 на 8123. Как пробросить, зависит от вашего роутера.

    1. Варианты есть:

      vpn/ssh туннель до сервера с реальным статическим адресом
      использование сервиса роутера Keenetic
      использование TOR
      использование сервиса nabucasa
      использование сервиса ngrok

Добавить комментарий