Инструменты пользователя

Инструменты сайта


nginx:install_ncinx_proxy_manager_docker

Установка обратного прокси Nginx Proxy Manager в Docker контейнере

lonebuddha 2024/03/23 23:13

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

Коротко о Nginx Proxy Manager:

Nginx Proxy Manager - это бесплатный обратный прокси (reverse proxy) основанный на Nginx, который имеет удобный и понятный интерфейс для управления, используется для проксирования вашего приложения в Docker на нужный нам домен либо поддомен. Простыми словами для быстрого и удобного привязывания контейнера к нашему домену или поддомену.

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

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

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

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

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

Nginx Proxy Manager автоматически, бесплатно продлевает SSL сертификаты каждые 3 месяца.

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

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

  1. Установленный Docker/Docker-Compose
  2. Сервер с доступом root или sudo
  3. Пробросить порты 443 и 80 на IP адрес сервера с NPM, на вашем маршрутизаторе
  4. Установленная база данных MySQL, например MariaDB

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

Я буду производить установку на Ubuntu от root в локальной среде

Установим Docker/Docker Compose по данной инструкции Создаем директорию под NPM

mkdir -p /docker/npm

Назначаем пользователя владельцем этой директории, если вы используете sudo:

chown -R $USER:$USER /docker/npm

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

Переходим в директорию /docker/npm:

cd /docker/npm

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

nano docker-compose.yml

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

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
    environment:
      DB_MYSQL_HOST: "ip_addr"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

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

Сохраняем его и стартуем контейнер NPM командой

docker compose up -d

При необходимости смотрим лог запуска

docker compose logs

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

Первоначальная настройка Nginx Proxy Manager

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

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

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

Email: admin@example.com
Password: changeme

При первом входе будет предложено изменить пользователя и пароль для входа

/www/sites/dokuwiki.win-labs.ru/www/data/pages/nginx/install_ncinx_proxy_manager_docker.txt · Последнее изменение: 2024/03/23 20:24 — 127.0.0.1

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki