У вас есть VPS с пятью-шестью службами Docker: Nextcloud, Uptime Kuma, блог на Ghost, возможно, Vaultwarden. Один публичный IP. И вы хотите, чтобы каждая была на своём поддомене с HTTPS, без ручного редактирования конфигурационных файлов Nginx при каждом добавлении контейнера. Именно эту задачу и призван решать Nginx Proxy Manager.
Это обзор и полная настройка Nginx Proxy Manager на VPS в одном руководстве. Nginx Proxy Manager (NPM) — это Docker-приложение, оборачивающее Nginx в веб-интерфейс: вы направляете поддомены на серверные контейнеры и запрашиваете сертификаты Let's Encrypt через панель управления вместо написания директив вручную. Руководство предназначено для тех, кто размещает сервисы самостоятельно, и системных администраторов, которые уже используют Docker и теперь нуждаются в обратном прокси, не требующем возни с nginx.conf.
К концу вы поймёте, подходит ли NPM для вашего случая, у вас будет он запущен с HTTPS на вашем VPS, и вы будете знать критерии перехода на Caddy или Traefik, когда NPM перестанет быть подходящим инструментом.
Кратко
- Что такое NPM: Docker-приложение, которое добавляет веб-интерфейс поверх Nginx для управления прокси-хостами и автоматическим HTTPS от Let's Encrypt. Оно подходит тем, кто хочет графический интерфейс и держит небольшой, довольно статичный набор служб.
- Компромиссы: конфигурация хранится в базе данных SQLite, поэтому её нельзя вести под контролем версий или сравнивать как конфигурационный файл. По состоянию на 12 июля 2026 года последний тегированный релиз подвержен CVE-2026-40519, поэтому для новых развёртываний следует дождаться тегированного релиза с исправлением. Его админ-панель на порту 81 — это главное, что нужно защитить.
- Подбор ресурсов: Сам NPM в простое потребляет около 50 MB RAM. VPS с 1 GB — это практический минимум; 2 GB комфортны, когда вы добавляете за ним службы.
- Когда переходить: оставайтесь на NPM для небольшого, в основном статичного набора, где важен графический интерфейс. Используйте Caddy, когда хотите конфигурацию как код и меньший расход ресурсов. Используйте Traefik, когда частые изменения контейнеров делают автообнаружение Docker более ценным, чем ручная регистрация хостов.
Что не охватывает это руководство
Это руководство по развёртыванию на VPS, а не справочник. Чтобы сохранить фокус, следующее выходит за рамки:
- Глубокая настройка директив Nginx (пользовательские блоки location сверх того, что предоставляет интерфейс NPM).
- Архитектура балансировки нагрузки в масштабе.
- Сравнение ingress-решений Kubernetes.
- NPM на Windows.
- Путь через Cloudflare Tunnel для конфигураций без статического IP.
Что делает Nginx Proxy Manager (и где он вас подводит)
Nginx Proxy Manager — это Docker-приложение, которое под капотом запускает Nginx и добавляет сверху веб-панель. Вы создаёте прокси-хосты (поддомен к серверному контейнеру и порту) и запрашиваете сертификаты Let's Encrypt через формы вместо конфигурационных файлов. Оно подходит для небольшого, довольно статичного набора самостоятельно размещаемых приложений на одном VPS.
Помимо базовых функций, панель также управляет списками доступа и сырой пересылкой потоков TCP/UDP. Для набора приложений на одном VPS это настоящее удобство: вы добавляете контейнер, открываете панель, направляете на него поддомен, кликаете для выпуска сертификата. Готово.
Главный компромисс в том, что эталонная конфигурация NPM по умолчанию хранится в базе данных SQLite. NPM действительно генерирует читаемые файлы Nginx в /data/nginx/proxy_host/, но эти файлы — сгенерированные артефакты, а не декларативная конфигурация, которую вы редактируете и держите под контролем версий. Их можно изучить, но они не являются полноценной заменой Caddyfile или меткам Traefik, и надёжный способ воспроизвести развёртывание — восстановить тома данных и сертификатов NPM. Для небольшого статичного набора это может быть приемлемо. Для инфраструктурного рабочего процесса на основе Git это реальное ограничение.
По состоянию на 12 июля 2026 года последний тегированный релиз — это v2.15.1, опубликованный 3 июня 2026 года. Проект остаётся активным и распространяется под лицензией MIT, но его текущее положение с безопасностью требует важной оговорки: NVD перечисляет версии с 2.9.14 по 2.15.1 как подверженные CVE-2026-40519, уязвимости инъекции команд с аутентификацией, исправленной в коммите a5db5ed но пока не включённой в более новый тегированный релиз. Перед развёртыванием проверьте страницу релизов и используйте первую тегированную версию, которая содержит это исправление. NPM поддерживается, но v2.15.1 в настоящее время нельзя описывать как полностью пропатченный.
По расходу ресурсов NPM в простое потребляет примерно 50 MB RAM согласно сравнению обратных прокси от byte-guard. Это достаточно мало, чтобы NPM почти никогда не был тем, что нагружает ваш VPS. Нагружают его службы за ним.
Моё мнение: NPM — разумный выбор в 2026 году, если вам нужен графический интерфейс и вы держите небольшой набор Docker. Если вы живёте в контроле версий и хотите держать конфигурацию прокси в Git, посмотрите на Caddy. Решающий фактор — конфигурация на базе SQLite, а не какие-то проблемы с самим проксированием.
NPM жертвует переносимостью конфигурации ради графического интерфейса. Этот размен приемлем для небольшого статичного набора и раздражает при рабочем процессе на основе Git.
NPM против Caddy против Traefik: какой обратный прокси подходит вашему VPS
Три инструмента различаются по четырём осям, которые определяют выбор: как вы их настраиваете, как они обрабатывают HTTPS, как они масштабируются с числом служб и сколько RAM потребляют в простое. Вот сравнение.
| Параметр | Менеджер прокси Nginx | Caddy | Traefik |
|---|---|---|---|
| Модель конфигурации | Веб-интерфейс, хранение в SQLite | Caddyfile (текст, под контролем версий) | Метки Docker / YAML |
| Автоматический HTTPS | Да, запрос на каждый хост в интерфейсе | Да, по умолчанию, без настройки | Да, требует настройки резолвера ACME |
| Автообнаружение Docker | No | No | Да, через метки контейнеров |
| RAM в простое | ~50 MB | ~30 MB | ~80 MB |
| Лучше всего подходит для | Пользователей графического интерфейса, небольших/статичных наборов | Конфигурации как кода, минимального расхода ресурсов | Динамических наборов Docker с частыми изменениями контейнеров |
Показатели RAM в простое — это приблизительные наблюдения из одного сравнения 2026 года, а не фиксированные требования. Фактическое потребление зависит от версии образа, включённых функций, трафика и логирования.
Критерии перехода прямо вытекают из этой таблицы. Если вам нужна панель управления и вы держите небольшое число служб, которые редко меняются, NPM — правильный инструмент. Если вы предпочитаете конфигурацию как код, хотите минимальный расход ресурсов или цените у Caddy автоматическую выдачу и обновление HTTPS без настройки ACME, используйте Caddy. Сам я тянусь к Caddy при развёртывании одного сайта, потому что обработка SSL автоматическая, а Caddyfile короткий. Если вы часто добавляете, удаляете или переразвёртываете контейнеры, автообнаружение Traefik на основе меток избавляет вас от ручной регистрации каждого нового хоста.
Есть также чистый Nginx с Certbot, который некоторые администраторы предпочитают ради точного контроля или развёртываний без Docker. Certbot может автоматизировать обновление сертификатов, но маршрутизацией виртуальных хостов и конфигурацией Nginx вы по-прежнему управляете сами. Если ваша главная причина рассматривать NPM — избежать ручной настройки прокси, то чистый Nginx вряд ли подойдёт лучше.
Одно замечание по выбору: сравнение byte-guard называет Caddy самым лёгким вариантом в этом сравнении, и для новой конфигурации на одном хосте в 2026 году это разумный выбор. Caddy выигрывает в том, что легче NPM, но если вам нужен именно графический интерфейс, это не лучший выбор.
Для более глубокого сопоставления базовых движков см. сравнение Caddy и Nginx на VPS.
Предварительные условия: что вам понадобится
Перед развёртыванием подготовьте следующее. Это короткий список, но пропустите любой пункт — и шаг с сертификатом позже завершится ошибкой.
- VPS с установленными Docker и Docker Compose (подойдёт Ubuntu 22.04 LTS или Debian 12).
- Доменное имя с DNS-записью A (и AAAA, если вы используете IPv6), указывающей на публичный IP вашего VPS.
- SSH-доступ к VPS.
- Порты 80 и 443, открытые в интернет в вашем межсетевом экране.
- Порт 81, доступный только вам, а не открытый публично (рассматривается в разделе о безопасности).
Настройка Nginx Proxy Manager на вашем VPS с помощью Docker Compose
В этом разделе NPM развёртывается с помощью Docker Compose. Как только ваши DNS-записи начнут разрешаться на VPS, настройка самого контейнера будет быстрой, хотя распространение DNS и выпуск сертификата могут занять больше времени.
Настройка использует один файл Docker Compose и однократную команду для создания общей сети Docker. Создайте каталог, создайте сеть, добавьте приведённый ниже docker-compose.yml файл и поднимите контейнер.
Сначала создайте общую сеть Docker:
docker network create proxy
Затем создайте следующий docker-compose.yml :
# docker-compose.yml
services:
npm:
image: 'jc21/nginx-proxy-manager:<PATCHED_VERSION>'
restart: unless-stopped
ports:
- '80:80' # public HTTP
- '443:443' # public HTTPS
- '127.0.0.1:81:81' # admin UI, reachable only from the VPS itself
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- proxy
networks:
proxy:
external: true
Подключите каждый серверный контейнер, до которого NPM должен обращаться по имени службы, к той же внешней proxy сети. Это позволяет NPM разрешать контейнер по имени его службы без публикации порта серверного приложения на VPS.
Делайте резервную копию обоих ./data и ./letsencrypt перед обновлениями. Каталог данных содержит базу данных NPM и сгенерированную конфигурацию, а каталог Let's Encrypt содержит его сертификатный материал.
Несколько замечаний об этом файле. По умолчанию образ использует базу данных SQLite, хранящуюся в ./data томе. Это бэкенд по умолчанию, и он подходит для большинства развёртываний на одном VPS. Если вам нужна внешняя база данных, NPM поддерживает MariaDB/MySQL и PostgreSQL, что означает добавление службы базы данных и соответствующих переменных окружения. Для одного VPS SQLite по-прежнему остаётся самым простым вариантом по умолчанию, если только у вас нет явной причины вынести базу данных из тома данных. Политика restart: unless-stopped означает, что NPM снова поднимается, если VPS перезагружается, а именно этого и хочется для службы, которая стоит перед всем остальным.
Поднимите его и убедитесь, что он работает:
docker compose up -d
docker compose ps
Ожидаемый вывод: контейнер npm в состоянии Up, порты 80 и 443 отображены публично, а порт 81 привязан только к 127.0.0.1. Первый запуск занимает пару минут, пока NPM генерирует ключ JWT, инициализирует базу данных и создаёт пользователя-администратора по умолчанию. официальная документация по настройке описывает эту последовательность первого запуска.
Создайте SSH-туннель со своего локального компьютера, прежде чем открывать административный интерфейс:
ssh -L 8181:127.0.0.1:81 user@your-vps
Затем откройте http://127.0.0.1:8181 в браузере. На новой установке войдите с [email protected] и changeme, затем сразу замените стандартный email и пароль. Не делайте панель управления публично доступной, пока активны стандартные учётные данные.
После смены учётных данных администратора добавьте свой первый прокси-хост:
- В панели управления перейдите в Hosts, затем Proxy Hosts, затем Add Proxy Host.
- Задайте Domain Name на ваш поддомен (например,
cloud.example.com). - Задайте Forward Hostname / IP на имя серверного контейнера или IP, а Forward Port на порт, который он слушает.
- Сохраните. Прокси-хост появляется в списке, и трафик на этот поддомен теперь достигает вашего контейнера.
Если вы параллельно используете интерфейс управления Docker, применяется тот же шаблон: точно так же направьте поддомен на инструмент управления контейнерами и сделайте то же самое для стеком мониторинга Prometheus и Grafana который вы хотите разместить за прокси.
Настройка автоматического HTTPS для поддомена
В этом разделе вы получите действительный, автоматически обновляемый сертификат Let's Encrypt для вашего поддомена. Предварительное условие, на котором люди спотыкаются: DNS-запись A для этого поддомена уже должна указывать на ваш VPS, а порт 80 должен быть доступен из интернета, поскольку Let's Encrypt проверяет домен, подключаясь к нему обратно.
После создания прокси-хоста запросите сертификат:
- Отредактируйте прокси-хост, откройте вкладку SSL .
- В разделе Сертификат SSL, выберите Request a new SSL Certificate.
- Включить Force SSL и HTTP/2 Support. Включайте HSTS только после того, как убедитесь, что HTTPS работает корректно, поскольку браузеры могут кэшировать политику и усложнить восстановление после ошибки в сертификате или конфигурации прокси.
- Согласитесь с условиями Let's Encrypt и сохраните.
По умолчанию NPM использует проверку HTTP-01 для имён без подстановочного знака, проверяя каждое запрошенное имя хоста по порту 80. Сертификат может содержать несколько имён без подстановочного знака, но HTTP-01 не может выпускать сертификаты с подстановочным знаком. Имена с подстановочным знаком, такие как *.example.com требуют проверки DNS-01 с поддерживаемым DNS-провайдером. Для обычной конфигурации «один поддомен на службу» HTTP-01 — это всё, что нужно, и обновления происходят автоматически.
Если запрос сертификата завершается ошибкой, сначала проверьте порт 80. Частые причины включают недоступный порт 80, неверное правило облачного межсетевого экрана или группы безопасности и DNS, распространение которого ещё не завершилось. Let's Encrypt не может проверить домен, до которого не может достучаться.
Защита админ-панели NPM на VPS
Административный интерфейс на порту 81 — это главная уязвимая точка развёртывания NPM, и этот раздел её защищает. Это эксплуатационное усиление защиты, а не аудит безопасности: три вещи, сделанные один раз, и профиль рисков резко снижается.
Во-первых, и это самое важное, держите порт 81 привязанным к 127.0.0.1 как показано в файле Docker Compose. Обращайтесь к панели управления через SSH-туннель, описанный ранее. Если вам нужен постоянный удалённый доступ, сделайте административный интерфейс доступным только через приватный VPN. Не публикуйте порт 81 на публичном IP VPS.
Во-вторых, включите двухфакторную аутентификацию TOTP для вашей учётной записи администратора. NPM добавил 2FA на основе TOTP в версии 2.13.6, поэтому любая актуальная установка её имеет. Включите её.
В-третьих, держите NPM обновлённым и проверяйте точный релиз, а не предполагайте, что тег latest безопасен. CVE-2026-40519 затрагивает версии с 2.9.14 по 2.15.1 и может позволить удалённое выполнение кода с аутентификацией через вредоносные учётные данные DNS-провайдера. CVE-2026-50892 затрагивает v2.14.0 и может позволить аутентифицированному злоумышленнику получить материал закрытого ключа Let's Encrypt. Более ранняя проблема, CVE-2025-50579, затрагивала v2.12.3 через уязвимость CORS, которая могла раскрыть токены JWT. Практическое правило простое: держите порт 81 приватным, включите двухфакторную аутентификацию, зафиксируйте известную пропатченную версию и изучите бюллетени безопасности перед обновлением.
Порт 81 остаётся приватным, а NPM остаётся обновлённым. Сделайте эти две вещи, и основными известными рисками станет гораздо проще управлять для обычной конфигурации на одном VPS.
Подбор ресурсов VPS для Nginx Proxy Manager
Сам NPM лёгкий; вопрос подбора ресурсов на самом деле про NPM плюс службы, стоящие за ним. Расход прокси в простое редко становится ограничением. Экземпляр Nextcloud или блог на Ghost будут использовать больше ресурсов, чем сам прокси.
Вот как уровни распределяются на практике:
- Минимальный практический уровень: 1 GB RAM, 1 vCPU и 10 GB хранилища. Один стороннее руководство по подбору ресурсов использует тот же базовый уровень, но рассматривайте его как ориентир для планирования, а не как официальное требование NPM. Его достаточно для NPM, операционной системы и нескольких лёгких служб, но он оставляет ограниченный запас.
- Комфортно: 2 GB RAM, 1 vCPU, 20 GB хранилища. NPM плюс от трёх до пяти служб с запасом. Это оптимальная точка для большинства тех, кто размещает сервисы самостоятельно.
- Уровень повыше: 4 GB RAM, 2 vCPU. Для восьми-двенадцати служб или конфигурации со значимым трафиком, где вам нужен запас CPU для завершения TLS.
Величина, на которую вы ориентируетесь при подборе, — это сумма проксируемых приложений, а не NPM. Сложите объёмы RAM служб, которые вы намерены запустить, добавьте сверху небольшие накладные расходы прокси в простое и выберите уровень выше этого с запасом.
Подбор сервера — это простая часть. Запуск NPM всё ещё означает подготовку VPS, установку Docker, загрузку образа и прохождение настройки первого запуска. Если вы предпочли бы пропустить шаги подготовки, в маркетплейсе Cloudzy есть развёртывание в один клик развёртывание Nginx Proxy Manager на VPS с NVMe. Оно поднимает контейнер на новом сервере, так что вы сразу переходите к панели управления и своему первому прокси-хосту. В любом случае вы ориентируетесь на приведённые выше уровни ресурсов.
Часто задаваемые вопросы
В чём разница между Nginx и Nginx Proxy Manager?
Nginx — это сам веб-сервер и движок обратного прокси, который вы настраиваете, редактируя текстовые файлы. Nginx Proxy Manager — это Docker-приложение, которое под капотом запускает Nginx и добавляет сверху веб-интерфейс, так что вы управляете прокси-хостами и сертификатами Let's Encrypt через панель управления вместо написания конфигурационных файлов. NPM — это слой графического интерфейса; Nginx — движок, выполняющий работу.
Стоит ли по-прежнему использовать Nginx Proxy Manager в 2026 году?
Да, для пользователей, предпочитающих графический интерфейс и держащих небольшой набор Docker, но только после того, как вы убедитесь, что развёртываемый образ включает последние исправления безопасности. По состоянию на 12 июля 2026 года v2.15.1 — это последний тегированный релиз, и NVD перечисляет его как подверженный CVE-2026-40519. Если вы предпочитаете конфигурацию как код, Caddy остаётся более подходящим; конфигурация NPM на базе SQLite — это его главное эксплуатационное ограничение.
Каков минимальный объём RAM для Nginx Proxy Manager?
Сам NPM в простое потребляет примерно 50 MB RAM. VPS с 1 GB — это практический минимум, которого достаточно для NPM плюс пары лёгких служб. 2 GB комфортны, когда вы добавляете больше проксируемых приложений. Реальные требования к RAM определяются службами за NPM, а не самим NPM.
Стоит ли открывать порт 81 в интернет?
Нет. Держите порт 81 привязанным к localhost и обращайтесь к нему через SSH-туннель или сделайте его доступным только через приватный VPN. Не публикуйте административный интерфейс на публичном IP VPS.
Можно ли запустить Nginx Proxy Manager без Docker?
Нет. NPM распространяется и спроектирован как контейнер Docker, и поддерживаемой установки без Docker не существует. Если вы не можете или не хотите запускать Docker, используйте вместо этого чистый Nginx с Certbot или Caddy как единый бинарный файл.
Поддерживает ли Nginx Proxy Manager сертификаты с подстановочным знаком?
Да, через проверку DNS-01 с настроенным поддерживаемым DNS-провайдером. Стандартные сертификаты для одного имени хоста используют проверку HTTP-01 по порту 80; сертификаты с подстановочным знаком (*.example.com) требуют DNS-01, поскольку центр сертификации проверяет контроль путём записи DNS-записи, а не обращения к одному хосту.