ZIM-НИЙ SAAALEЗимние скидки: до −50% на старт и −20% на продление
до 31.01.2026 Подробнее
Выберите продукт

Kamal, Dokku и CapRover на VDS: деплой без Kubernetes и почти как PaaS

Kubernetes нужен не всегда: Kamal, Dokku и CapRover дают удобный деплой на VDS поверх Docker. Разберём модель работы, обновления почти без простоя, ресурсы, сеть, TLS, секреты, бэкапы и чеклист прод-эксплуатации.
Kamal, Dokku и CapRover на VDS: деплой без Kubernetes и почти как PaaS

Когда слышишь «контейнеры в проде», рука тянется к Kubernetes. Но для многих проектов это слишком тяжёлая артиллерия: дорого по времени, сложно по операционным рискам, а профит появляется только при масштабе и зрелых процессах. На практике вебмастера и DevOps часто хотят другое: быстро и предсказуемо деплоить на VDS, иметь что-то похожее на PaaS, и при этом не строить полноценный кластер.

В этой статье разберём три популярных варианта «не-Kubernetes» деплоя: Kamal, Dokku и CapRover. Все они используют Docker, но отличаются философией: Kamal — это deploy tool (условно «современный Capistrano для контейнеров»), Dokku — минималистичный PaaS на одном сервере, CapRover — PaaS с панелью и готовыми шаблонами приложений.

Я буду говорить языком практики: что выбрать под ваши задачи, какие требования к серверу, как устроен zero downtime, где будут боль и грабли, и как не потерять данные.

Контекст: что заменяем и что хотим получить

Если упростить, Kubernetes решает три крупных задачи: оркестрация (куда и как запускать), сетевое взаимодействие (service discovery, ingress), и управление жизненным циклом (rolling update, healthchecks, autoscaling).

Когда мы выбираем Kamal/Dokku/CapRover, мы почти всегда целимся в сценарий:

  • 1–2 сервера (иногда 3–5), без выделенной платформенной команды;
  • несколько сервисов: веб-приложение + воркеры + очередь + БД (часто отдельно);
  • регулярный deploy из Git/CI и быстрый откат;
  • простая маршрутизация доменов, TLS, логи;
  • минимально возможный даунтайм, в идеале почти zero downtime для API и фронта.

Важно: «zero downtime» почти никогда не получается «одной галочкой». Если релиз включает миграции БД, смену схемы, пересборку кешей или прогрев — придётся проектировать обновление так, чтобы старая и новая версия какое-то время жили вместе (backward-compatible migrations).

Kamal: деплой контейнеров по SSH без PaaS-магии

Kamal (его часто помнят как mrsk) — инструмент, который берёт Docker-образ, по SSH раскладывает его на сервер(а), поднимает контейнеры и переключает трафик через прокси/балансировщик. Концептуально это «инфраструктура как код», но без кластера и без отдельной PaaS-платформы.

Как Kamal устроен (упрощённо)

  • Сборка образа локально или в CI.
  • Пуш образа в registry (частный или публичный).
  • SSH-доступ к серверам и установленный Docker.
  • Запуск контейнеров приложения и аксессуаров (например, Redis) по декларативному конфигу.
  • Rolling update: замена контейнеров с ожиданием готовности.

Плюс Kamal — минимальная «платформа» на сервере и высокая прозрачность. Минус — меньше готовых интеграций «из коробки» в стиле PaaS: сетевые правила, бэкапы, секреты и часть автоматизации придётся выстроить самому.

Zero downtime в Kamal: где реально работает

Чаще всего обновление выглядит так: поднять новый контейнер → дождаться «готов» → переключить прокси → остановить старый. Для веб-слоя это даёт очень приличный результат, если приложение умеет стартовать предсказуемо и корректно отдаёт сигнал готовности (readiness).

Типовые причины даунтайма при деплое с Kamal:

  • долгий старт приложения (прогрев кеша, миграции в процессе старта);
  • неверный healthcheck (контейнер «жив», а приложение ещё не готово);
  • миграции БД, которые блокируют таблицы или ломают обратную совместимость;
  • один сервер без запаса ресурсов: во время релиза живут старая и новая версия, а памяти/CPU не хватает.
FastFox VDS
Облачный VDS-сервер в России
Аренда виртуальных серверов с моментальным развертыванием инфраструктуры от 195₽ / мес

