Technical Anshu Головна › Навчальні посібники › Встановлення Nginx Proxy Manager
🐳 Зворотний проксі Docker

Встановлення Nginx Proxy Manager – 2-хвилинний посібник зі встановлення

Наразі ваші сервіси працюють за непристойними адресами, наприклад 192.168.1.50:8080. Менеджер проксі-сервера Nginx перетворює їх на чисті імена, наприклад app.yourdomain.com, за допомогою безкоштовного протоколу HTTPS, який встановлюється за допомогою одного файлу Docker Compose і керується з простої веб-панелі замість файлів конфігурації, написаних від руки.

✍️ Technical Anshu🐳 Docker Compose🎧 Multi-Language Audio
Встановлення Nginx Proxy Manager – 2-хвилинний посібник зі встановлення
🎧 Multi-Language Audio: Video player [Settings] (⚙️) ➔ [Audio Track]

📑Розділи

  1. Що робить зворотний проксі - одні двері для всіх ваших служб
  2. Що вам потрібно перед початком — Docker, домен і доступні порти
  3. Перш ніж будь-що інсталювати, направте DNS свого домену на сервер
  4. Створіть папку та файл docker-compose.yml
  5. Запустіть Nginx Proxy Manager однією командою
  6. Перший вхід – крок адміністратора, який усі помиляються
  7. Створіть свій перший проксі-сервер, поле за полем
  8. Отримайте безкоштовний сертифікат Lets Encrypt HTTPS і ввімкніть Force 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 додайте запис A: ім’я – це лише слово субдомену (наприклад, 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: unless-stopped повертає NPM автоматично після перезавантаження.

4

Запустіть Nginx Proxy Manager

З цієї папки виконайте команду запуску. 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 від NPM — це дороговказ, а не помилка: це означає, що зовнішній світ ідеально досяг NPM, і лише останній внутрішній стрибок — ім’я хоста чи порт — є неправильним. Виправте це поле, а не всі налаштування. Ще одна пастка: якщо служба працює в іншому контейнері Docker, localhost неправильний (у контейнері NPM localhost означає сам NPM) — використовуйте IP-адресу локальної мережі сервера з опублікованим портом або розмістіть обидва контейнери в одній мережі Docker і використовуйте назву контейнера.
7

Отримайте безкоштовний сертифікат HTTPS Lets Encrypt

Робіть це лише після того, як звичайний хост із кроку 6 уже запрацює – HTTPS на зламаному хості надає вам зламаний хост із сертифікатом і вдвічі більше місць для пошуку помилки. Відкрийте той самий проксі-сервер, перейдіть на вкладку SSL, установіть для параметра SSL Certificate значення Request a new SSL Certificate, увімкніть Force SSL і HTTP/2 Support, погодьтеся з умовами використання 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 • Застрягли на якомусь кроці? Запитуйте у коментарях до відео — там вам допоможуть 🙏