Найти тему

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

Оглавление
Установка и настройка "Nginx Proxy Manager" в оболочке CasaOS.
Установка и настройка "Nginx Proxy Manager" в оболочке CasaOS.

В прошлой статье мы установили менеджер паролей Vaultwarden в оболочку CasaOS и узнали что менеджер требует для работы защищенное соединение. Вот эту задачу и решим с помощью прокси сервера Nginx.

Страница установки "Nginx Proxy Manager"
Страница установки "Nginx Proxy Manager"

1. Установка Nginx

Для установки опять проходим рутинную операцию - Заходим в "App Store" и жмем кнопку "Установить" под приложением "Nginx Proxy Manager". Перед установкой нас предупредят что Nginx займет порты 80, 81, 443.

Порты занимаемые "Nginx Proxy Manager"
Порты занимаемые "Nginx Proxy Manager"

Но мы же знаем что у нас на порту 80 висит CasaOS. Как быть?

В общем то все тривиально просто. Останавливаем установку прокси и переходим в настройки оболочки.

Настройка порта интерфейса для CasaOS
Настройка порта интерфейса для CasaOS

Меняем настройки порта Вэб интерфейса как пример на 88 порт чтобы освободить 80. После применения настроек не забываем к урлу CasaOS добавить в конце порт http://Url:88 и переходим по новому адресу в панель управления. Устанавливаем "Nginx Proxy Manager", мы же теперь знаем как это сделать ):

2. Настройка прокси

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

username admin@example.com

password changeme

Для начала конечно изменяем мыло и пароль на свои и продолжаем настройки.

3. Сертификаты для хостов

-5

Вы наверное замечали, что некоторые сайты отмечаются браузером как опасные и выводят красный значок неподписанного сертификата. Мы с вами попробуем решить эту проблему. Зайдем во вкладку "SSL Certificates" и обнаружим для добавления два варианта сертификатов

1. Add Let's Encrypt Certificate - Он нам недоступен по причине локального расположения нашего сервера. Для этого сертификата нужен валидный интернет адрес IP4.

2. Add Custom Certificate - это для нас, здесь можно установить свой само подписной сертификат (качества ): ).

С чего начнем? Для валидации сертификата требуется "удостоверяющий центр" который подтверждает что нашему сертификату можно верить. Давайте создадим ключ удостоверяющего центра. Так как наш хостинг находится на Linux платформе мы этим и воспользуемся.

Для подключения к серверу по SSH я использую MobaXterm_Portable. Она хороша тем что заменяет сразу две программы Терминал и SFTP менеджер.

Интерфейс MobaXterm
Интерфейс MobaXterm

4. Создание сертификатов

Подключаемся к PVE машине рутом с вашим паролем. Во вкладе файлового менеджера создаем папку CRT в которой будем генерировать сертификаты.

Сперва нам необходимо создать сертификаты удостоверяющего центра. Переходим в папку CRT командой в терминале -

cd ~/CRT

Теперь создаем файлы удостоверяющего центра -

Сгенерировать RootCA.pem, RootCA.key & RootCA.crt:

openssl req -x509 -nodes -new -sha256 -days 1024 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=RU/CN=Example-Root-CA"

Создаем сертификат СА

openssl x509 -outform pem -in RootCA.pem -out RootCA.crt

Поздравляю, мы создали свой удостоверяющий центр сертификации.

Следующим шагом создадим в папке /CRT файл domains.ext, в котором перечислены все ваши локальные домены:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = casaos.loc
DNS.2 = proxy.loc
DNS.3 = vault.loc

Для начала настроим 3 домена casaos.loc proxy.loc vault.loc

И наконец сгенерируем SSH ключ для этих доменов.

Сгенерировать localhost.key, localhost.csr и localhost.crt:

openssl req -new -nodes -newkey rsa:2048 -keyout localhost.key -out localhost.csr -subj "/C=RU/ST=RUS/L=Siti/O=Example-Certificates/CN=localhost.loc"

Подпишем корневым сертификатом:

openssl x509 -req -sha256 -days 1024 -in localhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out localhost.crt

Теперь у нас в наличии все файлы для сертификации наших хостов и осталось их распределить по назначению.

5. Установка сертификатов на хост

Установка SSL сертификата на "Nginx Proxy Manager"
Установка SSL сертификата на "Nginx Proxy Manager"

Установка на "Nginx Proxy Manager":

Скачиваем localhost.key и localhost.crt RootCA.crt с сервера. Заходим в "Nginx Proxy Manager" во вкладку "SSL Certificates" -> Add Custom Certificate. Вводим название сертификата "Localhost". Выбираем файл для "Certificate Key" - localhost.key. Для "Certificate" - localhost.crt и жмем "Save". Сертификат установлен.

6. Настройка файла "hosts"

Для правильной адресации локальных доменов в системе, необходимо настроить локальный DNS файл hosts. для этого открываем его для редактирования по адресу - "C:\Windows\System32\drivers\etc\hosts" и приводим к такому содержанию исправив адрес 192.168.1.3 на тот который ведет к вашему серверу "Nginx Proxy Manager".

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost

192.168.1.3 vault.loc # Адрес Vaultwarden порт 10380

192.168.1.3 proxy.loc # Адрес Nginx Proxy Manager порт 81

192.168.1.3 casaos.loc # Адрес CasaOS порт 88

Теперь, когда настроена переадресация хостов нужно настроить прокси на нужные нам хосты.

7. Настройка "Nginx Proxy Manager"

Настройка сводится к указанию имени хоста, прямого URL к хосту и параметров адресации. Для примера привожу настройки vault.loc -

Открываем вкладку "Proxy Hosts" и жмем "Add Proxy Host". Вводим "Domain Names" - vault.loc. "Scheme" - http. IP - "IP где сидит Vaultwarden". Порт - 10380.

Настройка хоста
Настройка хоста

Переходим во вкладку "SSL" и выбираем сертификат Localhost.

Выбор сертификата
Выбор сертификата

Остальные хосты настраиваем по аналогии.

8. Установка CA сертификата на ваш компьютер под WIN

На файле RootCA.crt клацаем правой кнопкой мыши и выбираем "Установить сертификат". Обязательно выберите «Доверенные корневые центры сертификации» и подтвердите.

Корневой сертификат установлен.

Теперь вы должны получить зеленую маркировку в Chrome, IE11 и Edge.

Windows 10: Firefox - Есть два способа получить доверенный центр сертификации в Firefox.

Самый простой - заставить Firefox использовать доверенные корневые центры сертификации Windows, перейдя в about:config и установив security.enterprise_roots.enabled значение true.

Другой способ - импортировать сертификат, перейдя по ссылке about:preferences#privacy > Certificats > Import > RootCA.pem Confirm for websites. Предварительно скачав RootCA.pem из папки "CRT".

9. Итог

В итоге мы получим доступ к casaos.loc proxy.loc vault.loc по протоколу HTTPS и браузер будет реагировать на наш сертификат как на валидный.

Всем удачи. Следующий раз будем настраивать менеджер паролей.