Перейти к основному содержанию

TrueNAS — разворачиваем Nginx Proxy Manager

Nginx Proxy Manager

Приветствую тебя, дорогой читатель. Сегодня мы с тобой развернём Nginx Proxy Manager на нашем TrueNAS хранилище.

Вы можете спросить: для чего? Всё очень просто, в моей домашней лаборатории крутится несколько различных веб-сервисов. Часть из них смотрит в Интернет, часть обслуживает домашнюю лабораторию. Что это могут быть за сервисы:

  • Веб-интерфейс управления NAS
  • Веб-интерфейс управления ESXi
  • Jellyfin
  • Seafile
  • Хранилище паролей
  • Сайты домашней лаборатории
  • Временные тестовые сайты
  • Веб-интерфейс управления различных сервисов, того же VPN

Всё это добро крутится на разных IP адресах и разных портах. Было бы неплохо всё это аккуратно организовать в одном месте. При этом настроить автоматическую выдачу SSL сертификатов, для сервисов, торчащих в Интернет точно. А до локальных сервисов — займёмся этим потом, не в рамках данной статьи.

Обратный прокси-сервер (reverse proxy) — тип прокси-сервера, который ретранслирует запросы клиентов из внешней сети на один или несколько серверов, логически расположенных во внутренней сети. При этом для клиента это выглядит так, будто запрашиваемые ресурсы находятся непосредственно на прокси-сервере.

Сразу скажу, что обратный прокси-сервер у меня уже имеется на базе IIS, он прекрасно работает, на нём даже настроено автоматическое обновление SSL через PowerShell скрипты. Но я планирую избавиться от домашнего Windows сервера в пользу Linux. Благо TrueNAS из коробки позволяет это сделать, там весь нужный функционал уже собран в Nginx Proxy Manager с простым UI.

Nginx Proxy Manager — это готовый Docker контейнер, который позволяем развернуть простой и доступный обратный прокси-сервер с возможностью терминации SSL.

Nginx Proxy Manager

Установка Nginx Proxy Manager в TrueNAS

Будем устанавливать на грабли, это нормально.

npm

Погнали. Находим в приложениях TrueNAS Nginx Proxy Manager.

npm

Доступна версия 1.2.14. Install.

npm

Конфигурировать пока особо не буду.

npm

Обращаем внимание на настройки сети. WebUI порт 30020 — это порт web-интерфейса управления Nginx Proxy Manager. Оставляю его как есть.

npm

HTTP порт, это порт, по которому Nginx Proxy Manager будет принимать HTTP запросы. По умолчанию установлено 30021, это не тот порт, который нам нужен, потом изменим. Пока просто проверим что софт устанавливается.

HTTPS Port, по которому Nginx Proxy Manager будет принимать HTTPS запросы. По умолчанию установлено 30022, это не тот порт, который нам нужен, потом изменим.

npm

Хранилище не меняю, меня пока всё устраивает.

npm

Предлагают выдать 2 CPU и 4ГБ RAM. Для nginx это даже избыточно. Ну пусть пока так и будет. Install.

npm

Начинается процесс установки приложения.

npm

Приложение в статусе Deploying.

npm

Пришлось подождать значительное время. Однако, всё запустилось.

npm

На порту 30020 открывается WebUI интерфейс управления.

npm

Пользователь по умолчанию:

  • Email: admin@example.com
  • Пароль: changeme
npm

После входа нам предлагают сменить аутентификационные данные администратора.

npm

Готово.

npm

Давайте добавим новый прокси-хост.

npm

Указываю домен, схему, IP адрес локальной машины куда проксировать, порт, у меня 80. Можно блокировать какие-то известные эксплойты.

npm

Первый хост добавлен, но ничего не работает. И это нормально.

npm

Проблема в том, что на нужных мне портах 80 и 443 работает интерфейс TrueNAS. Нужно его переключить на что-то другое.

npm

Меняем порты на другие, к примеру, на 81 и 444.

npm

Ждём пока интерфейс TrueNAS перезапустится.

npm

Порты 80 и 443 свободны.

npm

Перенастраиваем наше приложение. Устанавливаем 80 порт как HTTP Port, 443 порт как HTTPS Port.

npm

Применяем настройки.

npm

Ждём загрузки.

npm

Готово. Теперь на роутере нежно сделать переадресация входящих соединения на порты Nginx Proxy Manager.

npm

Посмотрим что поучилось.

npm

Сайт работает на HTTP порту. Добавим SSL.

npm

Подключаем SSL сертификат от Let's Encrypt в настройках хоста Nginx Proxy Manager.

npm

Сертификат выпустился.

npm

Сайт заработал на HTTPS порту. Автоматически применилась переадресация с HTTP на HTTPS.

Дальше я накидал ещё доменов. У меня есть и на кириллице. С кириллицей работает криво, нужно сначала добавить домен в Punycode, выпустить сертификат. Затем дополнить его кириллицей.

Punycode конвертер

В итоге всё заработало. Все сайты на домашнем хостинге поднялись. Это ещё не конец истории, но продолжим в следующий раз.

Проксируй с нами.
Проксируй как мы.
Проксируй лучше нас.

Теги

 

Похожие материалы

Nginx Proxy Manager — настраиваем SSL для всех сайтов домашней лаборатории

Пришла пора навести порядок на всех своих сайтах домашней лаборатории. Есть несколько неудобств, которые хочется победить.

Теги

CTF — PHP - register globals

По традиции 9 мая займёмся задачками на информационную безопасность web-серверов. Сегодня задачка с портала root-me.org, называется "PHP - register globals". За решение задачки дают 25 баллов, ближе к среднему уровню.

Теги