Чтобы лучше представить механику «поднять новую версию и переключить трафик», держите в голове схему rolling update и проверки готовности.

Схема rolling update и проверок готовности при деплое контейнеров

Когда Kamal — лучший выбор

  • Вы хотите управлять деплоем как кодом и не держать панель/платформу.
  • У вас 1–5 серверов и понятная топология.
  • Есть CI/CD, сборка образов и дисциплина по миграциям.
  • Нужно предсказуемо делать rolling update без Kubernetes.

Dokku: минималистичный PaaS на одном сервере

Dokku часто описывают как «мини-Heroku, который вы хостите сами». Он хорошо ложится на VDS, потому что его сильная сторона — быстрый PaaS-опыт: git push → build → deploy, плюс плагины для аддонов (в зависимости от выбранной экосистемы плагинов).

Что Dokku даёт вебмастеру/DevOps

  • Управление приложениями, доменами и прокси через команды Dokku.
  • Buildpacks или Dockerfile (в зависимости от подхода).
  • Переменные окружения, логи, перезапуски, простые «процессы» (web/worker).
  • Аддоны через плагины (Postgres/Redis и т.д.) с понятным lifecycle.

Dokku выигрывает там, где нужен «PaaS-процесс» без написания большого количества инфраструктурного кода. Но помните: это дополнительный слой на сервере, и его нужно обновлять, бэкапить и мониторить как отдельный компонент.

Zero downtime в Dokku: нюансы

В Dokku многое зависит от прокси и режима деплоя. В простых случаях можно добиться обновления без заметной паузы, но есть ограничения:

  • если приложение одноинстансное и происходит замена контейнера, возможен короткий разрыв;
  • если есть несколько инстансов и прокси переключает трафик только на живые, даунтайм можно сильно уменьшить;
  • на слабой VDS сборка/релиз могут съедать ресурсы и вызывать деградацию.

Практический совет: отделяйте сборку от запуска. Сборка образа в CI и деплой уже готового образа обычно стабильнее и быстрее, чем сборка на прод-сервере.

Когда Dokku — лучший выбор

  • Нужен self-hosted PaaS на одном сервере для нескольких приложений.
  • Важна скорость запуска проектов и привычный workflow «деплой одной командой».
  • Команда небольшая: Kubernetes избыточен, но хочется стандартизировать окружение.

CapRover: PaaS с панелью, шаблонами и быстрым стартом

CapRover любят за простой вход: ставите на сервер, открываете админку, выбираете шаблон (Node.js/PHP/Dockerfile/готовые one-click apps), цепляете домен и получаете рабочее приложение. Он тоже построен на Docker и управляет публикацией через reverse proxy.

Сильные стороны CapRover

  • Панель управления: удобно, когда не хочется всё делать в CLI.
  • Готовые one-click apps и шаблоны.
  • Быстрое подключение доменов и маршрутизация.
  • Порог входа ниже, чем у инструментов «только для DevOps».

Слабые стороны и риски

  • Панель — дополнительная поверхность атаки: следите за доступом, обновлениями и журналированием.
  • С ростом проекта чаще требуется строгая дисциплина по секретам, сетям и разделению сервисов.
  • Нестандартные сценарии деплоя иногда проще реализовать «в лоб» с Kamal, чем вписывать в GUI-логику.

Zero downtime в CapRover

Зависит от схемы публикации: сколько реплик, как настроены healthchecks, как происходит переключение. Для типичных веб-приложений можно добиться обновления без заметной паузы, если приложение стартует быстро, а прокси даёт трафик только «готовым» инстансам.

FastFox SSL
Надежные SSL-сертификаты
Мы предлагаем широкий спектр SSL-сертификатов от GlobalSign по самым низким ценам. Поможем с покупкой и установкой SSL бесплатно!

Сравнение: Kamal vs Dokku vs CapRover (практический взгляд)

Ниже — не «таблица маркетинга», а то, что реально влияет на эксплуатацию и восстановление после сбоев.

1) Модель управления

  • Kamal: конфиг + команды, фокус на прозрачности и повторяемости; минимум серверного «состояния платформы».
  • Dokku: PaaS-слой с командами и плагинами; workflow ближе к Heroku.
  • CapRover: PaaS с GUI; удобно для быстрых запусков и для команд смешанной квалификации.

