Skip to content
> 0x2d.dev
Назад

Nginx Proxy Manager обратный прокси для домашнего сервера


Nginx Proxy Manager — это удобный инструмент для управления обратным прокси-сервером на базе Nginx с помощью графического веб-интерфейса, позволяющий быстро и просто настраивать маршрутизацию и безопасность веб-приложений без ручного редактирования конфигураций.

Основные возможности

Отличия от обычного Nginx

Использование

Преимущества

Предварительные требования

Установка

В любой папке, например, /home/user/apps создайте папку и docker-compose.yml. Можно сделать следующей командой — она создаст папку с файлом и сразу откроет его в тестовом редакторе.

mkdir nginx-proxy && cd nginx-proxy && nano docker-compose.yml
services:
  nginx-proxy:
    container_name: nginx-proxy
    image: 'docker.io/jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
      - 81:81
    volumes:
      - data:/data
      - letsencrypt:/etc/letsencrypt
volumes:
    data:
    letsencrypt:docker-compose.yml

Сохраните, выйдите из редактора nano (ctrl + x) и запустите:

docker compose up -d

Описание проброшенных портов

Минутка теории

Для тех кому интересно как это все работает и что значат настройки, которые мы указываем.

Настройка веб-интерфейса

После запуска контейнера в браузере перейдите по адресу http://192.168.1.100:81, заменив IP-адрес на тот где у вас установлен Nginx Proxy Manager — откроется форма авторизации, авторизуйтесь, укажите email и пароль по умолчанию, после входа смените пароль.

Nginx Proxy Manager Авторизация

Логин (Email) и пароль по умолчанию следующие:

Настройка локальных доменов по http

В статье про настройку Adguard Home мы установили свой локальный DNS-сервер и научились перезаписывать DNS-запросы на примере доступа к Home Assistant по локальному домену вместо IP-адреса. Но хоть Home Assistant был доступен по домену homeassistant.iot все равно приходилось использовать порт в адресе. Сейчас мы это исправим и доступ будет осуществляться по http://homeassistant.iot

Перейдите в веб-интерфейс Adguar Home в раздел Фильтры -> Перезапись DNS-запросов и добавьте любые домены, которые вам нужны, но в поле IP-адрес теперь укажите адрес сервера где установлен Nginx Proxy Manager.

Adguard Home - Перезапись DNS-запросов

Вернитесь в веб-интерфейс Nginx Proxy Manager, в меню выберите Hosts -> Proxy Hosts и нажмите Add Proxy Host, заполните форму и сохраните изменения.

Nginx Proxy Manager Добавление прокси хоста

Попробуйте в браузере перейти по вашему домену, в нашем примере это homeassistant.iot — если вы увидели ошибку Bad request значит все настроили верно. Для безопасности Home Assistant ограничивает доступ, сейчас мы это исправим. Для других сервисов где нет такой проверки безопасности все должно уже работать, например вы можете добавить отдельный домен для доступа к Zigbee2MQTT.

Tip

Обратите внимание что браузеры часто видя странные доменные зоны переходят в поиск или перенаправляют на протокол https. В адресной строке полностью укажите http://homeassistant.iot и проверьте что браузер не перенаправил на https.

Настройка Home Assistant

Откройте файл конфигурации Home Assistant configuration.yaml, добавьте следующий код и перезагрузите Home Assistant:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.1.111

Вместо 192.168.1.111 укажите IP-адрес сервера где установлен Nginx Proxy Manager. Эта конфигурация разрешает достук к Home Assistant с IP-адресов указанных в списке, в данном случае у нас он один.

Note

Обратите внимание на то есть ли у вас в configuration.yaml секция http. Если она есть, то нужно добавить код в нее.

После перезагрузки Home Assistant попробуйте перейти по вашему домену (http://homeassistant.iot) — все должно работать.

Настройка публичных доменов по https

Для того чтобы обеспечить доступ к Home Assistant и другим вашим локальным сервисам у вас должно быть:

Настройка домена у регистратора

Ниже приведен пример настройки домена у регистратора reg.ru. У других регистраторов алгоритм может немного отличаться, но термины и настройки должны быть примерно такими же.

После покупки домена перейдите в панель управления доменом и в качестве DNS-сервера выберите Бесплатные DNS-серверы Рег.ру

Рег.ру DNS-серверы и управление зоной

Tip

Кстати вы можете использовать свой DNS-сервер Adguard Home, но это строго НЕ РЕКОМЕНДУЕТСЯ, т.к. для этого на вашем роутере нужно будет открыть порт 53, а после того как вы это сделаете уже буквально через несколько минут к вашему DNS-серверу посыпется тысячи запросов — скорей всего ни ваш роутер, ни ваш сервер не выдержат такой нагрузки.

Далее на этой же странице нажмите Добавить запись, в открывшемся списке выбираете A запись и заполните форму:

Рег.ру добавление DNS записей Рег.ру добавление DNS записей

Для добавления доменов третьего уровня (например homeassistant.0x2d.dev) в поле Subdomain введите homeassistant. Если вы планируете использовать много доменов третьего уровня, то можете в поле Subdomain указать * (звёздочка). В таком случае все домены третьего уровня будут вести на указанный вам IP-адрес, если для них не будет добавлена отдельная A-запись. Отдельная A-запись имеет выше приоритет над * (звёздочкой).

Tip

Обновление записей в DNS-серверах может занимать до нескольких дней, но обычно (у рег.ру) добавление новых записей происходит за пару минут (обновление может занимать чуть дольше из-за кеширования). Проверить обновлена ли запись вы можете со своего компьютера командой ping homeassistant.0x2d.dev

Проброс портов на роутере

О том как пробросить порты мы рассказывали в этой статье, только теперь нам нужен порт не 8123, а два порта 80 и 443. Повторяем все тоже самое, то указываем другие порты.

В веб-интерфейса роутера перейдите в Network rules -> Port Forwarding и нажмите Add rule.

Keenetic проброс портов Keenetic проброс портов

У вас должно быть добавлены две записи, в общем списке уже отображаются IP-адреса.

Keenetic проброс портов

Добавление Proxy

В веб-интерфейсе Nginx Proxy Manager, в меню выберите Hosts -> Proxy Hosts и нажмите Add Proxy Host, заполните форму и сохраните изменения.

Tip

Вы можете использовать публичные домены без SSL сертификата, т.е. по протоколу http, но за пределами локальной сети это становится небезопасно, т.к. теперь ваш сервис доступен из интернета, а трафик не зашифрован.

Nginx Proxy Manager информация о хосте Nginx Proxy Manager настройка SSL для хоста

Note

Let’s Encrypt это сервис, который предоставляет бесплатные SSL сертификаты. Nginx Proxy Manager предоставляет удобный механизм запроса и обновления сертификатов.

На этом все, теперь ваши сервисы доступны из интернета по доменам. Но теперь будьте более бдительны с такими сервисам, например установите сложный пароль и включите двухфакторную аутентификацию в Home Assistant.


Предыдущая запись
Установка и настройка локального DNS-сервера AdGuard Home
Следующая запись
Интеграция сервиса Народный мониторинг в Home Assistant