September 10, 2023

Marzban фиксики пришли с NPM

NPM использую для создания одной точки входа, которая в завимости от запроса редиректит трафик на другие сервера или контейнеры внутри сервера.

Я использую PROXMOX и LXC контейнеры

На картинке выше я примерно показал работу типичного использования NPM:

Сервер - например, proxmox имеет внутри себя несколько контейнеров.

"Общение" между контейнерами налажено через виртуальную сеть с CIDR 192.168.0.0/24. У каждого контейнера свой ip адрес.

У NPM 2 сети:

Первая сеть - связь с внешним миром!

Допустим в рамках гайда, что:

BR1 (внешняя сеть) и привязан IP адрес 188.177.30.11, а наружу торчит только 443 порт.

На этот IP адрес привязан домен example.com через панель CloudFlare.

А BR2 (внутренняя сеть) CIDR 192.168.0.0/24 (создана вручную через вкладку network в proxmox)

На CloudFlare мы получаем SSL сертификат и прописываем правила: 3 поддомена pg / api / sub идут на IP 188.177.30.11 , SSL enabled:

Proxy status -> enabled

Описываем все три правила (ка кпример)

Внимание! Все 3 поддомена и IP адрес вымышлены!

Не забываем создать и скачать SSL сертификат! Состоит из 2 файлов (cert + key)

Установка NPM с помощью волшебного репозитория от TTECK:

https://tteck.github.io/Proxmox/

Оттуда выдергиваем команду:

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/nginxproxymanager.sh)"

Данную команду прописываем в консоль PROXMOX, а не в консоль LXC контейнера.

Контейнер автоматически создастся. Нам нужно лишь добавить нашу вторую виртуальную сеть BR2

Как NPM будет готов, открываем админу и настраиваем!

В NPM добавляем сертификат:

Имя сертификата, сертификат и ключик.

Можно юзать LetsEncrypt, если есть неприязнь к CloudFlare.

Далее, добавляем правила проксирования:

Если прилетает запрос на pg.example.com, то проксировать по HTTP на ip адрес 192.168.0.4 и порт 3306

Cache assets - нет.

Вебсокеты по желанию, если они используются.

Далее, вкладка SSL:

Выбираем наш импортированный сертификат.

Именно с помощью него, трафик превращается из HTTPS (BR1) в HTTP (BR2)

Нажимаем сохранить! Правило проксирования готово.

В рамках MarzBan я добавил правило блокировать GET запросы на dashboard и api:

Данный гайд можно использовать в рамках DOCKER.

У докер есть свой внутренний bridge. Docker можно развернуть внутри KVM VPS. (у хостера читаем документацию о доступности виртуализации внутри VPS, не все разрешают)