2) Операционные риски

  • Kamal: меньше «магии», проще переносить и воспроизводить; больше ответственности за registry, секреты, бэкапы и мониторинг.
  • Dokku/CapRover: платформа хранит больше настроек и логики; критично понимать, как бэкапить и восстанавливать сам PaaS-слой.

3) Масштабирование

  • Kamal: естественно раскладывается на несколько хостов, если вы готовы управлять ролями и топологией.
  • Dokku: в первую очередь про один сервер; дальше начинаются компромиссы и надстройки.
  • CapRover: чаще single-server; расширение возможно, но быстро растёт сложность.

4) Обновления без простоя

  • Kamal: сильная сторона — контролируемый rolling update при корректных healthchecks и наличии ресурсов.
  • Dokku: может быть близко к zero downtime, но зависит от режима деплоя и архитектуры приложения.
  • CapRover: даёт плавные обновления в типовых веб-сценариях при дисциплине readiness/liveness.

Требования к VDS: что важно для любого подхода

Инструмент деплоя — вторично, если сервер подобран «впритык». Большинство проблем, которые ошибочно списывают на Kamal/Dokku/CapRover, упираются в ресурсы, диск и сеть.

Если сомневаетесь в sizing, держите под рукой отдельный ориентир по подбору ресурсов: как выбрать VDS по CPU и RAM под нагрузку.

CPU/RAM: запас на двойной запуск

Для обновления без заметного простоя нужен запас: во время релиза одновременно живут старая и новая версия (плюс прокси и фоновые сервисы). Практичное правило: держите 30–50% свободной RAM в обычном режиме, иначе rolling update превращается в OOM и рестарты.

Диск и I/O

Docker-образы, логи, volume’ы и базы быстро съедают место. Добавьте сборку образов на сервере — и получите внезапные просадки по I/O. Практика:

  • Ограничивайте и ротируйте логи контейнеров (чтобы не «съели» диск за ночь).
  • Не храните бэкапы рядом с прод-данными в одном разделе без контроля квот и заполнения.
  • Отделяйте данные БД от «одноразовых» артефактов сборки и временных файлов.

Сеть, порты и reverse proxy

Все три решения строятся вокруг reverse proxy (по роли это Nginx/Traefik-класс). Типовой набор проблем:

  • конфликт портов (80/443 заняты другим сервисом);
  • неверный проброс X-Forwarded-Proto и проблемы с генерацией HTTPS-URL;
  • не настроены таймауты, из-за чего long requests рвутся на прокси;
  • WebSocket/HTTP2 «не взлетели», потому что оставили дефолтные настройки.

Секреты, переменные окружения и доступы

В PaaS-инструментах удобно задавать переменные окружения, но важнее понимать жизненный цикл секретов: кто может читать, где хранятся, как ротируются, как попадают в CI/CD.

Минимальный практический стандарт для VDS:

  • минимум прав для SSH-ключей и пользователей; отдельный пользователь под деплой;
  • секреты не коммитим в репозиторий и не дублируем в чатах/тикетах;
  • есть процедура ротации: токены registry, ключи API, пароли БД;
  • в логах деплоя не должно «утекать» содержимое переменных.

Если вы реально целитесь в zero downtime, относитесь к секретам как к части релиза: смена ключа должна проходить так, чтобы старая и новая версия могли некоторое время работать параллельно.

Данные и бэкапы: граница между «просто деплой» и продом

Контейнеры — одноразовые. Данные — нет. Поэтому при выборе Kamal/Dokku/CapRover задайте себе вопрос: как именно я восстановлюсь после потери сервера?

Практический чеклист:

  • БД (PostgreSQL/MySQL) — отдельный план бэкапов и регулярная проверка восстановления.
  • Файлы пользователя (uploads) — отдельные volume’ы и их резервное копирование.
  • Конфиги платформы (Dokku/CapRover) — экспорт/бэкап настроек, чтобы можно было развернуть заново.
  • Образы — обычно пересобираемы, но registry должен быть доступен или воспроизводим.

Если у вас PostgreSQL на том же сервере или отдельным инстансом, полезно иметь «план Б» по обслуживанию: тюнинг PostgreSQL: autovacuum и индексы без сюрпризов.

Практичный выбор инструмента под типичный проект

Ниже — сценарии, которые чаще всего встречаются при деплое на одной или нескольких VDS.

Сценарий A: один сервис + один воркер, нужна максимальная прозрачность

