Files
wikipedia/HomeLab/LXC - Nginx Proxy Manager.md
T

111 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#nginx_proxy_manager #npm #settings #lxc #guide
### IP: 192.168.1.101:81
Описание на Habr:
**PVE - LXC Script Installation**
```bash
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nginxproxymanager.sh)"
```
### Description
Это обратный прокси (Reverse Proxy).
Основан на веб-сервере Nginx
Сервис используется для организации доступа к приложениям через единую точку входа. В качестве точки входа может быть как доменное имя, так и IP адрес, с дальнейшей маршрутизацией до конечного приложения.
### Peculiar Properties
- Встроенный Веб - интерфейс
- Настройка переадресации доменов, кастомизация 404 страниц
- Наличие сервиса Let's Encrypt для выпуска бесплатных SSL сертификатов с возможностью самоподписания
- Функционал по обеспечению безопасности (Access-control list)
### AI Configuration Promt
```
Ты — опытный системный администратор и сетевой инженер. Помоги мне пошагово настроить **нативный Nginx как обратный прокси** в уже созданном **непривилегированном LXC-контейнере** на Proxmox PVE. Не предлагай Nginx Proxy Manager, Docker и другие GUI-решения. Нужен именно Nginx, установленный пакетом в LXC.
**Контекст моей инфраструктуры:**
- Роутер: Keenetic Giga KN-1011, есть белый IP.
- WireGuard уже настроен на Keenetic. Через VPN я захожу в домашнюю сеть и управляю Proxmox и внутренними сервисами.
- Есть доменные имена от KeeneticDNS. Хочу использовать их для публикации отдельных сервисов через Nginx.
- Proxmox PVE установлен. Веб-интерфейс Proxmox (8006) **нельзя** выставлять в интернет; доступ к нему — только через WireGuard/локальную сеть.
- Непривилегированный LXC-контейнер для Nginx уже создан. ОС внутри пока не настраивал.
- Цель: Nginx в LXC как единая точка входа для публикации конкретных сервисов по доменным именам, с HTTPS. Управление Proxmox и чувствительными сервисами — только через VPN.
**Что мне нужно от тебя:**
1. Веди меня **строго пошагово**, не выдавай всю инструкцию сразу. После каждого шага давай команды, ожидаемый результат и checkpoint. Не переходи к следующему шагу, пока я не подтвержу, что предыдущий выполнен.
2. В начале задай все уточняющие вопросы, которые нужны: версия ОС в LXC, IP-адрес LXC, IP и порты сервисов, которые нужно опубликовать, точные доменные имена KeeneticDNS, нужно ли публиковать сервисы наружу или только внутри VPN, есть ли поддержка DNS API у KeeneticDNS для ACME DNS-01.
3. Предложи и обоснуй схему получения SSL-сертификатов: Let's Encrypt через HTTP-01, DNS-01 или внутренний CA. Учти, что KeeneticDNS может не поддерживать ACME DNS API. Если DNS-01 невозможен — предложи безопасный обходной путь. Не открывай лишние порты без необходимости.
4. Помоги спланировать сеть и проброс портов на Keenetic: какие порты открыть на LXC, какие правила сделать на роутере, как проверить DNS и hairpin NAT. Напомни, что порт 8006 Proxmox остаётся закрытым.
5. Настрой базовую безопасность LXC: обновления, пользователи, SSH только из LAN/VPN, firewall внутри LXC, минимальный набор пакетов.
6. Установи и настрой Nginx: отдельные server-блоки, редирект HTTP→HTTPS, proxy_pass, необходимые заголовки `Host`, `X-Real-IP`, `X-Forwarded-For`, `X-Forwarded-Proto`, поддержка WebSocket, `client_max_body_size`, таймауты, логи. Добавь разумные security headers. Если уместно — предложи basic auth или ограничение по IP для чувствительных сервисов.
7. Настрой автоматическое продление сертификатов и проверку `certbot renew --dry-run` или аналог.
8. Дай команды проверки: `nginx -t`, `curl -I`, проверка сертификата, проверка извне и изнутри, проверка WebSocket, просмотр логов.
9. Предупреди о типичных ошибках: конфликт KeenDNS с портами 80/443, hairpin NAT, права в непривилегированном LXC, SELinux/AppArmor, обновления Nginx, уязвимости.
10. В конце помоги сделать backup конфигов и краткий чек-лист эксплуатации.
**Формат ответа:**
- Сначала — уточняющие вопросы.
- Затем — план из пронумерованных этапов.
- Далее — только первый этап с командами в code blocks, ожидаемым результатом и checkpoint.
- Пиши на русском, кратко и точно. Если шаг опасен или необратим — явно предупреди.
Начни с уточняющих вопросов и плана.
Этот ответ сгенерирован AI, только для справки.
```
### Settings
1. Первичная настройка маршрутизатора (роутера)
1. Включить правило переадресации портов 443 и 80 для доступа к NPM - требуется Let s Encrypt
(необходимо для доступа из внешнего мира и самоподписания SSL):
1. Вход - провайдер
2. Выход: NPM - Nginx Proxy Manager
3. Протокол: TCP/UDP
4. Открываемый порт: 443
5. Повторить п.1 - 4 но только для порта 80 - протокол только TCP
2. Для работы необходимо иметь доменное имя:
1. В данном случае настройка описана с использованием доменного имени от KeenDNS
2. Альтернативный вариант - использование зарегистрированного домена.
1. Зарегистрировал домен `embeddevio.space` на Reg.ru
3. Добавление сервисов домашней сети:
1. Hosts - Proxy Hosts - Add Proxy Host
1. Domain Names: `domaine_name.embeddevio.netcraze.pro`
2. Sheme: выбираем схему на которой работает ваш сервис `http` или `https`
3. Forward Hostname / IP: `192.168.1.44` - IP адрес сервиса
4. Forward Port: `80` `443` or `8086` порт Вашего сервиса
5. Чек-боксы:
1. `Chache Assets` - кеширование статических файлов (обычно оставляют вкл)
2. `Block Common Exploits` - базовая защита от веб-атак
3. `Websockets Support` - поддержка протокола вебсокет (чаты/дашборды и пр. в реальном времени)
6. Вкладка SSL
1. `SSL Certificate` Запросить (добавить) новый или выбрать существующий
2. `Force SSL` - Перенаправляет все http на https - рекомендуется включить
3. `HSTS Enable` - HTTP Strict Transport Security - защита от перехвата трафика (включать с осторожностью)
4. `HTTP/2 Support` - Включение протокола HTTP/2 для ускорения загрузки
5. `HSTS Sub-domains`
2. Выполнив шаги п.1 добавить Ваши сервисы. Стоит учитывать, что некоторые, добавляемые сервисы требуют внутренней настройки (например Nextcloude и HomePage)