Technical Anshu Главная › Руководства › Установка Nginx Proxy Manager
🐳 Обратный прокси-сервер Docker

Установка Nginx Proxy Manager — 2-минутное руководство по установке

Ваши сервисы в настоящее время живут по уродливым адресам, например 192.168.1.50:8080. Nginx Proxy Manager превращает их в чистые имена, такие как app.yourdomain.com, с бесплатным HTTPS, которые устанавливаются с помощью одного файла Docker Compose и управляются с помощью простой веб-панели вместо написанных вручную файлов конфигурации.

✍️ Technical Anshu🐳 Docker Compose🎧 Multi-Language Audio
Установка Nginx Proxy Manager — 2-минутное руководство по установке
🎧 Многоязычное аудио: В видеоплеере нажмите [Настройки] (⚙️) ➔ [Аудиодорожка], чтобы выбрать язык.

📑Главы

  1. Что делает обратный прокси-сервер: одна дверь для всех ваших услуг.
  2. Что вам нужно перед началом работы: Docker, домен и доступные порты.
  3. Перед установкой чего-либо укажите DNS своего домена на сервере.
  4. Создайте папку и файл docker-compose.yml
  5. Запустите Nginx Proxy Manager одной командой
  6. Первый вход в систему – шаг администратора, который все делают неправильно.
  7. Создайте свой первый прокси-хост, поле за полем.
  8. Получите бесплатный сертификат Lets Encrypt HTTPS и включите принудительное SSL

📋 Обзор и пошаговое руководство

1

Что вам нужно перед началом

Прежде чем Nginx Proxy Manager (NPM) сможет работать, должны существовать три вещи. Во-первых, Linux-сервер или ПК с уже установленными и работающими Docker и Docker Compose — NPM работает как контейнер, а не как обычная программа. Во-вторых, доменное имя, DNS которого вы можете редактировать, поскольку у каждого сервиса есть свой поддомен. В-третьих, ваш маршрутизатор или облачный брандмауэр должен иметь возможность перенаправлять порты 80 и 443 на этот компьютер.

📌 Насчет «2 минут» в заголовке: сам запуск контейнера происходит действительно быстро — но только после того, как Docker уже установлен и подготовка, описанная в этом руководстве, завершена. На новой машине выделите достаточно времени для шагов настройки, DNS и сертификата; честный итог длиннее двух минут.
⚠️ При домашнем соединении за CGNAT переадресация портов вообще не работает — никакие настройки внутри NPM это не исправляют. Тогда честные варианты — это общедоступный/статический IP-адрес от вашего интернет-провайдера, небольшой арендованный VPS или вместо этого инструмент туннелирования. Не пропускайте эту проверку: половина всех историй «NPM не работает» на самом деле являются историями «порты никогда не доходили до сервера».
2

Сначала направьте DNS вашего домена на сервер

NPM маршрутизирует трафик по имени, а Lets Encrypt выдает сертификаты только для имен, которые явно указывают на ваш компьютер, поэтому имя должно быть разрешено, прежде чем вы что-либо на нем построите. У вашего регистратора или узла DNS добавьте запись: имя — это только слово поддомена (например, app), а значение — общедоступный IP-адрес вашего сервера. Каждая служба получает свою собственную запись, и все они могут указывать на один и тот же IP-адрес — NPM позже разделяет службы по имени. Во время тестирования установите короткое значение TTL, например 300 секунд, чтобы ошибки исчезали за считанные минуты, а не часы.

Докажите это, прежде чем продолжить: убедитесь, что имя разрешается в ваш общедоступный IP-адрес из внешней сети (например, с вашего телефона с выключенным Wi-Fi). Запрос сертификата против неработающего DNS. Попытки шифрования Lets Encrypt и повторяющиеся неудачи могут ограничить вашу скорость на несколько часов. Порядок имеет значение: сначала DNS, затем прокси-хост, затем сертификат.

3

Создайте папку и создайте файл

Создайте папку для NPM на сервере и сохраните в ней файл ниже как docker-compose.yml. Этот единственный файл представляет собой полную установку. Название изображения является официальным изображением сообщества. Порты 80 и 443 — это общедоступные двери, порт 81 — панель администратора, а на двух томах находится вся ваша установка: ./data содержит базу данных со всеми вашими прокси-хостами, а ./letsencrypt содержит ваши сертификаты. Потеряйте эти две папки, и вы потеряете всю настройку — создайте их резервную копию, как только все заработает.

docker-compose.yml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Строка restart: if-stopped автоматически возвращает NPM после перезагрузки.

4

Запустите прокси-менеджер Nginx.

Из этой папки выполните команду запуска. Docker загружает образ и запускает контейнер в фоновом режиме.

Terminal
docker compose up -d

Проверьте, что он работает:

Terminal
docker ps

Вы должны увидеть контейнер с портами 80, 443 и 81. На небольшом сервере первый запуск занимает минуту или две, пока создается база данных. Если контейнер продолжает перезапускаться, в журналах причина отображается простым языком:

Terminal
docker compose logs

В девяти случаях из десяти цикл перезапуска — это порт, который уже используется чем-то еще на хосте — обычно это старый веб-сервер, который все еще работает.

5