Берите Kamal. Он хорошо ложится на «деплой как код», позволяет аккуратно обновляться и не тянет за собой PaaS-платформу. Заранее продумайте registry и схему хранения секретов.

Сценарий B: много небольших приложений, хочется «как Heroku»

Берите Dokku. Он удобен, если у вас несколько проектов и вы хотите единый способ деплоя и управления доменами/переменными без большого количества обвязки.

Сценарий C: нужна панель, шаблоны, быстрый запуск MVP

Берите CapRover. Подходит, когда нужно быстро поднять сервис на Docker, подключить домен и получить понятную схему релизов. Но не забывайте про обновления панели и ограничения доступа (вплоть до VPN/allowlist).

Перед релизом полезно быстро проверить, не упираетесь ли вы в ресурсы и диск — это частая причина «внезапных» проблем с деплоем на одиночной VDS.

Мониторинг ресурсов VDS перед релизом: CPU, RAM, диск и контейнеры

Типовые ошибки при переходе «с Kubernetes в голове» на VDS-PaaS

  • Ожидать autoscaling. На одном сервере масштабирование чаще вертикальное; горизонтальное возможно, но уже требует архитектуры.
  • Смешивать прод и сборку. Сборка образов на прод-VDS — частая причина деградаций.
  • Хранить БД в том же стеке без бэкапов. Контейнеризированная БД без дисциплины резервирования — путь к потере данных.
  • Игнорировать healthchecks. Без корректных проверок готовности «zero downtime» превращается в «zero predictability».
  • Не иметь плана отката. Откат — это не только «вернуть старый контейнер», но и совместимость схемы БД.

Мини-эталон: что должно быть настроено, чтобы деплой был «как прод»

Если вы хотите, чтобы Kamal/Dokku/CapRover давали стабильный деплой на VDS, ориентируйтесь на следующий минимум:

  • отдельный пользователь и ключи для деплоя, закрытый SSH, аудит доступа;
  • reverse proxy с понятной схемой доменов и TLS; при необходимости покупка и установка SSL-сертификаты;
  • healthchecks и понятный сигнал готовности приложения;
  • логирование с ротацией и алертами по заполнению диска;
  • бэкапы данных и регулярная проверка восстановления;
  • план релизов: backward-compatible миграции и поэтапное включение фич;
  • запас ресурсов на rolling update (CPU/RAM).

Итоги

Kubernetes остаётся сильным решением, когда нужна настоящая оркестрация, много нод, сложная сеть, autoscaling и платформенная стандартизация. Но для большой доли проектов на VDS он избыточен.

Kamal — про инженерный deploy и контроль; Dokku — про минималистичный PaaS в стиле Heroku; CapRover — про панель и быстрый старт. Если вы правильно спроектируете релизы (особенно миграции) и заложите запас ресурсов, все три подхода дадут стабильный деплой и очень близкий к zero downtime опыт без Kubernetes.

Команды для быстрой самопроверки перед релизом

Небольшой набор проверок, который полезен независимо от выбранного инструмента (выполняйте на сервере перед крупным релизом):

docker ps

docker system df

df -h

free -h

uptime

ss -lntp

Эти команды не лечат проблемы, но быстро показывают типовую причину «почему релиз внезапно стал падать»: кончился диск, нет памяти на двойной запуск, или 80/443 уже заняты.

Поделиться статьей

Вам будет интересно

Rootless Docker vs Rootless Podman: сравнение на практике для админов OpenAI Статья написана AI (GPT 5)

Rootless Docker vs Rootless Podman: сравнение на практике для админов

Rootless-режим позволяет запускать контейнеры без прав root и снижает риск компрометации хоста. В статье сравниваю rootless Docker ...
Prometheus Alertmanager vs Grafana Alerting: сравнение для продакшен-алертинга OpenAI Статья написана AI (GPT 5)

Prometheus Alertmanager vs Grafana Alerting: сравнение для продакшен-алертинга

Alertmanager и Grafana Alerting решают одну задачу: доставлять алерты нужным людям без шума. Разберём архитектуру, routing, silenc ...
Btrfs vs ext4 vs XFS на VDS: производительность, snapshots, send/receive и восстановление OpenAI Статья написана AI (GPT 5)

Btrfs vs ext4 vs XFS на VDS: производительность, snapshots, send/receive и восстановление

Разбираем btrfs, ext4 и XFS на VDS: как они ведут себя по latency и throughput, что происходит с проверкой и ремонтом после сбоев, ...