Развертывание обратного прокси Nginx Proxy Manager в Docker контейнере.

Развертывание обратного прокси Nginx Proxy Manager в Docker контейнере.

LSETC

Доброго времени суток! В данной заметке мы научимся поднимать с вами reverse-proxy Nginx Proxy Manager в Docker контейнере и во второй части пройдемся по его возможностям.

Коротко о Nginx Proxy Manager в дальнейшем - NPM, для удобства:


NPM - это бесплатный обратный прокси (reverse proxy) основанный на Nginx, который имеет удобный и понятный интерфейс для управления.

NPM - используется для проксирования вашего приложения на нужный нам домен либо поддомен. Простыми словами для быстрого и удобного привязывания контейнера к нашему домену или поддомену.

Попытался изобразить схему работы Nginx Proxy Manager для наглядности

Сделать это мы можем двумя разными способами:

  1. По порту - самый простой способ, из минусов данный способ оставляет наши порты снаружи в интернет.
  2. По hostname - более безопасный способ, для работы которого потребуется открыть 3 порта 80, 443 и порт нашего GUI NPM.
    В данном способе остальные порты наших переложений не будут выставлены наружу в интернет.

Помимо проксирования на домены, в веб интерфейсе NPM есть работа с TLS(SSL) сертификатами.

Во второй части статьи мы рассмотрим несколько способов получения бесплатных SSL сертификатов таких как:

  1. Бесплатный обновляющийся сертификат от Lets Encrypt.
  2. Бесплатный обновляющийся Wildcard сертификат от Lets Encrypt.
  3. Бесплатный сертификат от CloudFlare на 15 лет.

NPM автоматически продлевает SSL сертификаты каждые 3 месяца.

  • В NPM есть возможность специальных правил ACL для предоставления/ограничения доступа к вашим приложениям по ip адресу, пароля или одновременно по ip и паролю.

Для установки NPM нам понадобиться:

1. Установленный Docker/Docker-Compose.

2. Сервер с доступом root или sudo.

3. Копипаста команд и 15 минут вашего драгоценного времени.

4. Пробросить порты 443 и 80 на IP адрес сервера с NPM, на вашем маршрутизаторе.

1. Подготовка к установке.

Я буду производить установку на Debian 11 от root.

1. Установим Docker/Docker Compose по данной инструкции.

2. Создаем директорию под NPM:

mkdir -p /app/NPM

3. Назначаем пользователя владельцем этой директории:

chown -R $USER:$USER /app/NPM


2. Конфигурация Docker-compose.yml

1. Переходим в директорию /app/NPM:

cd /app/NPM


2. Создаем в ней наш docker-compose.yml файл:

nano docker-compose.yml


3. Копируем строки ниже, вставляем в наш docker-compose.yml

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

Так же, на всякий случай ссылки: оф. сайт и Docker Hub


Сохраняем его CTRL+X, Y, ENTER и стартуем контейнер NPM командой:

docker compose up -d

Готово, ждем окончания и после можем перейти уже к настройке NPM.

3. Первоначальная настройка NPM.

1. Переходим в браузер и там открываем нашу панель управления NPM

http://ip.адрес.вашего.сервера:порт

В моем случае будет выглядеть так, если вы делали копипастой, то у вас будет отличаться только ip вашего сервера:

http://192.168.1.10:43081

Для входа используем:

Email: admin@example.com

Password: changeme

2. Далее нам будет предложено указать почту, имя и никнейм, указываем свое:

3. Далее вводим старый пароль (changeme) и ваш новый, сложный пароль:

4. Дополнительно необходимо на вашем маршрутизаторе пробросить порты 443 и 80 на адрес сервера с NPM.

(Разбирать данный этап не буду, т.к. на разных роутерах это делается в разных местах, но плюс минус одинаково).

Порт 443 будет использоваться для Reverse Proxy, а порт 80 для продления сертификатов Let's Encrypt.

Вывод

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

Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram, в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, спасибо за потраченное время на чтение и доброго времени суток!)

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

Кофейня тут)


Report Page