====== Установка обратного прокси Nginx Proxy Manager в Docker контейнере ====== --- //[[winogradov@list.ru|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, например [[http://buddawiki.winogradov.ru/doku.php?id=mysql:start|MariaDB]] ==== Подготовка к установке ==== Я буду производить установку на Ubuntu от root в локальной среде [[http://buddawiki.winogradov.ru/doku.php?id=ubuntu:install_docker|Установим 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 Так же, на всякий случай ссылки: [[https://nginxproxymanager.com/guide/#quick-setup|оф. сайт]] и [[https://docs.docker.com/manuals/|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 При первом входе будет предложено изменить пользователя и пароль для входа {{tag>nginx docker Ubuntu}}