x

Как пользоваться Nginx Proxy Manager. Теория и установка софта + настройка доменов и получение SSL

Что будет в статье?

В этой статье я расскажу о том, что такое Nginx Proxy Manager (в дальнейшем - NPM) и покажу как им пользоваться. Будет много теории, чтобы понять, как это работает, а затем практика. В практической части мы с вами на чистую Ubuntu установим сам NPM, 2-3 софта, для каждого при необходимости поменяем порт, в самом NPM создадим домены и направим их. А так же выдадим SSL сертификат.


Зачем это нужно?
Представим, что у вас есть один сервер и вам необходимо установить Nextcloud, Uptime Kuma и Heimdall.  При этом, чтобы они все работали по https с сертификатом и каждый работал при этом на своем домене.

Nginx proxy manager поможет это осуществить. Даже в том случае, если порт 443 один, а SSL требует сразу несколько сервисов. Тот же Bitwarden, например.


Для работы NPM нужны следующие порты:
80 - для работы с 80 портом;
81 - для работы самого NPM:
443 - для работы https.

Остальные порты уже вы сами выберите, какие будете открывать. 



Теоретическая часть
1. Немного про контейнеры и порты.
Когда вы запускаете docker контейнер, то контейнер выделяет для себя те порты, которые вы укажете. Таких портов два вида:
1. Внутренние. Эти порты используются внутри контейнера;
2. Внешние. Эти порты используются для доступа к контейнеру. Именно через них вы подключаетесь к контейнеру.
Допустим, вы создали контейнер nextcloud и указали порт 1234:80. Слева всегда пишется внешний порт.
Это значит, что при входе на 1234 порт, будет выполнено обращение на 80 порт внутри контейнера.


Разберем команду установки Uptime Kuma:

docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

В этой команде указано 3001:3001. Это значит, что внутри контейнера открывается порт 3001, и внешний порт тоже будет 3001. Поменяем внешний порт на 2525. Получится так:

docker run -d --restart=always -p 2525:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

В этом случае внешним портом станет 2525. По нему мы будем заходить. И при входе по порту 2525, контейнер будет обращаться к порту 3001 внутри контейнера.

С контейнерами разобрались. Переходим к самому NPM.


2. Поговорим про Nginx Proxy Manager

NPM берет открытый http порт и направляет на него по https протоколу. При этом NPM сам создает SSL сертификат.

Допустим, вы запустили Uptime Kuma на порту 2525 и хотите его повесить на поддомен kuma.domain.ru. Заходите в NPM, создаете хост kuma.domain.ru, порт указываете 2525 и создаёте сертификат.


Вы настроили домен, получили сертификат, все работает. Как происходит процесс на самом деле?

Когда вы заходите на сайт по домену kuma.domain.ru, npm перенаправляет вас на https протокол с созданным в нем сертификатом. При этом происходит перенаправление на порт 2525 и ваш IP-адрес

Все, что делает NPM - отправляет на другой порт и выдает SSL. 


Практическая часть

Если у ПО имеются https порты, то лучше домен и SSL выдавайте на них. Но на http порты тоже можно.
В статье я в основном делал перенаправление на http, и последний пакет повесил уже на https.

Сейчас мы будем настраивать наш сервер. У нас есть:

Домен с поддоменами time, next, hd. На них я хочу повесить uptime kuma, nextcloud (snap), heimdall.

Nextcloud и Heimdall по умолчанию хотят себе порты 80 и 443;

Чистая ubuntu 22.04 на тестовом сервере.


Шаг 1. Установка NPM

Я недавно сделал статью по установке Nginx Proxy Manager: Как установить Nginx Proxy Manager?

Чтобы не повторяться, просто установите его по инструкции выше и возвращайтесь. Переходите к шагу 2.


Шаг 2. Установка Uptime Kuma

2.1. Первым делом хочу установить Uptime Kuma для мониторинга своих сервисов. Копирую команду и меняю внешний порт:

docker run -d --restart=always -p 3025:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

В моем случае внешний порт теперь 3025. Сервис уже запущен и в него можно попасть по адресу: http://ip_адрес:3025

2.2. Давайте создадим для него правило в NPM:

Переходим во вкладку Hosts, выбираем Proxy hosts:

2.3. Нажимаем Add Proxy Host:2.4. Вводим наш домен

