bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення Nginx Proxy

calendar_month Jul 23, 2026 schedule 20 хв. читання visibility 22 переглядів
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення Nginx Proxy Manager на VPS: Керування Reverse Proxy та SSL через Web UI

TL;DR

У цьому посібнику ми покроково налаштуємо Nginx Proxy Manager (NPM) на вашому VPS. NPM — це потужний інструмент на базі Docker, який спрощує керування зворотними проксі та SSL-сертифікатами (через Let's Encrypt) для ваших веб-сервісів за допомогою зручного веб-інтерфейсу. Ви навчитеся встановлювати Docker, розгортати NPM, налаштовувати проксі-хости для ваших застосунків, отримувати автоматичні SSL-сертифікати та забезпечувати базову безпеку й обслуговування.

  • Налаштування Nginx Proxy Manager для централізованого керування проксі-серверами.
  • Автоматичне отримання та оновлення SSL/TLS-сертифікатів від Let's Encrypt.
  • Керування багатьма доменами та піддоменами через інтуїтивно зрозумілий веб-інтерфейс.
  • Базовий захист сервера та резервне копіювання конфігурації NPM.
  • Актуальні команди для Ubuntu 24.04 LTS та Docker на 2026 рік.
  • Посібник з вибору відповідного VPS-конфігу для ваших завдань.

Що ми налаштовуємо і навіщо

У сучасному світі, де на одному сервері часто розміщується безліч веб-сервісів — від сайтів і блогів до API-серверів і систем керування проєктами — виникає необхідність у централізованому керуванні доступом до них. Саме це завдання вирішує зворотний проксі-сервер. Він виступає посередником між інтернетом та вашими внутрішніми сервісами, спрямовуючи вхідні запити до потрібного застосунку на основі доменного імені або шляху URL.

Nginx Proxy Manager (NPM) — це потужний інструмент, який значно спрощує налаштування та керування Nginx як зворотним проксі. Замість ручного редагування складних конфігураційних файлів Nginx, NPM пропонує інтуїтивно зрозумілий веб-інтерфейс. Через нього ви можете легко додавати нові проксі-хости, керувати SSL/TLS-сертифікатами (зокрема автоматично отримувати їх від Let's Encrypt), налаштовувати перенаправлення, керувати доступом і багато іншого.

У підсумку, після завершення цього посібника, ви отримаєте повністю налаштований Nginx Proxy Manager, здатний маршрутизувати трафік до ваших внутрішніх застосунків, забезпечуючи при цьому безпечне HTTPS-з'єднання для кожного з них. Це дозволить вам легко додавати нові сервіси на ваш VPS, не турбуючись про ручне налаштування Nginx та SSL для кожного з них. Чи то GitLab, Mattermost, Minecraft-сервер з веб-інтерфейсом, нода блокчейну чи ваш власний SaaS-проєкт, NPM стане центральним вузлом для їх публікації в інтернеті.

Які є альтернативи та чому self-hosted на VPS

Існує кілька підходів до керування зворотними проксі та SSL:

  • Ручне налаштування Nginx/Apache: Це класичний метод, що вимагає глибоких знань синтаксису конфігураційних файлів. Він дає максимальну гнучкість, але забирає багато часу і схильний до помилок.
  • Caddy: Сучасний веб-сервер, який автоматично керує SSL-сертифікатами. Caddy простіший у налаштуванні, ніж Nginx, але може бути менш гнучким у деяких складних сценаріях проксіювання.
  • Cloud-managed Load Balancers (AWS ALB, Google Cloud Load Balancer, Azure Application Gateway): Ці рішення пропонують високу доступність, масштабованість та інтегроване керування SSL. Однак вони значно дорожчі, прив'язують вас до конкретного хмарного провайдера і можуть бути надмірними для невеликих та середніх проєктів.
  • Інші Docker-based проксі (Traefik, HAProxy): Traefik особливо популярний в екосистемі Docker завдяки своїй здатності автоматично виявляти та проксіювати сервіси. Однак його налаштування може бути складнішим для новачків порівняно з NPM, який орієнтований на простоту використання через GUI.

Вибір self-hosted рішення, такого як Nginx Proxy Manager на VPS, має низку переваг:

  • Повний контроль: Ви повністю контролюєте інфраструктуру та дані, що критично важливо для конфіденційності та безпеки.
  • Економічність: Вартість VPS часто значно нижча, ніж щомісячні платежі за хмарні Load Balancers, особливо для проєктів з помірним навантаженням.
  • Гнучкість: Ви можете розміщувати будь-які застосунки та сервіси, не обмежуючись специфікою хмарних платформ.
  • Універсальність: Той самий підхід працює на будь-якому VPS від будь-якого провайдера.

NPM ідеально підходить для тих, хто хоче отримати зручність хмарних рішень, але зберегти контроль та економічність self-hosted інфраструктури. Це чудовий вибір для розробників, соло-фаундерів, гравців та криптоентузіастів, які керують власними серверами.

Який VPS-конфіг потрібен для цього завдання

Nginx Proxy Manager сам по собі досить легковажний, оскільки по суті є зручною обгорткою над Nginx та Certbot. Основні вимоги до ресурсів залежатимуть від кількості проксійованих сервісів, обсягу трафіку та складності конфігурацій Nginx. Однак для більшості завдань, де NPM виступає як єдина точка входу для кількох веб-застосунків, вимоги будуть помірними.

Мінімальні вимоги (для 1-5 невеликих сервісів, низький трафік):

  • CPU: 1 vCPU (сучасний процесор, 2.5+ GHz)
  • RAM: 1 GB (для NPM, Docker та базової ОС)
  • Диск: 25-30 GB SSD (для ОС, образів Docker та даних NPM)
  • Мережа: 100 Mbps (мінімум, з необмеженим трафіком або достатнім лімітом)

Рекомендований VPS-план (для 5-20 сервісів, помірний трафік, включаючи легкі застосунки):

  • CPU: 2 vCPU
  • RAM: 2-4 GB
  • Диск: 50-80 GB SSD
  • Мережа: 1 Gbps (з достатнім обсягом трафіку, наприклад, 1-2 TB/міс)

Такий конфіг забезпечить комфортну роботу NPM та кількох контейнерів з вашими застосунками. Наприклад, VPS із зазначеними характеристиками буде хорошим вибором для більшості завдань, описаних у цьому посібнику. При виборі провайдера звертайте увагу на можливість швидкого масштабування ресурсів, якщо ваш проєкт почне активно зростати.

Коли потрібен dedicated, а не VPS

Dedicated сервер може знадобитися, якщо:

  • Ви плануєте розміщувати дуже велику кількість сервісів (сотні) з високим трафіком.
  • Ваші застосунки вимагають максимальної продуктивності CPU або RAM, яку не може забезпечити VPS (наприклад, високонавантажені бази даних, ігрові сервери з великою кількістю гравців).
  • Вам потрібні спеціалізовані апаратні ресурси, такі як GPU або RAID-масиви.
  • Потрібна повна ізоляція від інших клієнтів провайдера для максимальної безпеки або відповідності суворим регуляторним вимогам.

Для більшості сценаріїв, описаних у цьому гайді, VPS більш ніж достатній і значно вигідніший.

Локація: на що впливає

Вибір локації VPS впливає на:

  • Затримка (Latency): Чим ближче сервер до вашої цільової аудиторії, тим менша затримка і швидше завантаження сторінок. Для європейської аудиторії краще вибирати сервери в Європі, для американської — у Північній Америці.
  • Відповідність законодавству: Розміщення даних у певних юрисдикціях може бути вимогою для вашого проєкту (наприклад, GDPR в ЄС).
  • Вартість: Ціни на VPS можуть незначно відрізнятися залежно від регіону.

Зазвичай рекомендується вибирати локацію, яка географічно ближча до основного пулу ваших користувачів.

Підготовка сервера

Перед встановленням Nginx Proxy Manager необхідно провести базове налаштування та захист вашого нового VPS. Ми будемо використовувати Ubuntu 24.04 LTS, яка буде актуальною у 2026 році та є стабільною та широко підтримуваною операційною системою.

1. Підключення по SSH

Підключіться до вашого сервера по SSH, використовуючи облікові дані, надані провайдером (зазвичай логін root та пароль).


ssh root@ВАШ_IP_АДРЕС_VPS

2. Оновлення системи

Насамперед оновіть усі пакети до останніх версій. Це забезпечить наявність усіх патчів безпеки та актуальних версій програмного забезпечення.


sudo apt update -y         # Оновлення списку пакетів
sudo apt upgrade -y        # Оновлення встановлених пакетів
sudo apt autoremove -y     # Видалення невикористовуваних пакетів

3. Створення нового користувача з правами sudo

Робота під користувачем root небезпечна. Створіть нового користувача та надайте йому права sudo.


adduser ВАШЕ_ІМ'Я_КОРИСТУВАЧА          # Створення нового користувача
usermod -aG sudo ВАШЕ_ІМ'Я_КОРИСТУВАЧА # Додавання користувача до групи sudo

Вийдіть із сесії root та увійдіть під новим користувачем:


exit
ssh ВАШЕ_ІМ'Я_КОРИСТУВАЧА@ВАШ_IP_АДРЕС_VPS

4. Налаштування автентифікації за SSH-ключами (рекомендується)

Автентифікація за SSH-ключами значно безпечніша, ніж за паролем. Якщо у вас ще немає пари SSH-ключів, згенеруйте їх на своєму локальному комп'ютері:


ssh-keygen -t ed25519 -b 4096 # Створення нового SSH-ключа (локально)

Потім скопіюйте публічний ключ на ваш VPS. Замініть ВАШЕ_ІМ'Я_КОРИСТУВАЧА та ВАШ_IP_АДРЕСА_VPS на свої дані.


ssh-copy-id ВАШЕ_ІМ'Я_КОРИСТУВАЧА@ВАШ_IP_АДРЕС_VPS # Копіювання публічного ключа

Після цього ви можете вимкнути автентифікацію за паролем у файлі /etc/ssh/sshd_config для підвищення безпеки. Знайдіть рядки PasswordAuthentication yes та PermitRootLogin yes та змініть їх на no.


sudo nano /etc/ssh/sshd_config

Змініть:


#PasswordAuthentication yes
PasswordAuthentication no
PermitRootLogin no

Перезапустіть SSH-сервіс:


sudo systemctl restart sshd

5. Налаштування брандмауера (UFW)

UFW (Uncomplicated Firewall) — це простий інтерфейс для керування iptables. Налаштуємо його, щоб дозволити лише необхідні з'єднання.


sudo apt install ufw -y              # Встановлення UFW
sudo ufw allow OpenSSH               # Дозволити SSH (порт 22)
sudo ufw allow 'Nginx Full'          # Дозволити HTTP (80) та HTTPS (443)
sudo ufw enable                      # Увімкнення брандмауера
sudo ufw status verbose              # Перевірка статусу брандмауера

Вам буде запропоновано підтвердити увімкнення UFW, оскільки це може перервати існуючі SSH-з'єднання. Введіть y та натисніть Enter.

6. Встановлення Fail2Ban

Fail2Ban допомагає захиститися від брутфорс-атак, автоматично блокуючи IP-адреси, з яких здійснюються невдалі спроби входу.


sudo apt install fail2ban -y         # Встановлення Fail2Ban
sudo systemctl enable fail2ban       # Увімкнення автозапуску
sudo systemctl start fail2ban        # Запуск служби

За замовчуванням Fail2Ban вже налаштований для захисту SSH. Ви можете створити файл локальної конфігурації для тонкого налаштування:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

У файлі jail.local ви можете змінити параметри, такі як bantime (час блокування), findtime (період для виявлення спроб) та maxretry (максимальна кількість спроб). Переконайтеся, що секція [sshd] активна (enabled = true).


[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
bantime = 1h

Після будь-яких змін перезапустіть Fail2Ban:


sudo systemctl restart fail2ban

Тепер ваш сервер готовий до встановлення Docker та Nginx Proxy Manager.

Встановлення ПЗ — покроково

Nginx Proxy Manager працює як Docker-контейнер, тому першим кроком буде встановлення Docker та Docker Compose на ваш VPS.

1. Встановлення Docker Engine

Видаліть старі версії Docker, якщо вони є, щоб уникнути конфліктів:


for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done

Встановіть необхідні пакети для встановлення Docker через HTTPS:


sudo apt update -y
sudo apt install ca-certificates curl gnupg -y

Додайте офіційний GPG-ключ Docker:


sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Додайте репозиторій Docker до APT-джерел:


echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Оновіть список пакетів та встановіть Docker Engine (версія актуальна на 2026 рік, наприклад, 26.x):


sudo apt update -y
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Перевірте, що Docker встановлено та він працює:


sudo docker run hello-world # Запуск тестового контейнера

Додайте вашого користувача до групи docker, щоб уникнути використання sudo при кожній команді Docker:


sudo usermod -aG docker $USER # Додавання поточного користувача до групи docker
newgrp docker                 # Застосування змін для поточної сесії

Тепер ви можете виконувати команди Docker без sudo.

2. Встановлення Nginx Proxy Manager за допомогою Docker Compose

Створіть директорію для Nginx Proxy Manager та перейдіть до неї:


mkdir nginx-proxy-manager
cd nginx-proxy-manager

Створіть файл docker-compose.yml. Це основний файл конфігурації для Docker Compose, який описує сервіси, мережі та томи.


nano docker-compose.yml

Вставте наступний вміст у файл. Зверніть увагу, що ми використовуємо актуальну версію NPM (наприклад, 2.15.0 на 2026 рік) та базу даних MariaDB. Ми також мапуємо порти 80, 443 та 81 на хостову машину, щоб NPM міг обробляти HTTP/HTTPS трафік та надавати свій веб-інтерфейс.


version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:2.15.0' # Актуальна версія NPM на 2026 рік
    restart: always
    ports:
      - '80:80'    # HTTP порт
      - '443:443'  # HTTPS порт
      - '81:81'    # Порт веб-інтерфейсу NPM
    environment:
      DB_MYSQL_HOST: 'db'
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: 'npm'
      DB_MYSQL_PASSWORD: 'npm_password_secure' # Замініть на надійний пароль
      DB_MYSQL_NAME: 'npm'
    volumes:
      - ./data:/data # Збереження даних конфігурації та SSL
      - ./letsencrypt:/etc/letsencrypt # Збереження сертифікатів Let's Encrypt
    depends_on:
      - db
  db:
    image: 'mariadb:11.3' # Актуальна стабільна версія MariaDB на 2026 рік
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'root_password_secure' # Замініть на надійний пароль
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm_password_secure' # Повинен збігатися з DB_MYSQL_PASSWORD вище
    volumes:
      - ./data/mysql:/var/lib/mysql # Збереження даних бази даних

Важливо: Обов'язково замініть npm_password_secure та root_password_secure на свої власні, надійні паролі. Використовуйте різні паролі для користувача NPM та користувача root MariaDB.

3. Запуск Nginx Proxy Manager

Збережіть файл (Ctrl+O, Enter, Ctrl+X) та запустіть контейнери Docker Compose:


docker compose up -d # Запуск контейнерів у фоновому режимі

Ця команда завантажить необхідні Docker-образи (Nginx Proxy Manager та MariaDB), створить контейнери, налаштує мережу та запустить їх. Процес може зайняти кілька хвилин залежно від швидкості вашого інтернет-з'єднання.

4. Перевірка статусу контейнерів

Переконайтеся, що обидва контейнери запущені та працюють:


docker compose ps

Ви повинні побачити статус Up для обох сервісів (app та db).

Тепер Nginx Proxy Manager встановлено та він готовий до початкового налаштування через свій веб-інтерфейс.

Конфігурація

Після успішного встановлення Nginx Proxy Manager настав час налаштувати його для керування вашими веб-сервісами та SSL-сертифікатами. Весь процес відбуватиметься через зручний веб-інтерфейс.

1. Перший вхід до Nginx Proxy Manager

Відкрийте ваш веб-браузер та перейдіть за адресою http://ВАШ_IP_АДРЕС_VPS:81. Ви побачите сторінку входу до Nginx Proxy Manager.

Стандартні облікові дані для першого входу:

Після входу система одразу запропонує вам змінити ці дані. Негайно змініть їх на свої, більш безпечні логін та пароль. Також вкажіть ваше справжнє ім'я.

2. Налаштування першого проксі-хоста

Тепер давайте налаштуємо ваш перший проксі-хост. Це дозволить вам отримати доступ до внутрішнього сервісу (наприклад, веб-сервера, запущеного на порту 3000 на цьому ж VPS) за доменним ім'ям із SSL-сертифікатом.

Припустимо, у вас є домен example.com, і ви хочете, щоб ваш сервіс був доступний за app.example.com. Переконайтеся, що DNS-запис типу A для app.example.com вказує на IP-адресу вашого VPS.

  1. У веб-інтерфейсі NPM перейдіть до розділу "Hosts" -> "Proxy Hosts".
  2. Натисніть кнопку "Add Proxy Host".
  3. Вкладка "Details":
    • Domain Names: Введіть app.example.com (або ваш домен/піддомен).
    • Scheme: Виберіть http (якщо ваш внутрішній сервіс не використовує SSL) або https (якщо використовує).
    • Forward Hostname / IP: Введіть 127.0.0.1 (якщо сервіс на тому ж VPS) або внутрішню IP-адресу іншого сервера.
    • Forward Port: Введіть порт, на якому працює ваш внутрішній сервіс (наприклад, 3000).
    • Block Common Exploits: Рекомендується увімкнути для додаткової безпеки.
    • Websockets Support: Увімкніть, якщо ваш сервіс використовує вебсокети (наприклад, чати, real-time застосунки).
  4. Вкладка "SSL":
    • SSL Certificate: Виберіть "Request a new SSL Certificate".
    • Force SSL: Увімкніть, щоб усі HTTP-запити автоматично перенаправлялися на HTTPS.
    • Email Address for Let's Encrypt: Введіть свою дійсну адресу електронної пошти.
    • I Agree to the Let's Encrypt Terms of Service: Позначте цей пункт.
    • Use a DNS Challenge (optional): Якщо ви не можете відкрити порти 80/443 для NPM або хочете використовувати wildcard-сертифікати, виберіть цей метод. Для більшості випадків достатньо HTTP Challenge.
  5. Натисніть "Save".

NPM зв'яжеться з Let's Encrypt, отримає та встановить SSL-сертифікат для вашого домену. Це може зайняти кілька секунд. Після успішної видачі сертифіката статус хоста зміниться на "Online" із зеленим значком замка.

3. Перевірка працездатності

Тепер ви можете перевірити ваш сервіс, перейшовши за адресою https://app.example.com (замініть на свій домен) у браузері. Ви повинні побачити вміст вашого внутрішнього сервісу, а також зелений замок в адресному рядку, що підтверджує наявність дійсного SSL-сертифіката.

Ви також можете використовувати curl для перевірки:


curl -I https://app.example.com # Перевірка HTTP-заголовків

Ви повинні побачити заголовки, що вказують на перенаправлення (якщо увімкнено Force SSL) та успішне з'єднання за HTTPS.

4. Розширені налаштування (опціонально)

Користувацькі директиви Nginx

Якщо вам потрібні специфічні налаштування Nginx, яких немає у веб-інтерфейсі, ви можете додати їх на вкладці "Advanced" при редагуванні проксі-хоста. Наприклад, для збільшення ліміту на розмір завантажуваних файлів:


client_max_body_size 100M;

Ці директиви будуть вставлені в блок server для даного проксі-хоста.

Списки доступу

NPM дозволяє створювати списки контролю доступу, щоб обмежити доступ до ваших сервісів за IP-адресою або вимагати базову HTTP-автентифікацію. Це корисно для внутрішніх інструментів або тестових середовищ.

  1. Перейдіть до "Access Lists".
  2. Натисніть "Add Access List".
  3. Налаштуйте правила (наприклад, "Allow" для конкретних IP, "Deny" для всіх інших) або додайте облікові дані "Basic Auth".
  4. Застосуйте список доступу до потрібного проксі-хоста на вкладці "Advanced".

Після налаштування кожного проксі-хоста, NPM автоматично оновлює конфігурацію Nginx та перезавантажує його, забезпечуючи миттєве застосування змін.

Резервне копіювання та обслуговування

Резервне копіювання та регулярне обслуговування — критично важливі аспекти для будь-якої виробничої системи, включно з Nginx Proxy Manager. Втрата конфігурації або SSL-сертифікатів може призвести до простою всіх ваших веб-сервісів.

1. Що резервувати

Для Nginx Proxy Manager необхідно регулярно резервувати наступні компоненти:

  • Директорія ./data: Містить всю конфігурацію NPM (базу даних SQLite, якщо ви її використовуєте, або дані для підключення до зовнішньої БД) та дані Let's Encrypt. Це найважливіше.
  • Директорія ./letsencrypt: Містить усі ваші SSL-сертифікати. Хоча їх можна перевипустити, наявність резервної копії прискорює відновлення.
  • Файл docker-compose.yml: Містить опис ваших Docker-сервісів та їх конфігурацію.

У нашому випадку, оскільки ми використовуємо MariaDB в окремому контейнері, дані бази даних зберігаються в ./data/mysql. Усі критично важливі дані вже охоплюються резервною копією директорії ./data.

2. Простий скрипт авторезервування

Створимо простий скрипт, який створюватиме архів з необхідними даними та зберігатиме його.

Створіть файл backup_npm.sh у домашній директорії вашого користувача:


nano ~/backup_npm.sh

Вставте наступний вміст. Цей скрипт зупинить контейнери NPM (щоб уникнути пошкодження БД під час резервного копіювання), створить архів, а потім знову запустить їх.


#!/bin/bash

# Директорія, де знаходиться ваш docker-compose.yml для NPM
NPM_DIR="/home/$USER/nginx-proxy-manager"
BACKUP_DIR="/var/backups/npm" # Директорія для зберігання резервних копій
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/npm_backup_${DATE}.tar.gz"

echo "Запуск резервного копіювання Nginx Proxy Manager о ${DATE}..."

# Створюємо директорію для резервних копій, якщо її немає
sudo mkdir -p ${BACKUP_DIR}
sudo chown $USER:$USER ${BACKUP_DIR} # Переконайтеся, що користувач має права на запис

# Переходимо в директорію NPM
cd ${NPM_DIR} || { echo "Помилка: Директорія NPM не знайдена!"; exit 1; }

# Зупиняємо сервіси NPM для консистентного резервного копіювання
echo "Зупинка сервісів NPM..."
docker compose stop

# Створюємо архів з даними NPM та letsencrypt
echo "Створення архіву резервної копії..."
tar -czf ${BACKUP_FILE} data docker-compose.yml

# Запускаємо сервіси NPM назад
echo "Запуск сервісів NPM..."
docker compose start

# Видаляємо старі резервні копії (наприклад, старші 7 днів)
echo "Очищення старих резервних копій..."
find ${BACKUP_DIR} -type f -name "npm_backup_*.tar.gz" -mtime +7 -delete

echo "Резервне копіювання завершено: ${BACKUP_FILE}"

Зробіть скрипт виконуваним:


chmod +x ~/backup_npm.sh

Протестуйте скрипт, запустивши його вручну:


~/backup_npm.sh

Перевірте, що файл резервної копії створено в /var/backups/npm/.

3. Налаштування Cron для автоматичного резервного копіювання

Додайте скрипт до планувальника завдань Cron, щоб він запускався автоматично (наприклад, щодня о 3:00 ночі).


crontab -e

Додайте наступний рядок у кінець файлу. Він запускатиме скрипт щодня о 3:00 ранку.


0 3 * * * /home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/backup_npm.sh >> /var/log/npm_backup.log 2>&1

Замініть ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ на ім'я вашого користувача.

4. Куди зберігати резервні копії (зовнішнє сховище)

Зберігати резервні копії на тому ж сервері, що й оригінальні дані, ризиковано. Якщо сервер вийде з ладу, ви втратите і дані, і резервні копії. Рекомендується використовувати зовнішнє сховище:

  • Хмарне сховище об'єктів (S3-сумісне): AWS S3, Backblaze B2, DigitalOcean Spaces, MinIO. Це надійні та масштабовані рішення. Ви можете використовувати утиліти на кшталт rclone для автоматичної синхронізації локальних резервних копій з хмарою.
  • Окремий VPS: Ви можете налаштувати другий, невеликий VPS та використовувати rsync або scp для копіювання резервних копій туди.
  • Локальний NAS/ПК: Якщо ваш VPS має публічний IP, ви можете налаштувати VPN-тунель та копіювати резервні копії на домашній NAS або ПК.

Приклад інтеграції rclone у скрипт резервного копіювання (після рядка echo "Backup complete: ${BACKUP_FILE}"):


# Синхронізація з S3-сумісним сховищем (передбачається, що rclone вже налаштовано)
echo "Синхронізація резервних копій з віддаленим сховищем..."
rclone copy ${BACKUP_DIR} remote:npm-backups --min-age 1d

5. Оновлення: rolling vs maintenance window

Регулярні оновлення Docker-образів Nginx Proxy Manager та MariaDB важливі для отримання нових функцій, виправлень помилок та патчів безпеки.

  • Rolling updates: Для NPM це не зовсім "rolling", оскільки це один екземпляр. Але ви можете оновлювати його в будь-який час.
  • Maintenance window: Рекомендується планувати оновлення на час найменшої активності користувачів, оскільки оновлення спричинить короткий простій (кілька секунд до хвилини), доки старий контейнер зупиняється та запускається новий.

Процес оновлення:

Перейдіть у директорію nginx-proxy-manager:


cd ~/nginx-proxy-manager

Зупиніть та видаліть старі контейнери та завантажте нові образи:


docker compose down             # Зупиняє та видаляє контейнери
docker compose pull             # Завантажує останні версії образів (зазначені в docker-compose.yml)
docker compose up -d            # Запускає нові контейнери

Якщо ви хочете оновити лише один сервіс (наприклад, NPM, але не MariaDB), ви можете вказати його ім'я:


docker compose pull app
docker compose up -d app

Завжди робіть резервну копію перед великими оновленнями або змінами конфігурації.

Вирішення проблем + FAQ

У процесі налаштування Nginx Proxy Manager можуть виникнути різні проблеми. Тут ми розглянемо найчастіші з них та надамо рекомендації щодо їх усунення.

Що робити, якщо веб-інтерфейс Nginx Proxy Manager недоступний за портом 81?

Спершу переконайтеся, що контейнер NPM запущено. Підключіться по SSH до вашого VPS та виконайте команду docker compose ps у директорії nginx-proxy-manager. Якщо статус контейнера app не Up, перевірте логи командою docker compose logs app на наявність помилок. Переконайтеся, що порт 81 не зайнятий іншою програмою на вашому VPS і що UFW дозволяє вхідні з'єднання на цей порт (sudo ufw status verbose).

Чому не видається SSL-сертифікат від Let's Encrypt?

Найчастіші причини:

  • Неправильні DNS-записи: Переконайтеся, що DNS-запис типу A для вашого домену (наприклад, app.example.com) вказує на публічну IP-адресу вашого VPS. Перевірте це за допомогою dig app.example.com.
  • Брандмауер: Порти 80 і 443 повинні бути відкриті на вашому VPS (UFW повинен дозволяти 'Nginx Full'). Let's Encrypt використовує ці порти для перевірки володіння доменом (HTTP-01 challenge).
  • NPM не може зв'язатися з Let's Encrypt: Переконайтеся, що ваш VPS має доступ до інтернету та DNS-розділення працює коректно.
  • Перевищено ліміт Let's Encrypt: Якщо ви робили багато невдалих спроб, ви могли тимчасово перевищити ліміти Let's Encrypt. Зачекайте кілька годин і спробуйте знову.
  • Невірна електронна пошта: Переконайтеся, що вказали дійсну адресу електронної пошти в налаштуваннях SSL.

Мій проксі-хост налаштований, але сервіс не відкривається або видає помилку 502 Bad Gateway.

Помилка 502 зазвичай означає, що Nginx Proxy Manager не зміг підключитися до вашого внутрішнього сервісу. Перевірте наступне:

  • Forward Hostname / IP та Forward Port: Переконайтеся, що ці параметри в налаштуваннях проксі-хоста вказані вірно. Якщо сервіс знаходиться на тому ж VPS, використовуйте 127.0.0.1 або ім'я Docker-контейнера (якщо вони в одній Docker-мережі).
  • Доступність внутрішнього сервісу: Переконайтеся, що ваш внутрішній сервіс дійсно запущений і слухає на вказаному порту. Ви можете перевірити це з VPS за допомогою curl http://127.0.0.1:ПОРТ_СЕРВІСУ.
  • Брандмауер на VPS: Якщо ваш внутрішній сервіс працює в окремому Docker-контейнері або на іншому порту, переконайтеся, що його порт доступний для NPM (зазвичай Docker керує своєю внутрішньою мережею, але варто перевірити).

Як оновити Nginx Proxy Manager?

Для оновлення NPM до останньої версії, зазначеної у вашому docker-compose.yml, виконайте наступні команди в директорії nginx-proxy-manager:


docker compose down
docker compose pull
docker compose up -d

Перед оновленням завжди рекомендується зробити резервну копію!

Який VPS-конфіг мінімально підійде?

Для базової установки Nginx Proxy Manager та кількох легких сервісів (наприклад, невеликий сайт, Mattermost для 5-10 осіб, Bitcoin-нода) вам буде достатньо VPS з 1 vCPU, 1 GB RAM та 25-30 GB SSD. Цього вистачить для стабільної роботи NPM та обробки помірного трафіку. Однак, якщо ви плануєте запускати більш ресурсоємні додатки або велику кількість сервісів, краще розглянути конфігурацію з 2 vCPU та 2-4 GB RAM.

Що обрати — VPS чи dedicated для цього завдання?

Для більшості користувачів та сценаріїв, описаних у цьому посібнику (розробник, соло-фаундер, гравець, криптоентузіаст), VPS є оптимальним вибором. Він пропонує достатню продуктивність, гнучкість та значно нижчу вартість порівняно з dedicated сервером. Dedicated сервер варто розглядати лише у випадках дуже високого навантаження (сотні тисяч запитів на секунду, десятки високонавантажених сервісів), необхідності у спеціалізованому обладнанні (GPU, великий обсяг RAM або диска, RAID-масиви) або суворих вимогах до повної ізоляції.

Як налаштувати перенаправлення HTTP на HTTPS?

Nginx Proxy Manager робить це автоматично. При створенні або редагуванні проксі-хоста на вкладці "SSL" просто увімкніть опцію "Force SSL". NPM додасть необхідні директиви Nginx для перенаправлення всього HTTP-трафіку на HTTPS.

Висновки та наступні кроки

Вітаємо! Ви успішно встановили та налаштували Nginx Proxy Manager на вашому VPS, а також навчилися керувати зворотними проксі та SSL-сертифікатами через зручний веб-інтерфейс. Тепер ваш сервер готовий до розгортання та публікації різних веб-сервісів, будь то особисті проєкти, командні інструменти чи комерційні додатки, з упевненістю в безпеці та зручності керування.

Ось кілька кроків, куди можна рухатися далі, щоб максимально використовувати ваш новий Nginx Proxy Manager:

  1. Розгортання нових сервісів: Тепер, коли у вас є централізований проксі, ви можете легко додавати нові Docker-контейнери з вашими додатками (GitLab, Mattermost, WordPress, Nextcloud тощо) та швидко публікувати їх в інтернеті, налаштовуючи проксі-хости в NPM.
  2. Моніторинг сервера: Встановіть інструменти моніторингу, такі як Prometheus + Grafana, Netdata або Zabbix, щоб відстежувати стан вашого VPS, використання ресурсів Docker-контейнерами та продуктивність Nginx Proxy Manager.
  3. Додаткова безпека: Розгляньте можливість використання Cloudflare (або аналогічного CDN/WAF) перед Nginx Proxy Manager для додаткового захисту від DDoS-атак, кешування контенту та покращення продуктивності. Також вивчіть можливість використання складніших списків контролю доступу або інтеграції з системами єдиного входу (SSO).

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

встановлення nginx proxy manager на vps: керування зворотним проксі та
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.