111 lines
9.3 KiB
Markdown
111 lines
9.3 KiB
Markdown
#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)
|
||
|
||
|