Инфраструктурный Docker Compose: Portainer CE + Nginx Proxy Manager с GUI Let's Encrypt
Готовый docker-compose.yml для управления сервером через веб-интерфейс: Portainer CE (Docker GUI) и Nginx Proxy Manager (GUI прокси и SSL в 1 клик).
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
docker-compose.yml
# docker-compose.yml
# Инфраструктурный стек управления Portainer + Nginx Proxy Manager (SysKit.ru)
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9000:9000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks:
- infra_net
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx_proxy_manager
restart: always
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: "npm_db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm_user"
DB_MYSQL_PASSWORD: "NpmSecretPassword2026!"
DB_MYSQL_NAME: "npm_db"
volumes:
- ./npm_data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- npm_db
networks:
- infra_net
npm_db:
image: 'jc21/mariadb-aria:latest'
container_name: npm_mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'NpmSecretPassword2026!_root'
MYSQL_DATABASE: 'npm_db'
MYSQL_USER: 'npm_user'
MYSQL_PASSWORD: 'NpmSecretPassword2026!'
volumes:
- ./npm_mysql:/var/lib/mysql
networks:
- infra_net
networks:
infra_net:
driver: bridge
volumes:
portainer_data:
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
ports: '81:81' |
Порт веб-панели NPM | Открывает удобный GUI интерфейс Nginx Proxy Manager для выпуска Let's Encrypt сертификатов и проксирования в 1 клик. |
restart: unless-stopped |
unless-stopped | Обеспечивает автоматический перезапуск контейнеров при сбое демона Docker или перезагрузке VDS. |
logging / max-size: 10m |
max-size: 10m, max-file: 3 | Ограничивает размер логов контейнеров на диске, предотвращая переполнение дискового пространства NVMe (100% Disk Full). |
volumes / app_data |
named volume / local bind | Выносит базу данных и загружаемые файлы в постоянные тома, предотвращая потерю данных при обновлении контейнеров. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 1-2 vCPU, 2 GB RAM, 30 GB NVMe
Расчетная нагрузка: Инфраструктурный хост для десятков микросервисов
2 CPU / 2 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
1-2 vCPU /
2 GB RAM /
30 GB NVMe
2 vCPU / 2 GB RAM
Selectel
Рекомендуемые ресурсы
1-2 vCPU /
2 GB RAM /
30 GB NVMe
Turbo 2 GB
Beget
Рекомендуемые ресурсы
1-2 vCPU /
2 GB RAM /
30 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Какие логин и пароль по умолчанию в Nginx Proxy Manager?
Email: `admin@example.com`, Пароль: `changeme`. При первом входе система попросит изменить их на ваши данные.
Как запустить и остановить стек в фоновом режиме?
Запуск: `docker compose up -d`. Остановка: `docker compose down`. Просмотр логов: `docker compose logs -f`.
Ошибка: Port already allocated (порт 80/443 занят)
Проверьте, не запущен ли локальный Nginx или Apache: `systemctl stop apache2` или `systemctl stop nginx`, либо измените внешний порт в `ports: ["8080:80"]`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.