Перейти к основному контенту

Nginx proxy manager в docker portainer

После установки docker portainer

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

Основные функции
Поддерживает проксирование по доменам/поддоменам, автоматическое получение SSL-сертификатов Let's Encrypt, HTTP-аутентификацию, списки доступа (ACL) и блокировку IP. Позволяет настраивать перенаправления, кастомные страницы ошибок и потоки TCP/UDP через Streams.
​

После покупки домена и регистрации его у dns провайдеров у нас появляется возможность реализовать обратный прокси трафика по доменному имени, это позволит нам убрать отображение ip адресов из нашей homelab и реализовать доступ из интернета к веб панелям необходимых нам сервисов.

Установка Nginx Proxy Manager

Для установки Nginx Proxy Manager (npm) в docker через portainer, нам необходимо перейти в веб-интерфейс portainer

http://<ip lxc контейнера>:9000

В веб интерфейсе необходимо перейти в docker

image.png

Слева или в центре экрана выбрать Stacks

image.png

Слева сверху выбрать +Add stack

image.png

В name указать название нашего контейнера npm

image.png

Ниже в поле для ввода кода Web editor, вводим код нашего docker-compose файла

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'    # HTTP
      - '443:443'  # HTTPS
      - '81:81'    # Админка NPM
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    environment:
      DISABLE_IPV6: 'true'

После ввода необходимо нажать кнопку Deploy the stack

image.png

Если все в порядке, после установки у вас появится доступ к панели по адресу http://<ip lxc контейнера с portain>:81

Настройка Nginx Proxy Manager

После установки нам необходимо выполнить несколько обязательных вещей

Проброс портов к npm

В OPNsense нам необходимо перейти в раздел Firewall, далее NAT и перейти в Port Forward, в открывшемся окне нажать справа сверху на +(add) 

В открывшемся окне нужно заполнить поля

Interface: WAN

TCP/IP Version: IPv4

Protocol: TCP

Destination: WAN adress

Destination port range: from: HTTP; to: HTTP

Redirect target IP: Single host of Network, ниже ip используемого lxc контейнера

Redirect target port: HTTP

Description: NPM HTTP for Let's Encrypt

Нажать кнопку Save

image.png

После этого нажимаем кнопку Apply changes и создаем следующее правило кнопкой +(add)

Interface: WAN

TCP/IP Version: IPv4

Protocol: TCP

Destination: WAN adress

Destination port range: from: HTTPS; to: HTTPS

Redirect target IP: Single host of Network, ниже ip используемого lxc контейнера

Redirect target port: HTTPS

Description: NPM HTTPS for Let's Encrypt

Нажать кнопку Save

image.png

После этого нажимаем кнопку Apply changes

Настройка доменных имен в npm