[Настройка] Публикация вебхуков Яндекс Алисы для МДМ, установенного на raspberry из образа 3.31

Описание настройки чего либо

Модераторы: immortal, newz20

Ответить
Harmer
Сообщения: 43
Зарегистрирован: Ср фев 14, 2018 10:34 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

[Настройка] Публикация вебхуков Яндекс Алисы для МДМ, установенного на raspberry из образа 3.31

Сообщение Harmer » Пт ноя 06, 2020 9:06 am

Прежде всего огромная благодарность skysilver за модуль и за помощь с настройкой.
Итак, имеем образ 3.31, Raspbian 9 (stretch), Apache 2.4.25
Белый адрес получен от провайдера, домен зарегистрирован через сервис hldns.ru
1. Устанавливаем модуль Yandex Home. Проверяем, что http://ваш_домен/modules/yandexhome/token.php и http://ваш_домен/modules/yandexhome/authorize.php доступны из интернета (не из домашней сети) на 80 порту без пароля. Если спрашивает пароль, смотрим сюда: https://mjdm.ru/forum/viewtopic.php?f=5 ... 10#p104289
2. Подключаемся к МДМ по ssh.
3. Устанавливаем certbot:

Код: Выделить всё

sudo apt update
sudo apt install certbot
4. Проверяем, запущен ли модуль ssl у апача:

Код: Выделить всё

sudo apachectl -M | grep 'ssl\|proxy'
Если в ответе есть что-то вроде ssl_module (shared), переходим к следующему шагу. Если нет, активируем модуль ssl:

Код: Выделить всё

sudo a2enmod ssl
и перезапускаем апач

Код: Выделить всё

sudo systemctl restart apache2
5. Выполняем тестовый запуск certbot:

Код: Выделить всё

sudo certbot certonly --dry-run --webroot -w /var/www/html -d ваш_домен
В ответ должны получить много текста, и в конце - The dry run was successful.
Если все хорошо, поучаем сертификат:

Код: Выделить всё

sudo certbot certonly --webroot -w /var/www/html -d ваш_домен
Здесь нужно будет ввести свой адрес электронной почты, принять лицензионное соглашение и отказаться от почтовой рассылки. И получаем большую портянку текста, начинающуюся с - Congratulations! Your certificate and chain have been saved at:
Проверяем наличие сертификатов:

Код: Выделить всё

sudo ls -l  /etc/letsencrypt/live/ваш_домен/
Должны найтись файлы cert.pem, chain.pem, fullchain.pem и privkey.pem
6. Правим файл 000-default.conf

Код: Выделить всё

sudo nano /etc/apache2/sites-available/000-default.conf
В нем нужно добавить следующие строки:
<IfModule mod_ssl.c>
<VirtualHost *:443>
   ServerName ваш_домен
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html

   <Directory /var/www/html/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      allow from all
   </Directory>

   SSLEngine on
   SSLCertificateFile /etc/letsencrypt/live/ваш_домен/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/ваш_домен/privkey.pem
   SSLCertificateChainFile /etc/letsencrypt/live/ваш_домен/chain.pem
</VirtualHost>
</IfModule>
Проверяем конфиг на ошибки

Код: Выделить всё

sudo apache2ctl –t
Если все хорошо, перезапускаем апач

Код: Выделить всё

sudo systemctl restart apache2
Проверяем, что апач успешно стартовал

Код: Выделить всё

sudo systemctl status apache2
Проверяем, какие порты слушает апач

Код: Выделить всё

netstat -tunla | grep LISTEN
Должен быть открыт порт 443
7. Проверяем сертификаты с помощью онлайн сервиса https://www.sslshopper.com/ssl-checker. ... ]ваш_домен[/i]
Проверяем доступность вебхуков из интернета по ssl
https://ваш_домен/modules/yandexhome/token.php
https://ваш_домен/modules/yandexhome/authorize.php
8. Переходим к настройке модуля Yandex Home
Придумываем логин и пароль.
OAuth2 ID и OAuth2 KEY генерируем кнопкой справа от поля.
На первое время ставим галочку Отладка DebMes
Идем в кабинет разработчика навыков яндекса.
https://dialogs.yandex.ru/developer/skills/
Создаем навык с типом Умный дом.
Придумываем название
Backend - Endpoint URL - https://ваш_домен/modules/yandexhome/smarthome.php
Тип доступа - Приватный.
Подзаголовок, Имя разработчика, Email разработчика - произвольно.
Официальный навык – Нет
Описание - произвольно.
Иконка – загружаем.
Связка аккаунтов - Авторизация - Создать
Идентификатор приложения - копируем из настроек модуля OAuth2 ID
Секрет приложения - копируем из настроек модуля OAuth2 KEY
URL авторизации - https://ваш_домен/modules/yandexhome/authorize.php
URL для получения токена - https://ваш_домен/modules/yandexhome/token.php
URL для обновления токена - https://ваш_домен/modules/yandexhome/token.php
Сохраняем и публикуем.
На вкладке тестирование навыка у меня все заработало только на следующий день, а в телефоне сразу.
9. И еще. После настройки ssl апач у меня стал периодически крашиться с ошибкой (43) Identifier removed: AH00144: couldn't grab the accept mutex.
Помогла правка файла /etc/apache2/apache2.conf
Нужно строку #Mutex file:${APACHE_LOCK_DIR} default заменить на Mutex posixsem и перезапустить апач

Код: Выделить всё

sudo systemctl restart apache2
За это сообщение автора Harmer поблагодарил:
skysilver (Пт ноя 06, 2020 9:30 am)
Рейтинг: 1.19%
Ответить