NGINXproxyManager: различия между версиями
Admin (обсуждение | вклад) Новая страница: «Подымаем свой реверсивный прокси на nginx proxy manager: Обновляем систему: apt update && apt upgrade -y устанавливаем net-tools apt install net-tools -y Устанавливаем docker и docker compose apt install docker.io -y && apt install docker-compose -y Запускаем Docker systemctl start docker Добавляем Docker в автозагру...» |
Artem (обсуждение | вклад) Обновление статьи Метки: с мобильного устройства из мобильной версии |
||
| Строка 1: | Строка 1: | ||
= Установка Nginx Proxy Manager в Docker = | |||
‘’‘Nginx Proxy Manager (NPM)’’’ — удобная графическая оболочка для управления реверсивным прокси-сервером Nginx. | |||
С его помощью можно: | |||
* публиковать внутренние веб-сервисы в Интернет; | |||
* направлять разные домены и поддомены на разные серверы; | |||
* автоматически получать SSL-сертификаты Let’s Encrypt; | |||
* управлять HTTPS через веб-интерфейс; | |||
* создавать перенаправления; | |||
* ограничивать доступ к отдельным сервисам. | |||
В результате схема работы выглядит примерно так: | |||
<pre> | |||
INTERNET | |||
│ | |||
HTTP / HTTPS | |||
80 / 443 | |||
│ | |||
▼ | |||
┌─────────────────────┐ | |||
│ Nginx Proxy Manager │ | |||
│ │ | |||
│ Docker │ | |||
└──────────┬──────────┘ | |||
│ | |||
┌───────────┼───────────┐ | |||
│ │ │ | |||
▼ ▼ ▼ | |||
Web #1 Web #2 Web #3 | |||
192.168.1.x 192.168.1.x 192.168.1.x | |||
</pre> | |||
== Требования == | |||
Для установки потребуется сервер или виртуальная машина с Linux. | |||
В данной инструкции предполагается использование Debian/Ubuntu. | |||
Также необходимо убедиться, что порты: | |||
* ‘’‘80/TCP’’’ — HTTP; | |||
* ‘’‘443/TCP’’’ — HTTPS; | |||
* ‘’‘81/TCP’’’ — панель управления Nginx Proxy Manager | |||
не заняты другими сервисами. | |||
Проверить используемые порты можно командой: | |||
<syntaxhighlight lang="bash"> | |||
ss -tulpn | |||
</syntaxhighlight> | |||
== Обновление системы == | |||
Сначала обновляем список пакетов и установленные пакеты: | |||
<syntaxhighlight lang="bash"> | |||
apt update && apt upgrade -y | |||
</syntaxhighlight> | |||
При необходимости устанавливаем дополнительные сетевые утилиты: | |||
<syntaxhighlight lang="bash"> | |||
apt install net-tools curl ca-certificates -y | |||
</syntaxhighlight> | |||
== Установка Docker == | |||
Для актуальных установок рекомендуется использовать официальный репозиторий Docker. | |||
Добавляем ключ репозитория: | |||
<syntaxhighlight lang="bash"> | |||
install -m 0755 -d /etc/apt/keyrings | |||
curl -fsSL https://download.docker.com/linux/debian/gpg \ | |||
-o /etc/apt/keyrings/docker.asc | |||
chmod a+r /etc/apt/keyrings/docker.asc | |||
</syntaxhighlight> | |||
Добавляем репозиторий Docker: | |||
<syntaxhighlight lang="bash"> | |||
cat > /etc/apt/sources.list.d/docker.sources <<EOF | |||
Types: deb | |||
URIs: https://download.docker.com/linux/debian | |||
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME") | |||
Components: stable | |||
Architectures: $(dpkg --print-architecture) | |||
Signed-By: /etc/apt/keyrings/docker.asc | |||
EOF | |||
</syntaxhighlight> | |||
Обновляем список пакетов: | |||
<syntaxhighlight lang="bash"> | |||
apt update | |||
</syntaxhighlight> | |||
Устанавливаем Docker Engine и Docker Compose: | |||
<syntaxhighlight lang="bash"> | |||
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y | |||
</syntaxhighlight> | |||
Проверяем версию Docker: | |||
<syntaxhighlight lang="bash"> | |||
docker --version | |||
</syntaxhighlight> | |||
И | И Docker Compose: | ||
<syntaxhighlight lang="bash"> | |||
docker compose version | |||
</syntaxhighlight> | |||
== Проверка Docker == | |||
Проверяем состояние службы: | |||
<syntaxhighlight lang="bash"> | |||
systemctl status docker | |||
</syntaxhighlight> | |||
Если Docker не запущен: | |||
<syntaxhighlight lang="bash"> | |||
systemctl start docker | |||
</syntaxhighlight> | |||
Добавляем Docker в автозагрузку: | |||
<syntaxhighlight lang="bash"> | |||
systemctl enable docker | |||
</syntaxhighlight> | |||
Для дополнительной проверки можно запустить тестовый контейнер: | |||
<syntaxhighlight lang="bash"> | |||
docker run --rm hello-world | |||
</syntaxhighlight> | |||
Если установка выполнена правильно, Docker загрузит тестовый образ и выведет сообщение об успешном запуске. | |||
== Установка Nginx Proxy Manager == | |||
Создадим отдельный каталог для Nginx Proxy Manager: | |||
<syntaxhighlight lang="bash"> | |||
mkdir -p /opt/nginx-proxy-manager | |||
cd /opt/nginx-proxy-manager | |||
</syntaxhighlight> | |||
Создаём файл Docker Compose: | |||
<syntaxhighlight lang="bash"> | |||
nano docker-compose.yml | |||
</syntaxhighlight> | |||
Добавляем следующую конфигурацию: | |||
<syntaxhighlight lang="yaml"> | |||
services: | |||
app: | |||
image: 'jc21/nginx-proxy-manager:2.15.1' | |||
restart: unless-stopped | |||
ports: | |||
- '80:80' | |||
- '81:81' | |||
- '443:443' | |||
volumes: | |||
- ./data:/data | |||
- ./letsencrypt:/etc/letsencrypt | |||
</syntaxhighlight> | |||
Сохраняем файл: | |||
<pre> | |||
Ctrl + O | |||
Enter | |||
Ctrl + X | |||
</pre> | |||
В данной конфигурации используется встроенная база данных SQLite, поэтому отдельный контейнер MariaDB для обычной установки не требуется. | |||
== Запуск Nginx Proxy Manager == | |||
Запускаем контейнеры: | |||
<syntaxhighlight lang="bash"> | |||
docker compose up -d | |||
</syntaxhighlight> | |||
Проверяем их состояние: | |||
<syntaxhighlight lang="bash"> | |||
docker compose ps | |||
</syntaxhighlight> | |||
Также можно посмотреть непосредственно запущенные Docker-контейнеры: | |||
<syntaxhighlight lang="bash"> | |||
docker ps | |||
</syntaxhighlight> | |||
Nginx Proxy Manager должен отображаться со статусом: | |||
<pre> | |||
Up | |||
</pre> | |||
Первый запуск может занять некоторое время. | |||
При необходимости посмотреть журнал запуска: | |||
<syntaxhighlight lang="bash"> | |||
docker compose logs -f | |||
</syntaxhighlight> | |||
Выход из просмотра журнала: | |||
<pre> | |||
Ctrl + C | |||
</pre> | |||
== Вход в панель управления == | |||
Открываем браузер и переходим по адресу: | |||
<pre> | |||
http://IP_СЕРВЕРА:81 | |||
</pre> | |||
Например: | |||
<pre> | |||
http://192.168.1.20:81 | |||
</pre> | |||
После первого входа необходимо настроить учётную запись администратора согласно интерфейсу текущей версии Nginx Proxy Manager. | |||
‘’‘Обязательно используйте собственный надёжный пароль администратора.’’’ | |||
== Назначение портов == | |||
{| class=“wikitable” | |||
! Порт | |||
! Протокол | |||
! Назначение | |||
80 | |||
TCP | |||
Входящие HTTP-запросы | |||
- | |||
443 | |||
TCP | |||
Входящие HTTPS-запросы | |||
- | |||
81 | |||
TCP | |||
Web-интерфейс администратора | |||
} | |||
{{Warning|Порт 81 предназначен для административной панели. Не рекомендуется без необходимости публиковать его напрямую в Интернет. Ограничьте доступ локальной сетью, VPN или правилами межсетевого экрана.}} | |||
== Создание первого Proxy Host == | |||
После входа в Nginx Proxy Manager открываем: | |||
<pre> | |||
Hosts → Proxy Hosts → Add Proxy Host | |||
</pre> | |||
Указываем: | |||
{| class=“wikitable” | |||
! Параметр | |||
! Пример | |||
Domain Names | |||
wiki.example.com | |||
- | |||
Scheme | |||
http | |||
- | |||
Forward Hostname / IP | |||
192.168.1.30 | |||
- | |||
Forward Port | |||
80 | |||
} | |||
После этого Nginx Proxy Manager будет принимать запрос: | |||
<pre> | |||
https://wiki.example.com | |||
</pre> | |||
и передавать его внутреннему серверу: | |||
<pre> | |||
http://192.168.1.30:80 | |||
</pre> | |||
Схематично: | |||
<pre> | |||
Пользователь | |||
│ | |||
│ https://wiki.example.com | |||
▼ | |||
┌─────────────────────┐ | |||
│ Nginx Proxy Manager │ | |||
│ :443 │ | |||
└──────────┬──────────┘ | |||
│ | |||
│ HTTP | |||
▼ | |||
192.168.1.30:80 | |||
│ | |||
▼ | |||
Web-сервис | |||
</pre> | |||
== Получение SSL-сертификата == | |||
При создании Proxy Host переходим во вкладку: | |||
<pre> | |||
SSL | |||
</pre> | |||
Выбираем: | |||
<pre> | |||
Request a new SSL Certificate | |||
</pre> | |||
При необходимости включаем: | |||
* ‘’‘Force SSL’’’ — принудительное перенаправление HTTP → HTTPS; | |||
* ‘’‘HTTP/2 Support’’’ — поддержку HTTP/2; | |||
* ‘’‘HSTS’’’ — только если понимаем последствия его использования. | |||
После сохранения Nginx Proxy Manager автоматически запросит сертификат Let’s Encrypt. | |||
Для стандартной HTTP-проверки Let’s Encrypt домен должен указывать на внешний IP сервера, а TCP-порт ‘’‘80’’’ должен быть доступен извне. | |||
== Управление контейнером == | |||
=== Остановить Nginx Proxy Manager === | |||
<syntaxhighlight lang="bash"> | |||
cd /opt/nginx-proxy-manager | |||
docker compose down | |||
</syntaxhighlight> | |||
=== Запустить === | |||
<syntaxhighlight lang="bash"> | |||
docker compose up -d | |||
</syntaxhighlight> | |||
=== Перезапустить === | |||
<syntaxhighlight lang="bash"> | |||
docker compose restart | |||
</syntaxhighlight> | |||
=== Посмотреть журнал === | |||
<syntaxhighlight lang="bash"> | |||
docker compose logs -f | |||
</syntaxhighlight> | |||
=== Проверить состояние === | |||
<syntaxhighlight lang="bash"> | |||
docker compose ps | |||
</syntaxhighlight> | |||
== Обновление Nginx Proxy Manager == | |||
Перед обновлением рекомендуется сделать резервную копию каталога: | |||
<pre> | |||
/opt/nginx-proxy-manager | |||
</pre> | |||
Затем переходим в каталог: | |||
<syntaxhighlight lang="bash"> | |||
cd /opt/nginx-proxy-manager | |||
</syntaxhighlight> | |||
Загружаем актуальный Docker-образ: | |||
<syntaxhighlight lang="bash"> | |||
docker compose pull | |||
</syntaxhighlight> | |||
Пересоздаём контейнер: | |||
<syntaxhighlight lang="bash"> | |||
docker compose up -d | |||
</syntaxhighlight> | |||
После обновления проверяем: | |||
<syntaxhighlight lang="bash"> | |||
docker compose ps | |||
</syntaxhighlight> | |||
и журнал: | |||
<syntaxhighlight lang="bash"> | |||
docker compose logs --tail=100 | |||
</syntaxhighlight> | |||
== Резервное копирование == | |||
Основные данные установки находятся в каталогах: | |||
<pre> | |||
/opt/nginx-proxy-manager/data | |||
/opt/nginx-proxy-manager/letsencrypt | |||
</pre> | |||
Для резервного копирования желательно сохранить весь каталог: | |||
<pre> | |||
/opt/nginx-proxy-manager/ | |||
</pre> | |||
В нём находятся конфигурация Nginx Proxy Manager, база данных, SSL-сертификаты и файл Docker Compose. | |||
== Итог == | |||
После установки получаем централизованный reverse proxy: | |||
<pre> | |||
INTERNET | |||
│ | |||
┌──────┴──────┐ | |||
│ │ | |||
:80 :443 | |||
│ │ | |||
└──────┬──────┘ | |||
▼ | |||
┌─────────────────────┐ | |||
│ Nginx Proxy Manager │ | |||
│ Docker │ | |||
└──────────┬──────────┘ | |||
│ LAN | |||
┌───────────────┼───────────────┐ | |||
▼ ▼ ▼ | |||
Wiki Cloud Matrix | |||
192.168.1.x 192.168.1.x 192.168.1.x | |||
</pre> | |||
Теперь новые внутренние веб-сервисы можно публиковать через HTTPS практически полностью из графического интерфейса Nginx Proxy Manager. | |||
Текущая версия от 21:21, 31 августа 2026
Установка Nginx Proxy Manager в Docker
‘’‘Nginx Proxy Manager (NPM)’’’ — удобная графическая оболочка для управления реверсивным прокси-сервером Nginx.
С его помощью можно:
- публиковать внутренние веб-сервисы в Интернет;
- направлять разные домены и поддомены на разные серверы;
- автоматически получать SSL-сертификаты Let’s Encrypt;
- управлять HTTPS через веб-интерфейс;
- создавать перенаправления;
- ограничивать доступ к отдельным сервисам.
В результате схема работы выглядит примерно так:
INTERNET
│
HTTP / HTTPS
80 / 443
│
▼
┌─────────────────────┐
│ Nginx Proxy Manager │
│ │
│ Docker │
└──────────┬──────────┘
│
┌───────────┼───────────┐
│ │ │
▼ ▼ ▼
Web #1 Web #2 Web #3
192.168.1.x 192.168.1.x 192.168.1.x
Требования
Для установки потребуется сервер или виртуальная машина с Linux.
В данной инструкции предполагается использование Debian/Ubuntu.
Также необходимо убедиться, что порты:
- ‘’‘80/TCP’’’ — HTTP;
- ‘’‘443/TCP’’’ — HTTPS;
- ‘’‘81/TCP’’’ — панель управления Nginx Proxy Manager
не заняты другими сервисами.
Проверить используемые порты можно командой:
ss -tulpn
Обновление системы
Сначала обновляем список пакетов и установленные пакеты:
apt update && apt upgrade -y
При необходимости устанавливаем дополнительные сетевые утилиты:
apt install net-tools curl ca-certificates -y
Установка Docker
Для актуальных установок рекомендуется использовать официальный репозиторий Docker.
Добавляем ключ репозитория:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
Добавляем репозиторий Docker:
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Обновляем список пакетов:
apt update
Устанавливаем Docker Engine и Docker Compose:
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Проверяем версию Docker:
docker --version
И Docker Compose:
docker compose version
Проверка Docker
Проверяем состояние службы:
systemctl status docker
Если Docker не запущен:
systemctl start docker
Добавляем Docker в автозагрузку:
systemctl enable docker
Для дополнительной проверки можно запустить тестовый контейнер:
docker run --rm hello-world
Если установка выполнена правильно, Docker загрузит тестовый образ и выведет сообщение об успешном запуске.
Установка Nginx Proxy Manager
Создадим отдельный каталог для Nginx Proxy Manager:
mkdir -p /opt/nginx-proxy-manager
cd /opt/nginx-proxy-manager
Создаём файл Docker Compose:
nano docker-compose.yml
Добавляем следующую конфигурацию:
services:
app:
image: 'jc21/nginx-proxy-manager:2.15.1'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Сохраняем файл:
Ctrl + O Enter Ctrl + X
В данной конфигурации используется встроенная база данных SQLite, поэтому отдельный контейнер MariaDB для обычной установки не требуется.
Запуск Nginx Proxy Manager
Запускаем контейнеры:
docker compose up -d
Проверяем их состояние:
docker compose ps
Также можно посмотреть непосредственно запущенные Docker-контейнеры:
docker ps
Nginx Proxy Manager должен отображаться со статусом:
Up
Первый запуск может занять некоторое время.
При необходимости посмотреть журнал запуска:
docker compose logs -f
Выход из просмотра журнала:
Ctrl + C
Вход в панель управления
Открываем браузер и переходим по адресу:
http://IP_СЕРВЕРА:81
Например:
http://192.168.1.20:81
После первого входа необходимо настроить учётную запись администратора согласно интерфейсу текущей версии Nginx Proxy Manager.
‘’‘Обязательно используйте собственный надёжный пароль администратора.’’’
Назначение портов
| Порт | Протокол | Назначение
80 TCP Входящие HTTP-запросы - 443 TCP Входящие HTTPS-запросы - 81 TCP Web-интерфейс администратора } Создание первого Proxy HostПосле входа в Nginx Proxy Manager открываем: Hosts → Proxy Hosts → Add Proxy Host Указываем:
|
|---|