Содержание
Установка обратного прокси 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 на нужный нам домен либо поддомен. Простыми словами для быстрого и удобного привязывания контейнера к нашему домену или поддомену.
Сделать это мы можем двумя разными способами:
- По порту - самый простой способ, из минусов данный способ оставляет наши порты снаружи в интернет.
- По hostname - более безопасный способ, для работы которого потребуется открыть 3 порта 80, 443 и порт нашего GUI NPM. В данном способе остальные порты наших переложений не будут выставлены наружу в интернет.
Помимо проксирования на домены, в веб интерфейсе Nginx Proxy Manager есть работа с TLS(SSL) сертификатами.
Во второй части статьи мы рассмотрим несколько способов получения бесплатных SSL сертификатов таких как:
- Бесплатный обновляющийся сертификат от Lets Encrypt.
- Бесплатный обновляющийся Wildcard сертификат от Lets Encrypt.
Nginx Proxy Manager автоматически, бесплатно продлевает SSL сертификаты каждые 3 месяца.
В Nginx Proxy Manager есть возможность специальных правил ACL для предоставления/ограничения доступа к вашим приложениям по ip адресу, пароля или одновременно по ip и паролю.
Для установки NPM нам понадобиться
- Установленный Docker/Docker-Compose
- Сервер с доступом root или sudo
- Пробросить порты 443 и 80 на IP адрес сервера с NPM, на вашем маршрутизаторе
- Установленная база данных 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
При первом входе будет предложено изменить пользователя и пароль для входа
