Majordomo открываем доступ во внешку для модуля Yandex Home

Декабрь 30, 2021 - Время чтения: 3 минуты

Сама настройка модуля 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

Предложения, замечания и вопросы принимаются в комментариях а также в можно написать в телеграм используя форму обратной связи (верху страницы)

Полу(о)умный дом

Делаем вещи умнее...

Посетителей

13