Первый вход в систему — немедленно защитите учетную запись администратора

Откройте админ-панель в браузере своей сети:

Browser Address Bar
http://your-server-ip:81

Сделайте это в первую минуту. В зависимости от сборки NPM либо просит вас заменить общеизвестные данные администратора при первом входе в систему вашим собственным адресом электронной почты и надежным паролем, либо — в более новых сборках без учетной записи по умолчанию — администратора создает тот, кто первым откроет страницу администратора. В любом случае правило одно и то же: создайте свою собственную учетную запись администратора в момент запуска контейнера, прежде чем создавать что-либо еще, и используйте настоящий почтовый ящик — электронные письма NPM, в которых говорится о проблемах с сертификатами.

⚠️ Никогда не оставляйте порт 81 общедоступным, пока вы «закончите это позже». Любой в Интернете, кто первым найдет панель, станет владельцем вашего прокси. Держите панель администратора только в своей сети.
6

Создайте свой первый прокси-хост

В NPM откройте Хосты → Прокси-хосты → Добавить прокси-хост и заполните форму одним предложением — «это имя принадлежит этой внутренней службе»:

Доменные имена: app.yourdomain.com — точное общедоступное имя из шага 2, которое уже должно быть разрешено вашему серверу.
Схема: http для большинства домашних и офисных приложений. Схема описывает соединение между NPM и внутренней службой, а не то, что используют посетители — NPM обеспечивает общедоступное шифрование у двери. Выбирайте https здесь только в том случае, если само внутреннее приложение поддерживает HTTPS.
Переслать имя хоста/IP: внутренний адрес службы, например 192.168.1.50.
Порт пересылки: порт, который фактически прослушивает служба, например 8080, а не 80 или 443; это двери НПМ, а не службы.

Включите параметр Блокировать распространенные эксплойты и нажмите «Сохранить». Проверьте немедленно, открыв имя в браузере — в идеале со своего телефона с отключенным Wi-Fi, чтобы проверить реальный общедоступный путь.

✅ 502 Bad Gateway от NPM — это указатель, а не сбой: это означает, что внешний мир достиг NPM идеально и только последний внутренний переход — имя хоста или порт — неправильный. Исправьте это поле, а не всю настройку. Еще одна ловушка: если служба работает в другом контейнере Docker, localhost неверен (внутри контейнера NPM localhost означает сам NPM) — используйте IP-адрес локальной сети сервера с опубликованным портом или поместите оба контейнера в одну и ту же сеть Docker и используйте имя контейнера.
7

Получите бесплатный HTTPS-сертификат Lets Encrypt

Делайте это только после того, как простой хост из шага 6 уже работает — HTTPS на сломанном хосте дает вам сломанный хост с сертификатом и вдвое больше мест для поиска неисправности. Откройте тот же прокси-хост, перейдите на вкладку SSL, установите для параметра SSL-сертификат значение Запросить новый SSL-сертификат, включите Принудительное SSL и Поддержку HTTP/2, согласитесь с Условиями использования Lets Encrypt и сохраните. Перезагрузите сайт — теперь браузер должен отображать замок на https.

Как это работает: Lets Encrypt доказывает, что вы контролируете имя, запрашивая ваш сервер через общедоступный Интернет через порт 80 показать одноразовый токен (запрос HTTP-01). Вот почему DNS, указывающий на вас, и доступный порт 80 не подлежат обсуждению — если произойдет сбой любого из них, запрос не будет выполнен, и ошибка будет в настройке, а не в Lets Encrypt. Принудительный SSL автоматически перенаправляет каждого посетителя http на https; без него незашифрованная дверь останется открытой рядом с зашифрованной.

📌 Срок действия сертификатов составляет 90 дней, и NPM автоматически продлевает их, обычно примерно за месяц до истечения срока действия, используя то же подтверждение порта 80. Если продление не удалось, сначала проверьте скучные причины: DNS был изменен, переадресация маршрутизатора была удалена или порт 80 заблокирован. Включайте HSTS только после того, как услуга будет одобрена и продление подтверждено — браузеры помнят это твердое обещание в течение нескольких месяцев.

🏷️Переменные и ключевые слова поиска по теме

🔍 Nginx Proxy Manager 🔍 Reverse Proxy 🔍 Docker Compose 🔍 Lets Encrypt 🔍 Free HTTPS 🔍 Proxy Host 🔍 TechnicalAnshu 🔍 Self Hosting 🔍 Subdomain Setup 🔍 Port 80 443 81 🔍 Force SSL 🔍 Home Server
🎙️ Полная расшифровка — нажмите, чтобы развернуть.

__TOK_34__

__TOK_35__

__TOK_36__

❓ Часто задаваемые вопросы

Это руководство на 100 % бесплатно?

__TOK_37__

Могут ли новички следовать этому руководству?

__TOK_38__

Где я могу задать вопросы, если застрял?

__TOK_39__

🚀 Посмотрите полное руководство на YouTube

__TOK_40__

__TOK_41__

▶️ Посмотреть полное видео
Это руководство основано на видео об установке Nginx Proxy Manager от Technical Anshu • Застряли на каком-либо этапе? Спрашивайте в комментариях к видео — там вам помогут 🙏