Облачные платформы развертывания вроде Vercel, Heroku, Railway и Render приучили разработчиков к максимальному комфорту: push в ветку Git — и через минуту обновленный сервис уже работает в продакшене с автоматическим HTTPS и подключенной базой данных. Однако для российских команд и независимых разработчиков зарубежные PaaS-сервисы превратились в источник постоянных рисков: блокировка учетных записей, невозможность оплаты подписок отечественными картами и прогрессивные счета от $20 до $100+ в месяц даже за небольшие пет-проекты. Открытая PaaS-платформа Dokploy (более 38 000 звёзд на GitHub, актуальный стабильный релиз v0.30.10) решает эту проблему: она превращает любой доступный VDS в собственное приватное мини-облако с автодеплоем из Git, выпуском SSL-сертификатов Let's Encrypt и базами данных в один клик. При этом Dokploy написан на TypeScript и расходует в режиме ожидания всего 150–250 МБ оперативной памяти, что делает его в разы экономичнее альтернатив.
1. Архитектура Dokploy: как устроен легковесный PaaS на базе Traefik v3 и Docker Swarm
В отличие от классических панелей управления сервером (Portainer, FastPanel), которые только управляют отдельными контейнерами, PaaS-платформа берет на себя весь жизненный цикл приложения: сборку исходного кода, динамическую маршрутизацию трафика, выпуск SSL-сертификатов, управление переменными окружения и создание резервных копий баз данных.
В основе Dokploy v0.30.10 лежит элегантная и высокопроизводительная архитектура из трех ключевых компонентов:
- Панель управления и бэкенд (Dokploy Core): монолитное приложение на базе Next.js и Node.js. Объединение интерфейса и серверных обработчиков в единый процесс исключает лишние накладные расходы и обеспечивает мгновенный отклик веб-панели при базовом потреблении всего 150–200 МБ RAM. Все метаданные проектов, права доступа и настройки сохраняются в изолированной базе данных PostgreSQL 16.
- Динамический Edge-роутер Traefik v3.6: выступает единой точкой входа (Reverse Proxy) для всех клиентских HTTP/HTTPS и WebSocket запросов на портах
80и443. Traefik непрерывно опрашивает Docker Engine API и автоматически подхватывает новые сервисы при их появлении, самостоятельно запрашивая и продлевая бесплатные сертификаты Let's Encrypt без перезагрузки веб-сервера. - Движок оркестрации Docker Swarm (Single-Node): Dokploy использует встроенный в Docker режим Swarm. В рамках одного сервера Swarm работает без какого-либо оверхеда на кластеризацию, предоставляя два критически важных преимущества: изолированную оверлейную сеть
dokploy-network(контейнеры общаются между собой по внутренним DNS-именам) и бесшовные скользящие обновления (rolling updates) приложений с нулевым временем простоя (Zero-Downtime). - Универсальные сборщики (Buildpacks & Dockerfile): Dokploy умеет собирать проекты как по классическим файлам
Dockerfileиdocker-compose.yml, так и автоматически определять стек приложения (Node.js, Python, Go, PHP, Rust) через легковесный движок Nixpacks и Heroku Buildpacks без необходимости вручную писать инструкции сборки.
💡 Почему Dokploy использует Docker Swarm даже на одном сервере
Многие разработчики считают Swarm тяжелой технологией для больших кластеров. В реальности режим docker swarm init активируется прямо внутри стандартного демона Docker за полсекунды. Он не запускает тяжелых фоновых демонов, но открывает доступ к механизму Docker Secrets (пароли от баз данных передаются в контейнеры через зашифрованную оперативную память, а не через открытые переменные окружения) и оверлейным сетям, обеспечивая корпоративный уровень изоляции сервисов.
2. Сравнение Dokploy, Coolify и Portainer: почему Dokploy быстрее и экономичнее
При выборе инструмента для хостинга приложений разработчики чаще всего сравнивают Dokploy с популярными решениями Coolify и Portainer.
| Критерий | Dokploy (v0.30.10) | Coolify (v4) | Portainer CE |
|---|---|---|---|
| Потребление RAM в покое | ~150–250 МБ | ~500–800 МБ (Laravel + Redis + воркеры) | ~50–100 МБ |
| Стек платформы | TypeScript, Next.js, Traefik, PostgreSQL | PHP / Laravel, Redis, Traefik, PostgreSQL | Go (Golang), веб-панель Vue.js |
| Автодеплой из Git (CI/CD) | Да (GitHub, GitLab, вебхуки, автосборка) | Да (GitHub, GitLab, Bitbucket) | Базовый Git-pull (без автосборки по коммиту) |
| Базы данных в 1 клик | Postgres, MySQL, MariaDB, Redis, Mongo | Postgres, MySQL, MariaDB, Redis, Mongo | Только через ручные Compose-шаблоны |
| Автоматический SSL | Да (встроенный Traefik v3) | Да (встроенный Traefik v3) | Требуется внешний Nginx / Caddy |
| Рекомендуемый минимум VDS | От 2 ГБ RAM (от 350–450 ₽/мес) | От 4 ГБ RAM (от 800–1200 ₽/мес) | От 1 ГБ RAM (от 300 ₽/мес) |
Важный инженерный нюанс: сам стек Coolify на базе Laravel в фоновом режиме потребляет порядка 500–800 МБ RAM. Однако с учетом очереди воркеров, баз данных и пиковых нагрузок при сборке образов разработчики Coolify официально рекомендуют серверы от 4 ГБ RAM. Dokploy с компактным ядром на Next.js держит базовое потребление около 150–250 МБ RAM и официально стартует на VDS с 2 ГБ RAM.
3. Системные требования и выбор тарифа VDS под рабочие нагрузки
Официальные требования Dokploy предусматривают минимум 2 ГБ оперативной памяти и от 30 ГБ диска. Хотя само ядро Dokploy потребляет лишь ~200 МБ, остальная память необходима операционной системе под фоновые сборки проектов (Nixpacks/Docker build) и буферы баз данных.
| Профиль нагрузки | Конфигурация VDS | Вместимость проектов | Назначение |
|---|---|---|---|
| Стартовый (Starter) | 1–2 vCPU • 2 ГБ RAM • 30 ГБ NVMe | 3–6 небольших сайтов + PostgreSQL/Redis | Пет-проекты, портфолио, боты для Telegram, персональные лендинги и блоги. |
| Рабочий (Production) | 2–4 vCPU • 4–8 ГБ RAM • 60 ГБ NVMe | 10–25 сервисов + базы данных + сборки Git | Коммерческие веб-приложения студий, интернет-магазины, стейджинг-окружения команд. |
| Кластерный (Multi-Node) | 4+ vCPU • 16+ ГБ RAM • 100+ ГБ NVMe | 50+ микросервисов на кластере Swarm | Высоконагруженные порталы с распределением нагрузки по нескольким VDS. |
4. Подготовка сервера: настройка UFW, Docker Engine и инициализация Swarm
Для развертывания рекомендуется чистый инстанс с Ubuntu 24.04 LTS или Debian 12. Перед установкой стека настроим фаервол и подготовим системные зависимости.
1. Настройка сетевого экрана UFW
Поскольку входящим веб-трафиком управляет Edge-роутер Traefik, в публичный интернет открываются только порты SSH и стандартные веб-порты:
# Базовая настройка фаервола UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP Traefik'
sudo ufw allow 443/tcp comment 'HTTPS Traefik'
sudo ufw allow 3000/tcp comment 'Dokploy Dashboard Initial'
sudo ufw enable
sudo ufw status
🔒 Временный доступ к порту 3000
Порт 3000 открывается временно исключительно для первоначальной регистрации администратора. Как только в панели Dokploy будет привязан персональный домен с автоматическим SSL-сертификатом от Traefik, порт 3000 рекомендуется немедленно закрыть правилом sudo ufw delete allow 3000/tcp, чтобы панель управления была защищена от несанкционированного сканирования ботами.
2. Установка актуального Docker Engine 28 и подготовка окружения
Обновите репозитории и установите официальный движок Docker Engine:
# Установка зависимостей и Docker Engine
sudo apt update && sudo apt install -y curl wget git jq openssl
curl -fsSL https://get.docker.com | sh
# Включение пользователя в группу docker с учетом root-эквивалентности
sudo usermod -aG docker "$USER"
newgrp docker
5. Развертывание Dokploy v0.30.10: официальный инсталлятор, оверлейная сеть и ручной запуск
Официальная документация Dokploy предлагает два способа установки: быстрый однострочный скрипт для начинающих и пошаговое ручное развертывание для администраторов, которым нужен полный контроль над каждым параметром.
Способ 1. Быстрый автоматический старт (Официальный инсталлятор)
Разработчики Dokploy поддерживают официальный проверенный скрипт установки, который самостоятельно проверяет свободные порты (80, 443, 3000), определяет публичный IP-адрес сервера, выполняет docker swarm init, создает оверлейную сеть dokploy-network, генерирует случайные пароли в Docker Secrets и запускает сервисы:
# Запуск официального установщика Dokploy (требуются права root)
curl -sSL https://dokploy.com/install.sh | sh
Скрипт автоматически скачает актуальный стабильный релиз v0.30.10, поднимет PostgreSQL 16, ядро Dokploy и маршрутизатор Traefik v3.6. По завершении в консоли появится поздравление и ссылка на веб-интерфейс http://IP_ВАШЕГО_СЕРВЕРА:3000.
Способ 2. Пошаговая прозрачная установка (Manual Installation)
Если вы хотите лично контролировать размещение конфигурационных файлов, тонко настроить лимиты памяти cgroups (--limit-memory) или запустить Dokploy в изолированном сетевом контуре, официальное руководство предоставляет пошаговый воспроизводимый сценарий.
1. Инициализация Swarm и оверлейной сети
Активируйте встроенный режим Docker Swarm и создайте персистентную сеть:
# Определение основного сетевого IP-адреса сервера
SERVER_IP=$(ip route get 1.1.1.1 | awk '{print $7}')
# Активация режима Single-Node Swarm
docker swarm init --advertise-addr "${SERVER_IP}"
# Создание защищенной оверлейной сети
docker network create --driver overlay --attachable dokploy-network
2. Создание каталогов и генерация Docker Secrets
Создайте каталог для хранения конфигураций Traefik и сгенерируйте криптографические ключи во встроенном защищенном хранилище Docker:
# Создание каталогов
sudo mkdir -p /etc/dokploy/traefik/dynamic
sudo chmod 750 /etc/dokploy
# Генерация 32-байтного пароля для PostgreSQL
openssl rand -hex 16 | docker secret create dokploy_postgres_password -
# Генерация мастер-ключа для сессий и аутентификации Better Auth
openssl rand -hex 32 | docker secret create dokploy_auth_secret -
3. Запуск базы данных PostgreSQL 16
База данных PostgreSQL обслуживает внутреннее состояние Dokploy и изолирована во внутренней сети:
docker service create \
--name dokploy-postgres \
--constraint 'node.role==manager' \
--network dokploy-network \
--env POSTGRES_USER=dokploy \
--env POSTGRES_DB=dokploy \
--secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \
--env POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \
--mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \
--limit-cpu 1.0 \
--limit-memory 512M \
postgres:16
4. Запуск основного ядра Dokploy Core (v0.30.10)
Панель управления подключается к системному сокету Docker и каталогу /etc/dokploy:
docker service create \
--name dokploy \
--replicas 1 \
--network dokploy-network \
--constraint 'node.role == manager' \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
--mount type=bind,source=/etc/dokploy,target=/etc/dokploy \
--mount type=volume,source=dokploy,target=/root/.docker \
--secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \
--secret source=dokploy_auth_secret,target=/run/secrets/dokploy_auth_secret \
--publish published=3000,target=3000,mode=host \
--env POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \
--env BETTER_AUTH_SECRET_FILE=/run/secrets/dokploy_auth_secret \
--limit-cpu 1.5 \
--limit-memory 768M \
dokploy/dokploy:v0.30.10
5. Запуск Edge-роутера Traefik v3.6
Финальный компонент — маршрутизатор Traefik v3.6, который перенаправляет клиентский веб-трафик и автоматически запрашивает SSL-сертификаты:
docker run -d \
--name dokploy-traefik \
--restart always \
--network dokploy-network \
-v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \
-v /etc/dokploy/traefik/dynamic:/etc/dokploy/traefik/dynamic \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-p 80:80/tcp \
-p 443:443/tcp \
-p 443:443/udp \
traefik:v3.6.25
Проверьте статус запущенных сервисов командой:
docker service ls
docker ps
Через 10–15 секунд панель Dokploy завершит запуск и станет доступна по адресу http://IP_ВАШЕГО_СЕРВЕРА:3000.
6. Первоначальная настройка администратора, привязка домена и автоматический HTTPS
При первом переходе по адресу http://IP_ВАШЕГО_СЕРВЕРА:3000 система откроет мастер регистрации корневого администратора.
1. Регистрация администратора и двухфакторная аутентификация
- Укажите рабочий адрес электронной почты и сгенерируйте взломостойкий пароль с помощью генератора надежных паролей (от 16 символов с цифрами и спецсимволами);
- После входа перейдите в Settings → Account Security и активируйте двухфакторную аутентификацию (2FA) через любое приложение аутентификатора (Яндекс Ключ, Google Authenticator, 2FAS). Это исключит перехват управления сервером при компрометации пароля.
2. Привязка домена панели управления через Traefik
Работать с панелью через незашифрованный IP-адрес на порту 3000 небезопасно: пароли и переменные окружения передаются в открытом виде. Привяжем к Dokploy собственный домен (например, dokploy.example.com):
- В панели управления вашего DNS-провайдера создайте A-запись для поддомена
dokploy, указав внешний IP-адрес вашего VDS; - В интерфейсе Dokploy перейдите в раздел Settings → Server → Domain;
- Укажите ваш домен
dokploy.example.com, оставьте порт3000и включите опцию Generate Certificate (Let's Encrypt); - Нажмите кнопку Save. В течение 10–20 секунд Traefik выполнит процедуру проверки HTTP-01, выпустит валидный SSL-сертификат и настроит постоянный редирект на HTTPS.
Проверьте корректность цепочки шифрования через онлайн-тест SSL. Теперь закройте прямой доступ к порту 3000 в системном фаерволе, чтобы исключить сканирование:
sudo ufw delete allow 3000/tcp
sudo ufw status
С этого момента панель управления доступна строго по безопасному адресу https://dokploy.example.com через стандартный защищенный порт 443. Проверить отсутствие открытого порта 3000 снаружи можно через сканер открытых портов.
7. Деплой первого веб-приложения из Git: автосборка Nixpacks, Dockerfile и вебхуки
Главное преимущество Dokploy — максимальная простота развертывания веб-приложений без написания сложных CI/CD пайплайнов (GitHub Actions, GitLab CI).
1. Создание проекта и подключение репозитория
- На главном дашборде нажмите Create Project и задайте имя (например,
my-ecommerce-api); - Внутри проекта выберите Add Service → Application;
- Во вкладке Source выберите удобный способ поставки кода:
- GitHub / GitLab App: официальная бесшовная интеграция с автоматической синхронизацией ваших приватных репозиториев;
- Git Provider (SSH Key): прямое подключение через SSH-ключ развертывания (Deploy Key);
- Public Git: клонирование открытого репозитория по HTTPS.
- Укажите репозиторий и целевую ветку для отслеживания (обычно
mainилиproduction).
2. Выбор движка сборки (Build Type)
Dokploy поддерживает три стратегии сборки приложений:
- Nixpacks (Рекомендуется для большинства проектов): интеллектуальный сборщик от команды Railway. Он автоматически сканирует кодовую базу, определяет язык программирования (Node.js, Nest.js, Python, FastAPI, Django, Go, PHP, Rust), устанавливает нужную версию рантайма, компилирует зависимости и запускает приложение без единой строчки Dockerfile;
- Dockerfile: если в корне проекта уже есть собственный кастомизированный файл
Dockerfileсо специфическими системными библиотеками; - Docker Image: прямое развертывание готового контейнера из реестра Docker Hub, GitHub Packages или приватного реестра.
3. Переменные окружения и автоматический деплой по Git Push
Во вкладке Environment перечислите все секретные ключи приложения в формате KEY=VALUE (токены API, строки подключения к базам). Dokploy безопасно сохраняет их и инжектирует в контейнер при старте.
Во вкладке Domains укажите боевой домен сервиса (например, api.example.com), порт внутри контейнера (например, 8000 или 3000) и активируйте автоматический Let's Encrypt.
Во вкладке Deployments скопируйте URL сгенерированного вебхука Webhook URL и вставьте его в настройки вашего репозитория (Settings → Webhooks в GitHub/GitLab). Теперь каждый вызов git push в ветку main будет автоматически инициировать пересборку контейнера, а встроенный механизм Traefik переключит клиентский трафик на свежую версию без прерывания пользовательских сессий.
Рекомендуемые VDS-провайдеры
Отказоустойчивые сервера с быстрыми NVMe и каналом до 1 Гбит/с
Timeweb Cloud — Быстрые NVMe VDS для PaaS и контейнеров
Высокочастотные процессоры (до 3.4 ГГц) и скоростные NVMe-накопители для молниеносной сборки контейнеров Nixpacks и работы баз данных.
Selectel — Надежные серверы для продакшен-окружений
Высокая стабильность сетевых каналов, SLA 99.98% и готовая интеграция с российским объектным S3-хранилищем для автоматических бэкапов.
Beget — Доступные VDS для пет-проектов и стартапов
Моментальная установка Ubuntu 24.04 LTS, удобный веб-терминал, круглосуточная поддержка и посекундная тарификация ресурсов.
8. Развертывание баз данных в 1 клик и автоматические бэкапы в S3-хранилища
В отличие от чисто облачных сервисов (Vercel, Render), где подключение управляемой базы данных Postgres стоит от $7–$15 в месяц за каждый инстанс, Dokploy позволяет поднимать изолированные СУБД прямо на вашем VDS за один клик.
1. Запуск базы данных в изолированном контуре
- Внутри проекта нажмите Add Service → Database;
- Выберите необходимую СУБД: PostgreSQL, MySQL, MariaDB, Redis, libsql или MongoDB;
- Задайте имя сервиса (например,
prod-postgres) и выберите версию образа (например,postgres:16); - Dokploy автоматически сгенерирует надежные учетные данные (логин, пароль, имя БД) и сформирует готовые строки подключения (Internal Connection String) для внутренней сети:
postgresql://dokploy:PASSWORD@prod-postgres:5432/my_database - Ваши приложения общаются с СУБД по защищенному внутреннему имени внутри сети
dokploy-networkбез необходимости выставлять порт базы наружу в интернет.
2. Настройка автоматических бэкапов в S3-хранилище
Хранить резервные копии на том же диске, где крутится рабочая база данных — опасная практика. Dokploy содержит встроенный модуль резервного копирования в любые S3-совместимые объектные хранилища (Timeweb Cloud S3, Selectel, Яндекс Облако или собственный кластер Garage S3).
- Перейдите в раздел Settings → Destinations → Add Destination;
- Выберите тип S3 Compatible и заполните реквизиты доступа:
- Endpoint: адрес шлюза вашего провайдера (например,
s3.timeweb.cloudилиs3.ru-1.storage.selcloud.ru); - Bucket: имя предварительно созданного бакета;
- Access Key & Secret Key: ключи сервисного аккаунта;
- Region: системный регион хранилища (например,
ru-1).
- Endpoint: адрес шлюза вашего провайдера (например,
- Откройте настройки вашей базы данных и перейдите во вкладку Backups;
- Нажмите Add Backup, укажите подключенное S3-назначение и задайте расписание в формате cron (например,
0 3 * * *— каждую ночь в 03:00); - Укажите глубину хранения (Retention Policy, например 14 последних копий).
Теперь каждую ночь Dokploy будет автоматически выполнять нативный дамп СУБД (pg_dump для Postgres или mysqldump для MySQL), сжимать его в архив и безопасно выгружать в удаленное независимое облако.
9. Мультиконтейнерные стеки Docker Compose внутри Dokploy: подключение к Traefik
Для сложных систем, состоящих из нескольких связанных сервисов (например, CMS WordPress + MySQL + Redis или связка бэкенда FastAPI, воркеров Celery и брокера Redis), Dokploy предоставляет нативную поддержку Docker Compose.
⚡ Критический нюанс: интеграция с оверлейной сетью dokploy-network
Чтобы маршрутизатор Traefik мог перенаправлять входящий доменный трафик на веб-контейнеры из вашего файла Compose, сервисы обязаны быть подключены к внешней сети dokploy-network, а в блоке labels должны быть прописаны правила маршрутизации Traefik.
Пример готового боевого манифеста Compose для стека FastAPI + Redis:
services:
api:
image: python:3.12-slim
command: uvicorn main:app --host 0.0.0.0 --port 8000
restart: unless-stopped
environment:
- REDIS_URL=redis://redis_cache:6379/0
networks:
- dokploy-network
deploy:
resources:
limits:
cpus: "1.0"
memory: 512M
mem_limit: 512m
cpus: 1.0
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapi.rule=Host(`api.example.com`)"
- "traefik.http.routers.myapi.entrypoints=websecure"
- "traefik.http.routers.myapi.tls.certresolver=letsencrypt"
- "traefik.http.services.myapi.loadbalancer.server.port=8000"
redis_cache:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
networks:
- dokploy-network
deploy:
resources:
limits:
cpus: "0.5"
memory: 256M
mem_limit: 256m
cpus: 0.5
networks:
dokploy-network:
external: true
volumes:
redis_data:
Вставьте этот код в раздел Add Service → Compose в панели Dokploy и нажмите Deploy. Платформа самостоятельно запустит сервисы, подключит их к единой защищенной сети и активирует маршрутизацию домена с SSL-сертификатом Let's Encrypt.
10. Резервное копирование самого инстанса Dokploy и регламент обновлений
Помимо резервного копирования баз данных клиентских проектов, критически важно защитить саму платформу Dokploy: список проектов, учетные записи, выпущенные сертификаты Let's Encrypt и ключи доступа.
1. Автоматический скрипт резервного копирования Dokploy
Все состояние сервиса состоит из системной базы данных dokploy-postgres и конфигурационного каталога /etc/dokploy. Создадим скрипт /root/backup_dokploy.sh:
#!/usr/bin/env bash
set -euo pipefail
BACKUP_DIR="/var/backups/dokploy"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mkdir -p "${BACKUP_DIR}"
echo "[$(date)] Старт резервного копирования Dokploy..."
# 1. Горячий дамп системной базы данных PostgreSQL из запущенного контейнера
POSTGRES_CONTAINER=$(docker ps -q -f name=dokploy-postgres | head -n 1)
if [[ -z "${POSTGRES_CONTAINER}" ]]; then
echo "[ОШИБКА] Контейнер dokploy-postgres не найден!" >&2
exit 1
fi
docker exec "${POSTGRES_CONTAINER}" pg_dump -U dokploy dokploy > "${BACKUP_DIR}/dokploy_db_${TIMESTAMP}.sql"
# 2. Архивация конфигурации Traefik, сертификатов SSL и дампа БД
tar -czf "${BACKUP_DIR}/dokploy_full_${TIMESTAMP}.tar.gz" \
-C /etc/dokploy . \
-C "${BACKUP_DIR}" "dokploy_db_${TIMESTAMP}.sql"
# Удаление промежуточного сырого SQL-файла
rm -f "${BACKUP_DIR}/dokploy_db_${TIMESTAMP}.sql"
# 3. Проверка успешности создания и ненулевого размера архива
if [[ ! -s "${BACKUP_DIR}/dokploy_full_${TIMESTAMP}.tar.gz" ]]; then
echo "[ОШИБКА] Архив резервной копии пуст или не был создан!" >&2
exit 1
fi
# 4. Установка строгих прав доступа только для пользователя root
chmod 600 "${BACKUP_DIR}/dokploy_full_${TIMESTAMP}.tar.gz"
# 5. Ротация: удаление локальных бэкапов старше 14 дней
find "${BACKUP_DIR}" -name "dokploy_full_*.tar.gz" -type f -mtime +14 -delete
echo "[$(date)] Резервная копия успешно создана: ${BACKUP_DIR}/dokploy_full_${TIMESTAMP}.tar.gz"
Сделайте скрипт исполняемым и добавьте ночную задачу в планировщик cron (ежедневно в 04:30):
sudo chmod +x /root/backup_dokploy.sh
# Добавление в crontab:
# 30 4 * * * /root/backup_dokploy.sh >> /var/log/dokploy_backup.log 2>&1
2. Регламент обновления Dokploy до новых версий
Способ обновления зависит от выбранного вами метода первоначальной установки:
Вариант А: Если Dokploy установлен через официальный скрипт install.sh
Официальный инсталлятор поддерживает встроенный режим обновления, который самостоятельно скачивает свежий образ и бесшовно обновляет службу в Docker Swarm:
# Запуск обновления через официальный инсталлятор
curl -sSL https://dokploy.com/install.sh | sh -s update
Вариант Б: Если Dokploy установлен вручную (Manual Installation)
При ручной установке обновление выполняется стандартной скользящей заменой контейнера через Docker Swarm (Zero-Downtime):
# 1. Скачивание свежего образа платформы
docker pull dokploy/dokploy:latest
# 2. Скользящее обновление сервиса без прерывания работы сайтов
docker service update --image dokploy/dokploy:latest dokploy
# 3. Проверка журнала событий после обновления
docker service logs --tail=50 dokploy
Обновление ядра Dokploy никак не прерывает работу уже развернутых пользовательских приложений и баз данных — они продолжают обрабатывать трафик через независимый маршрутизатор Traefik.
11. Чек-лист готовности Dokploy к продакшен-эксплуатации
Перед переносом коммерческих проектов на собственный инстанс Dokploy проверьте конфигурацию по ключевым стандартам надежности и безопасности:
| Параметр | Рекомендуемое значение | Инженерный смысл |
|---|---|---|
| Порт веб-панели 3000 | Закрыт в UFW | Панель доступна только через HTTPS-домен на порту 443 с шифрованием сессий. |
| Аутентификация администратора | Включен 2FA (TOTP) | Защищает от компрометации пароля и несанкционированного доступа к серверам. |
| Шифрование секретов | Docker Secrets | Пароли от БД хранятся в защищенной памяти, а не в открытых текстовых файлах. |
| Сетевая изоляция | dokploy-network (overlay) | Базы данных и микросервисы общаются по внутренним DNS без открытых портов. |
| Резервное копирование БД | Ночной cron в S3 | Гарантирует быстрое восстановление при сбое дисковой подсистемы сервера. |
| Лимиты ресурсов (cgroups) | Заданы limits cpus/memory | Предотвращает падение сервера из-за OOM Killer при внезапных утечках памяти в приложениях. |