Итак, имеем образ 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
Код: Выделить всё
sudo apachectl -M | grep 'ssl\|proxy'
Код: Выделить всё
sudo a2enmod ssl
Код: Выделить всё
sudo systemctl restart apache2
Код: Выделить всё
sudo certbot certonly --dry-run --webroot -w /var/www/html -d ваш_домен
Если все хорошо, поучаем сертификат:
Код: Выделить всё
sudo certbot certonly --webroot -w /var/www/html -d ваш_домен
Проверяем наличие сертификатов:
Код: Выделить всё
sudo ls -l /etc/letsencrypt/live/ваш_домен/
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
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