Дальше по пунктам:

  • Forward Hostname/IP - пишем внешний адрес нашей виртуальной машины. Если сервер за NAT, то внутренний;
  • Forward Port - порт, на который будет выполнено перенаправление. Вводим 3025.
  • Websockets Support включаем. Он нужен для Uptime Kuma. 

2.5. Переходим во вкладку SSL:

2.6. Нажимаем на кнопку создания нового SSL:

2.7. Дальше ставим галочки: 

По пунктам:

  • Force SSL - включаем;
  • HTTP/2 Support - включаем;
  • HSTS - включаем.

2.9. Принимаем соглашение, нажимаем Save.

Иногда изменения по пунктам не сохраняются. Рекомендую заново открыть окно уже созданного домена и снова проставить галочки.

После этого, при входе по адресу time.domain.ru. Будет выполнено перенаправление на https, на порт 3025.


Шаг 3. Установка Nextcloud (Snap)

3.1. Для установки сначала нужно установить snapd:

apt install snapd -y

3.2. А затем и сам nextcloud:

snap install nextcloud

3.3. Nextcloud уже установлен. По умолчанию он забирает себе порт 80 и 443. Предлагаю их поменять на 85 (http) и 444 (https):

sudo snap set nextcloud ports.http=85
sudo snap set nextcloud ports.https=444

Теперь уже можем зайти в Nextcloud по адресу: http://ip_адрес:85

3.4. Теперь перейдем в NPM и настроим домен:

3.5. И настроим SSL:

3.6. После этого, при входе по адресу next.domain.ru, мы попадём в Nextcloud с SSL сертификатом.


Шаг 4. Установка Heimdall

Установим последний пакет в рамках нашей с вами инструкции. Я выбрал именно heimdall из-за файла docker-compose, в котором смогу показать изменение порта.

4.1. Предлагаю создать папку для heimdall:

mkdir hd

4.2. Переходим в папку:

cd /root/hd/

4.3. Создаем docker-compose файл:

nano docker-compose.yml

4.4. Копируем и вставляем туда следующее:

---
version: "2.1"
services:
  heimdall:
    image: lscr.io/linuxserver/heimdall:latest
    container_name: heimdall
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - /path/to/appdata/config:/config
    ports:
      - 3333:80
      - 4444:443
    restart: unless-stopped

Обратите внимание: я уже поменял внешние порты: 3333 - http, 4444 - https.

4.5. Сохраняем изменения: Ctrl + O, затем Enter, затем Ctrl + X.

Запускаем файл:

docker-compose up

Если перейти в браузер по адресу: http://ip_адрес:3333, то мы попадем в heimdall.

4.6. Теперь настроим домен для него

Обратите внимание! В этом случае мы уже направляем всё на https порт. Так тоже можно:

 

4.7. И осталось только SSL настроить:

Теперь, если перейти по адресу: https://hd.domain.ru, то откроется Heimdall.


Итог

В рамках данной статьи мы с вами сделали следующее:

  1. Установили три сервиса: Uptime kuma, Nextcloud и heimdall;
  2. Для каждого сервиса настроили поддомен и выдали им сертификаты;
  3. Немного узнали о принципе работы NPM.

Я понимаю, что некоторые моменты могли быть сделаны неправильно. К примеру, необязательно для каждого докера создавать отдельную папку и файл композ. Мне было важно просто показать принцип работы и объяснить, как это работает.

Сам по себе процесс не сложный и в каком-то смысле однообразный. Запускаешь сервис, узнаешь порт, создаешь поддомен и указываешь адрес с портом, поставив несколько галочек.

Если будут вопросы или пожелания - пишите их. Учту, исправлю.

Для обсуждения вы так же можете перейти в наш телеграм чат: https://t.me/katranlife_ru


Предыдущая новость
Следующая новость

Похожие новости

Комментарии (0)

Оставить комментарий


Плеер [VøidTherapy]

00:00
00:00

Новые комментарии

igor5841

igor5841

Внимательно перечитайте статью. Вам не нужно устанавливать этот файл...

Полностью
никита

никита

что делать когда хочу скачать oldapp.apk пишет что "приложение не...

Полностью
igor5841

igor5841

Я давно не пользовался семёркой, так что точно не знаю как там сейчас...

Полностью
Сергей Б.

Сергей Б.

Спасибо за ответ. Наверняка, Вы более знающий и я не владею...

Полностью
igor5841

igor5841

Если я не ошибаюсь, то там обновления приходят через центр обновления...

Полностью
Ко всем комментариям

Популярное

Реклама