Если вы арендуете недорогой VDS (1–2 vCPU, 1–2 ГБ RAM) за 300–600 рублей в месяц для размещения пет-проектов, микросервисов, Telegram-ботов или клиентских лендингов, вы наверняка сталкивались с дилеммой управления Docker-контейнерами. Управлять десятком сервисов исключительно через терминал ssh и редактор nano бывает утомительно: сложно оперативно следить за логами нескольких контейнеров, неудобно на лету менять переменные окружения .env и отслеживать упавшие процессы.
Классическим ответом индустрии долгие годы оставался Portainer. Однако для компактных виртуальных серверов Portainer превратился в неоправданно тяжеловесного монстра. Разработчик Луи Лам (Louis Lam), автор всемирно признанной системы мониторинга Uptime Kuma, создал элегантную альтернативу — Dockge. Этот инструмент совершил тихую революцию в сообществе self-hosted, предложив лёгкий Docker UI с расходом всего ~30 МБ оперативной памяти и кристально чистой архитектурой.
💡 Ключевая концепция Dockge
В отличие от Portainer, Dockge не хранит конфигурации в закрытой базе данных. Каждый ваш стек — это обычный текстовый файл compose.yaml в каталоге на сервере. Вы можете в любой момент отредактировать его в веб-панели, через консоль по SSH или обновить через Git — изменения синхронизируются на лету.
1. Почему Portainer стал обузой для компактных VDS: 30 МБ против 250 МБ RAM и вендор-лок
Portainer создавался как универсальный энтерпрайз-инструмент для оркестрации Swarm и Kubernetes, и эта универсальность сыграла с ним злую шутку на одиночных серверах:
- Колоссальный оверхед по памяти: контейнер Portainer вместе со встроенной базой данных BoltDB / SQLite потребляет от 250 до 450 МБ RAM. На сервере с 1 ГБ оперативной памяти это означает потерю почти трети всех ресурсов еще до запуска полезной нагрузки сайтов. Dockge в режиме ожидания потребляет всего 30–45 МБ RAM.
- Проблема рассинхронизации (Вендор-лок): если вы создали стек в веб-интерфейсе Portainer, он сохраняется во внутреннем хранилище панели. Если системный администратор зайдет по SSH и отредактирует файл через
nanoили запуститdocker compose up -dв консоли, Portainer выдаст ошибку рассинхронизации («This stack was created outside of Portainer») и заблокирует управление стеком из веба. - Агрессивный маркетинг лицензий: постоянные баннеры Portainer Business Edition (EE), навязывание платных подписок и искусственные ограничения базовой редакции CE вызывают обоснованное раздражение инженеров.
Dockge решает эту проблему радикально: он полностью исключает вендор-лок и работает напрямую с нативным CLI docker compose.
2. Архитектура Dockge: чистый Compose-first подход и прозрачное хранение в /opt/stacks
Архитектура Dockge построена вокруг принципа «Файловая система — единственный источник истины» (Single Source of Truth):
- Прозрачная файловая структура: все ваши проекты располагаются в одной базовой директории хоста (по стандарту
/opt/stacks). Каждый стек изолирован в собственной папке, например/opt/stacks/telegram-bot/compose.yamlи/opt/stacks/telegram-bot/.env. - Двусторонний обмен без посредников: изменили файл в красивом веб-редакторе — Dockge мгновенно сохранил его на диск и применил команду
docker compose up -d. Изменили файл по SSH в консоли или задеплоили ветку через GitHub Actions — нажали кнопку «Scan Stacks Folder» или перезагрузили страницу, и веб-панель сразу отображает актуальное состояние. - Абсолютная безопасность данных: если контейнер Dockge вдруг аварийно остановится, будет случайно удален или обновлен — ваши приложения и сайты продолжат бесперебойно работать. Все ваши конфиги останутся обычными файлами на диске сервера, которыми можно управлять привычными системными утилитами.
- Встроенный интерактивный веб-терминал: благодаря интеграции с библиотекой
xterm.jsвы можете в один клик провалиться в терминал (shилиbash) любого запущенного контейнера прямо из браузера без необходимости открывать отдельную SSH-сессию.
3. Пошаговая установка Dockge на Ubuntu 24.04 через Docker Compose
Для развертывания панели потребуется чистый VDS под управлением Ubuntu 22.04 или 24.04 LTS с установленным Docker Engine и плагином Compose v2. Если Docker еще не установлен, используйте официальный скрипт установки от разработчиков Docker:
# 1. Обновление пакетов и установка Docker (если не был установлен ранее)
curl -fsSL https://get.docker.com | sh
# 2. Добавление текущего пользователя в группу docker
sudo usermod -aG docker $USER
newgrp docker
# Примечание: группа docker предоставляет root-эквивалентные привилегии в системе
Создадим стандартизированную структуру каталогов. Создадим папку /opt/stacks, в которой будут храниться все ваши будущие проекты, и изолированный каталог /opt/dockge для конфигурации самого менеджера:
# Создание рабочих директорий
sudo mkdir -p /opt/stacks /opt/dockge
sudo chown -R $USER:$USER /opt/stacks /opt/dockge
cd /opt/dockge
Создадим манифест compose.yaml для запуска Dockge:
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: unless-stopped
ports:
- "5001:5001"
volumes:
# Проброс сокета Docker для управления контейнерами хоста
- /var/run/docker.sock:/var/run/docker.sock
# Каталог конфигурации и данных Dockge
- ./data:/app/data
# Директория со стеками проектов
- /opt/stacks:/opt/stacks
environment:
- NODE_ENV=production
# Указываем Dockge, где искать папки со стеками
- DOCKGE_STACKS_DIR=/opt/stacks
⚠️ Важное предупреждение о сокете Docker
Монтирование /var/run/docker.sock предоставляет контейнеру полномочия root на уровне ядра хоста. Именно поэтому панель управления нельзя оставлять открытой для всеобщего доступа на порту 5001 без надежного пароля и шифрования SSL. В 5-м разделе мы настроим безопасный обратный прокси.
Запустите контейнер командой:
docker compose up -d
Загрузка и запуск образа займут около 15–20 секунд. Откройте браузер и перейдите по адресу http://IP_ВАШЕГО_СЕРВЕРА:5001. Вас встретит окно первичной инициализации, где необходимо задать имя администратора и устойчивый мастер-пароль.
4. Управление стеками в веб-интерфейсе: редактор compose.yaml, .env и живой терминал
После авторизации открывается лаконичный двухпанельный интерфейс. В левой колонке располагается перечень стеков с цветовыми индикаторами статуса (зеленый — активен, желтый — перезапуск, серый — остановлен). В правой рабочей зоне расположен визуальный редактор.
🚀 Онлайн-генератор шаблонов стеков Docker Compose
Чтобы не писать манифесты вручную с нуля и не выверять отступы YAML, воспользуйтесь нашим бесплатным Генератором Docker Compose стеков онлайн. Выберите нужные компоненты (Nginx, Node.js, PostgreSQL, Redis, Dockge), настройте лимиты памяти и скопируйте готовый compose.yaml вместе с файлом .env прямо в Dockge в один клик.
Ниже представлена демонстрация работы легковесного интерфейса Dockge при запуске изолированного стека:
Нажмите кнопку «+ Compose» в верхнем левом углу. Допустим, мы хотим развернуть тестовый стек с легким веб-сервером Nginx и Redis-кэшем. В левом поле задайте имя стека web-showcase, а в правом окне редактора вставьте следующий код:
services:
nginx-web:
image: nginx:alpine
container_name: showcase_web
restart: unless-stopped
ports:
- "8080:80"
environment:
- APP_ENV=${ENVIRONMENT}
networks:
- internal_net
cache-redis:
image: redis:7-alpine
container_name: showcase_redis
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
networks:
- internal_net
networks:
internal_net:
driver: bridge
Обратите внимание на блок «.env», расположенный непосредственно под редактором YAML. Нажмите кнопку «Edit .env» и добавьте конфиденциальные переменные:
ENVIRONMENT=production
REDIS_PASSWORD=SuperSecurePassword_2026_xK9
Нажмите кнопку «Deploy». Dockge в режиме реального времени откроет панель логов, скачает слои образов, создаст изолированную сеть internal_net и запустит контейнеры. Вы можете наблюдать процесс загрузки прямо в консольном виджете.
Кликнув по имени любого запущенного контейнера (например, showcase_web), вы получаете доступ к двум важнейшим инструментам:
- Вкладка «Logs»: непрерывный поток логов
stdout/stderrс цветовой дифференциацией и поисковой строкой. - Вкладка «Terminal»: полноценный терминал
/bin/sh. Больше не нужно подключаться по SSH и писать длинные команды видаdocker exec -it showcase_web /bin/sh— отладка доступна прямо в окне браузера.
5. Продакшен-контур: привязка домена, авто-SSL через Caddy или Nginx и защита порта 5001
Оставлять панель управления доступной по открытому протоколу HTTP на порту 5001 — грубая брешь в безопасности. Автоматизированные ботнеты непрерывно сканируют подсети провайдеров в поисках открытых портов Docker-панелей. Защитим Dockge в два этапа.
Этап 1: Привязка порта к локальному интерфейсу (Loopback). Откройте файл /opt/dockge/compose.yaml и замените публичный проброс портов на локальный:
ports:
# Панель слушает только локальный адрес 127.0.0.1 хоста
- "127.0.0.1:5001:5001"
Перезапустите стек: docker compose up -d. Теперь порт 5001 недоступен из внешней сети.
Этап 2: Настройка обратного прокси с автоматическим продлением SSL-сертификатов. Рассмотрим два наиболее эффективных варианта:
Вариант А: Использование Caddy (Рекомендуется за простоту). Веб-сервер Caddy автоматически выпускает и продлевает бесплатные сертификаты Let's Encrypt / ZeroSSL. Достаточно добавить в /etc/caddy/Caddyfile всего три строки:
dockge.vash-domen.ru {
reverse_proxy 127.0.0.1:5001
}
Перезапустите службу Caddy: sudo systemctl reload caddy.
Вариант Б: Использование классического Nginx. Если на вашем сервере в качестве основного фронтенда работает Nginx, создайте виртуальный хост в /etc/nginx/sites-available/dockge.conf. Критически важно передать заголовки обновления протокола для WebSocket, иначе веб-терминал и поток логов работать не будут:
server {
listen 80;
server_name dockge.vash-domen.ru;
location / {
proxy_pass http://127.0.0.1:5001;
proxy_http_version 1.1;
# Поддержка WebSocket для интерактивного терминала и живых логов
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_read_timeout 86400;
}
}
Активируйте виртуальный хост, проверьте синтаксис и запустите утилиту Certbot. Плагин Nginx автоматически пройдет верификацию домена Let's Encrypt, добавит защищенный SSL-блок на 443 порт и настроит постоянный редирект с HTTP на HTTPS:
# Активация конфигурации и перезагрузка Nginx
sudo ln -s /etc/nginx/sites-available/dockge.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# Автоматический выпуск SSL-сертификата и включение постоянного редиректа
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d dockge.vash-domen.ru --redirect
6. Агентский режим: как объединить несколько серверов VDS в единую панель
Одна из сильнейших возможностей Dockge — встроенный агентский режим (Agent Mode). Если у вас арендовано несколько виртуальных серверов (например, рабочий VDS в Москве для фронтенда и второй VDS в Санкт-Петербурге под фоновые воркеры и базы данных), вам не нужно держать открытыми несколько вкладок в браузере.
На удаленном сервере (VDS-2) разверните Dockge с указанием переменной окружения DOCKGE_MODE=agent:
services:
dockge-agent:
image: louislam/dockge:1
container_name: dockge_agent
restart: unless-stopped
ports:
- "5001:5001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- NODE_ENV=production
- DOCKGE_MODE=agent
- DOCKGE_STACKS_DIR=/opt/stacks
После старта перейдите в веб-интерфейс основного сервера (VDS-1), нажмите на аватар в правом верхнем углу, выберите пункт «Add Agent» и укажите адрес удаленного сервера и сгенерированный токен безопасности. После подключения все стеки с обоих VDS появятся в общем дереве, сгруппированные по именам серверов.
7. Сравнительная матрица: Dockge vs Portainer CE vs Coolify v4
Чтобы вам было проще выбрать инструмент под ваши задачи и бюджет хостинга, сравним три наиболее популярных инструмента управления контейнерами:
| Критерий | Dockge | Portainer CE | Coolify v4 |
|---|---|---|---|
| Потребление RAM в покое | ~30–45 МБ |
~250–450 МБ |
~500–800 МБ |
| Нагрузка на CPU в фоне | < 0.1% vCPU |
1.5–3.5% vCPU |
3.0–6.0% vCPU |
| Формат хранения стеков | Обычные файлы compose.yaml в /opt/stacks |
Внутренняя база BoltDB / SQLite | PostgreSQL + Git репозитории |
| Синхронизация с консолью CLI | Полная двухсторонняя без конфликтов | Ограниченная (риск рассинхронизации) | Управляется движком PaaS |
| Встроенный веб-терминал | Да (быстрый xterm.js к любому сервису) | Да | Да |
| Мультисерверность (Агенты) | Встроенный лёгкий Agent Mode | Portainer Edge Agent | Кластер серверов Coolify |
| Резервное копирование | Бэкап одной папки /opt/stacks за 5 сек |
Экспорт проприетарной БД панели | Дамп системной СУБД PostgreSQL |
| Холодный старт панели | ~2 секунды |
15–25 секунд |
40–60 секунд |
| Минимальный тариф VDS | 1 vCPU / 1 GB RAM |
1–2 vCPU / 2 GB RAM |
2 vCPU / 4 GB RAM |
| Лицензия и монетизация | 100% MIT Open-Source без баннеров | CE с навязчивым апгрейдом до EE | Open-Source (AGPLv3) |
| Основное назначение | Легковесный менеджер Compose-стеков на недорогом VDS | Комплексное управление Swarm и томами | Полноценный аналог Vercel/Heroku с авто-CI/CD |
8. Резюме и чек-лист стабильного Docker-сервера на базе Dockge
Переход на Dockge позволяет избавиться от лишних прослоек абстракции и превращает ваш VDS в надежную, предсказуемую и легко администрируемую среду. Для поддержания стабильности сервера придерживайтесь нескольких базовых правил:
- Регулярный бэкап каталога
/opt/stacks: поскольку все стеки представляют собой текстовые файлы, достаточно раз в сутки архивировать или синхронизировать папку/opt/stacksс внешним S3-хранилищем. В случае фатального сбоя сервера вы сможете восстановить всю инфраструктуру на новом VDS буквально за 2 команды. - Ограничение объема Docker-логов: настройте глобальный лимит логов в
/etc/docker/daemon.json(директивыmax-size: "10m"иmax-file: "3"), чтобы переполненные логи не забили дисковое пространство. - Изоляция секретов: никогда не хардкодьте пароли от баз данных внутри
compose.yaml— всегда выносите их во вкладку переменных окружения.env. - Сетевая изоляция портов: не пробрасывайте порты баз данных (PostgreSQL, MySQL, Redis) в глобальную сеть — связывайте контейнеры через общие внутренние Docker-сети.
Разверните чистый VDS под Docker за пару минут
Для комфортной работы связки из Dockge, обратного прокси и 5–10 прикладных контейнеров отлично подойдут проверенные серверы с быстрыми накопителями NVMe, стабильным сетевым каналом и защитой от сетевых атак.
Рекомендуемые VDS-провайдеры
Отказоустойчивые сервера с быстрыми NVMe и каналом до 1 Гбит/с
Timeweb Cloud
Моментальное развертывание чистой Ubuntu 24.04 LTS и готовые образы Docker. Высокоскоростные NVMe-диски до 3500 МБ/с и надежная внутренняя сеть VPC для изоляции стеков.
Selectel
Дата-центры Tier III в РФ. Аппаратная защита от DDoS-атак на уровнях L3/L4, фиксированная скорость портов до 1 Гбит/с без жестких лимитов и гибкое масштабирование ресурсов.
Beget
Удобное управление виртуальными серверами, автоматические снапшоты, встроенный мониторинг системных ресурсов и отзывчивая техническая поддержка 24/7.