Сама настройка модуля Yandex Home прекрасно описана в базе знаний MajorDoMo, а также на GitHub разработчика majordomo-yandexhome.
Но, данные статьи подразумевают, что необходимо выставить интерфейс управления УД наружу и не затрагивают тему безопасности открытия внешнего доступа. Если "покурить" форум то можно найти решение, как прикрутить базовую авторизацию по логину и паролю для внешних сетей (ссылка на форуме). Но такое решение не лишено недостатков, так как периодически находятся дырки в безопасности MajorDoMo, поэтому как вариант можно выставить наружу не весь интерфейс управления УД, а только необходимый url для авторизации Yandex диалога.
Примечание: тут НЕ рассмотрена настройка ssl сертификатов, пример настройки: Let’s Encrypt на Apache, либо читайте статейку по настройке Nginx Proxy Manager. Рассматривается только вопрос проброса порта для авторизации Yandex диалога
Для этого в настройках Apache изменяем настройки:
1) откроем доступ наружу для каталога /modules/yandexhome/ на отдельном порту, для этого создаем в каталоге /etc/apache2/sites-available файл конфигурации
sudo nano /etc/apache2/sites-available/alisa-ext.conf
и прописываем туда следующие настройки:
<VirtualHost *:4443>
ServerAdmin username@domain.ru
ServerName domain.ru
ServerAlias www.domain.ru
DocumentRoot /var/www/modules/yandexhome/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Здесь мы прописали что Apache будет обрабатывать все запросы на порту 4443 и открывать страницы находящиеся по указанному пути в параметре "DocumentRoot"
2) Также чтобы Apache слушал запросы на порту 4443, необходимо исправить файл /etc/apache2/ports.conf добавить туда строку:
Listen 4443
3) После чего нужно применить изменения командами:
sudo a2ensite alisa-ext.conf
sudo systemctl restart apache2
sudo systemctl status apache2
4) Далее для того чтобы при обращении к несуществующим страница по этому url не отображались ошибки, нужно создать файл .htaccess в каталоге /var/www/modules/yandexhome/
со следующим содержимым:
Options All -Indexes
RewriteEngine On
ErrorDocument 404 https://ya.ru
ErrorDocument 403 https://ya.ru
при этом вместо ошибок, пользователя (или бота) будет редиректить на url, который вы указали (в данном примере https://ya.ru)
5) После чего на пограничном роутере делаем проброс порта на вышеуказанный адрес, и проверяем извне обращения к url:
https://domain.ru/smarthome.php
https://domain.ru/authorize.php
https://domain.ru/token.php
Предложения, замечания и вопросы принимаются в комментариях а также в можно написать в телеграм используя форму обратной связи (верху страницы)