Установка пароля на веб-интерфейс контроллера Wiren Board (Debian Stretch)

Материал из Wiren Board
Это утверждённая версия страницы. Она же — наиболее свежая версия.

Описание

Эта инструкция для пользователей контроллеров Wiren Board 5...7, работающих под Debian Stretch — это все релизы ПО до wb-2207 включительно. Подробнее про релизы.

Веб-интерфейс не поддерживает авторизацию пользователя, но вы можете настроить http-авторизацию сервера nginx. После окончания настройки при подключении будет появляться окно с запросом логина и пароля.

Установка пароля

Указаны адрес и порт для локального доступа к websocket и mqtt. Справа вверху зеленая надпись Connected сообщает об успешном соединении.
Форма http-авторизации. Введены логин и пароль.

Чтобы установить пароль, настройте mosquitto и nginx:

  1. Закройте доступ к websocket- и mqtt-порт снаружи. Для этого откройте файл /etc/mosquitto/conf.d/listeners.conf:
    nano /etc/mosquitto/conf.d/listeners.conf
    
    и приведите его к виду:
    #change 0.0.0.0 to limit listener to localhost
    
    listener 1883 127.0.0.1
    # example:
    #listener 1883 0.0.0.0
    
    #change 0.0.0.0 to 127.0.0.1 to limit listener to localhost
    
    listener 18883 127.0.0.1
    protocol websockets
    
  2. Перезагрузите mosquitto:
    systemctl restart mosquitto
    
  3. Теперь перейдите в веб-интерфейс и обновите страницу клавишами Ctrl+Shift+R — это сбросит кэш страницы.
  4. На ошибки соединения пока не обращайте внимание и перейдите в раздел Настройки — Веб-интерфейс, укажите в поле Порт новое число 80. Далее нажмите Применить. В правом верхнем углу должна появиться зеленая надпись Подключено. Теперь проверьте, что всё работает: перейдите в раздел Конфигурации и проверьте, что конфигурации доступны для просмотра и редактирования.

Далее нужно установить пароль на nginx.

  1. Включите глобальную аутентификацию:
    ln -s /etc/nginx/sites-available/global_auth /etc/nginx/sites-enabled
    systemctl restart nginx
    
    После этого при подключении к веб-интерфейсу будет запрошен логин и пароль. По умолчанию: логин root, пароль wirenboard.
  2. Чтобы поменять пароль, выполните команду ниже:
    printf "root:`openssl passwd -apr1`\n" > /etc/nginx/passwd
    
    здесь вместо root можно придумать любое другое имя пользователя.
    После выполнения команды появится запрос на ввод пароля — введите новый пароль, нажмите Enter, повторите ввод нового пароля и снова нажмите Enter.
  3. Вернитесь в веб-интерфейс, обновите страницу клавишами Ctrl+Shift+R и при запросе логина и пароля введите их.

Совет: Чтобы не вводить логин и пароль каждый раз при подключении к контроллеру, добавьте закладку с адресом контроллера в формате:

http://login:password@host/

Снятие пароля

Чтобы снять пароль с веб-интерфейса, верните конфигурацию mosquitto и nginx к состоянию по умолчанию.

  1. Отключите глобальную аутентификацию командой:
    rm /etc/nginx/sites-enabled/global_auth
    
  2. Перезагрузите nginx:
    systemctl restart nginx
    
  3. Откройте файл etc/mosquitto/conf.d/listeners.conf:
    nano /etc/mosquitto/conf.d/listeners.conf
    
    И приведите его к виду:
    #change 0.0.0.0 to limit listener to localhost
    
    listener 1883 0.0.0.0
    # example:
    #listener 1883 0.0.0.0
    
    #change 0.0.0.0 to 127.0.0.1 to limit listener to localhost
    
    listener 18883 0.0.0.0
    protocol websockets
    
  4. Перезагрузите mosquitto:
    systemctl restart mosquitto
    
  5. Перейдите в веб-интерфейс и обновите страницу клавишами Ctrl+Shift+R — это сбросит кэш страницы.
  6. Перейдите в раздел Настройки — Веб-интерфейс, укажите в поле Порт значение 18883. Нажмите Применить. В правом верхнем углу должна появиться зеленая надпись Подключено.
  7. Нажмите еще раз Ctrl+Shift+R и убедитесь, что при входе в веб-интерфейс пароль не запрашивается.