**полная пошаговая инструкция** по установке Nginx Proxy Manager в **Full Setup** конфигурации с MariaDB, с самого начала:
---
## 🚀 **Полная инструкция по установке Nginx Proxy Manager (Full Setup)**
### **Шаг 1: Подготовка виртуальной машины**
1. **Создайте виртуалку в Proxmox:**
- ОС: Ubuntu 22.04 LTS (минимальная установка)
- RAM: 2GB (минимум для Full Setup)
- Диск: 20GB
- Сеть: Bridge mode (та же сеть, что и у других виртуалок)
- **Статический IP**: Назначьте статический IP в локальной сети (например, `192.168.1.200`)
2. **Обновите систему:**
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git
```
3. **Установите Docker и Docker Compose:**
```bash
# Установка Docker
sudo apt install -y docker.io
# Установка Docker Compose
sudo apt install -y docker-compose
# Запуск и включение в автозагрузку
sudo systemctl enable --now docker
```
### **Шаг 2: Создание директории для проекта**
```bash
sudo mkdir -p /opt/nginx-proxy-manager
sudo chown -R $USER:$USER /opt/nginx-proxy-manager
cd /opt/nginx-proxy-manager
```
### **Шаг 3: Создание docker-compose.yml (Full Setup)**
```bash
nano docker-compose.yml
```
**Вставьте эту конфигурацию (скопируйте полностью):**
```yaml
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # Публичный HTTP порт
- '443:443' # Публичный HTTPS порт
- '81:81' # Порт веб-интерфейса администратора
environment:
# Настройки подключения к базе данных
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "your_secure_password_123" # ⚠️ ЗАМЕНИТЕ НА СВОЙ!
DB_MYSQL_NAME: "npm"
# Отключить IPv6 если не используется в вашей сети
DISABLE_IPV6: 'true'
volumes:
- .//data
- ./letsencrypt:/etc/letsencrypt
depends_on:
db:
condition: service_healthy
networks:
- npm_network
db:
image: 'mariadb:10.6'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "root_secure_password_456" # ⚠️ ЗАМЕНИТЕ НА СВОЙ!
MYSQL_DATABASE: "npm"
MYSQL_USER: "npm"
MYSQL_PASSWORD: "your_secure_password_123" # ⚠️ ЗАМЕНИТЕ НА СВОЙ!
volumes:
- ./mysql:/var/lib/mysql
networks:
- npm_network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-u", "npm", "-pyour_secure_password_123"]
interval: 30s
timeout: 10s
retries: 3
networks:
npm_network:
driver: bridge
```
**⚠️ КРИТИЧЕСКИ ВАЖНО:**
1. **Замените все пароли** на свои надежные! Используйте генератор паролей.
2. **Все три пароля** должны совпадать: `DB_MYSQL_PASSWORD` и `MYSQL_PASSWORD`
3. **Пароль root** должен быть другим и очень сложным
### **Шаг 4: Генерация надежных паролей (рекомендуется)**
```bash
# Генерация паролей (выполните на хосте)
openssl rand -base64 32
# Пример результата: "x9G7!pL2@mK8#qR5$tY3^uI1&oP4(aS6"
```
Скопируйте сгенерированные пароли и замените их в `docker-compose.yml`
### **Шаг 5: Запуск контейнеров**
```bash
# Запуск в фоновом режиме
docker-compose up -d
# Проверка статуса (должны быть оба контейнера Up)
docker-compose ps
```
**Ожидайте 3-5 минут** для полной инициализации (генерация ключей, создание БД)
### **Шаг 6: Проверка логов (если есть проблемы)**
```bash
# Проверить логи основного приложения
docker-compose logs -f app
# Проверить логи базы данных
docker-compose logs -f db
# Для выхода из просмотра логов: Ctrl+C
```
### **Шаг 7: Доступ к веб-интерфейсу**
Откройте в браузере:
```
http://192.168.1.200:81
```
**Данные для входа по умолчанию:**
- **Email**: `
- **Пароль**: `changeme`
**⚠️ ВАЖНО:** Сразу после входа система **обязательно** попросит вас изменить email и пароль!
---
## 🔧 **Настройка для работы с NAT и DNS (ваш сценарий Proxmox)**
### **Шаг 8: Настройка на роутере (NAT)**
На вашем роутере настройте проброс портов:
```
Внешний порт 80 → 192.168.1.200:80
Внешний порт 443 → 192.168.1.200:443
```
**Порт 81 НЕ пробрасывайте наружу!** Это порт только для локального доступа к админке.
### **Шаг 9: Настройка DNS записей**
В DNS панели вашего регистратора создайте A-записи:
```
site1.ru → ваш_белый_IP
nextcloud.ru → ваш_белый_IP
windows1.ru → ваш_белый_IP
proxmox.ru → ваш_белый_IP
```
### **Шаг 10: Настройка первого прокси-хоста (пример для AAPanel)**
1. В веб-интерфейсе NPM: **Hosts** → **Proxy Hosts** → **Add Proxy Host**
2. **Основные настройки:**
- **Domain Names**: `site1.ru, www.site1.ru`
- **Scheme**: `http`
- **Forward Hostname/IP**: `192.168.1.101` (IP вашей AAPanel VM)
- **Forward Port**: `80`
3. **Вкладка SSL:**
- **SSL Certificate**: `Request a new SSL Certificate`
- **Email**: ваш@email.ru
- **Force SSL**: ✅ Включить
- **HTTP/2 Support**: ✅ Включить
- **HSTS Enabled**: ✅ Включить
- **Поставьте галочку** "I Agree" внизу
4. Нажмите **Save**
### **Шаг 11: Проверка работы**
Откройте в браузере:
```
https://site1.ru
```
Вы должны увидеть ваш сайт с AAPanel с зеленым замком (HTTPS).
---
## ⚙️ **Настройка для других сервисов**
### **Для Nextcloud:**
При создании прокси-хоста в разделе **Advanced** добавьте:
```nginx
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
client_max_body_size 10G;
```
### **Для Proxmox web UI:**
- **Domain Names**: `proxmox.ru`
- **Scheme**: `https`
- **Forward Hostname/IP**: `192.168.1.10` (IP вашего Proxmox)
- **Forward Port**: `8006`
- **Block Common Exploits**: ✅ Включить
- **SSL**: Запросить новый сертификат
### **Для Windows RDP (прямой доступ, не через web):**
**Не используйте reverse proxy для RDP!** Настройте проброс портов на роутере:
```
Внешний порт 33891 → 192.168.1.151:3389 (Windows VM 1)
Внешний порт 33892 → 192.168.1.152:3389 (Windows VM 2)
```
Подключайтесь через RDP клиент: `ваш_белый_IP:33891`
---
## 🔒 **Безопасность и обслуживание**
### **1. Настройка файервола на виртуалке**
```bash
sudo apt install -y ufw
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from 192.168.1.0/24 to any port 81 # Только из локальной сети
sudo ufw deny 3306 # Запретить доступ к MySQL извне
sudo ufw enable
```
### **2. Регулярное обновление**
```bash
cd /opt/nginx-proxy-manager
sudo docker-compose pull
sudo docker-compose up -d --force-recreate
```
### **3. Резервное копирование**
```bash
# Бэкап всей конфигурации
sudo tar -czf npm_backup_$(date +%Y%m%d).tar.gz /opt/nginx-proxy-manager
# Восстановление из бэкапа
sudo tar -xzf npm_backup_20251219.tar.gz -C /
```
### **4. Мониторинг состояния**
```bash
# Проверить статус контейнеров
docker-compose ps
# Проверить использование ресурсов
docker stats
```
---
## 🚨 **Что делать если что-то не работает**
### **Проблема: Не открывается веб-интерфейс (порт 81)**
```bash
# Проверить, слушает ли порт
sudo netstat -tlnp | grep ':81'
# Перезапустить контейнеры
docker-compose restart
```
### **Проблема: SSL сертификат не создается**
- Проверьте, что домен указывает на ваш белый IP
- Проверьте проброс портов 80/443 на роутере
- Проверьте, что Let's Encrypt не заблокирован вашим провайдером
### **Проблема: Ошибка подключения к базе данных**
```bash
# Проверить логи БД
docker-compose logs db
# Проверить сетевое подключение между контейнерами
docker-compose exec app ping db
```
---
## ✅ **Итоговый чек-лист**
✅ Виртуалка создана с Ubuntu 22.04 и статическим IP
✅ Docker и Docker Compose установлены
✅ `docker-compose.yml` создан с Full Setup конфигом
✅ Все пароли заменены на надежные
✅ Контейнеры запущены (`docker-compose up -d`)
✅ Веб-интерфейс доступен по `http://локальный_IP:81`
✅ Данные администратора изменены после первого входа
✅ Порты 80/443 проброшены на роутере на эту виртуалку
✅ DNS записи указывают на белый IP
✅ Создан первый прокси-хост с SSL сертификатом
✅ Фаервол настроен для безопасности
**Поздравляю!** У вас установлен полноценный, надежный reverse proxy сервер в продакшен-конфигурации. Теперь все ваши виртуалки будут доступны по красивым доменным именам с автоматическим HTTPS!
Нужна помощь с настройкой конкретного сервиса (Nextcloud, Proxmox, Windows RDP) или с дополнительными функциями?