Деплой SaaS-продуктів з Docker на Hetzner Cloud
Практичний гайд з розгортання контейнеризованих SaaS-додатків на Hetzner Cloud з Docker Compose, автоматизованим CI/CD та деплоєм без даунтайму.
Вступ
У fluxLab.dev всі шість наших продакшн SaaS-продуктів працюють на Hetzner Cloud. Ми обрали Hetzner замість AWS з простої причини: вартість. Інстанс CX31 (4 vCPU, 8ГБ RAM) коштує €8.50/місяць — приблизно в 5 разів дешевше за еквівалент на AWS.
Наш стек
Кожен продукт використовує однаковий патерн деплою:
- Docker Compose для оркестрації контейнерів
- Caddy як реверс-проксі з автоматичним HTTPS
- GitHub Actions для CI/CD
- Hetzner Object Storage для файлів (S3-сумісний)
Чому Caddy замість Nginx
Caddy надає автоматичний HTTPS з Let's Encrypt — без налаштування certbot, без крон-задач оновлення сертифікатів. Конфігурація читабельна:
jobber.fluxlab.dev {
reverse_proxy app:3000
}
Це все. HTTPS просто працює.
CI/CD пайплайн
GitHub Actions білдить Docker-образ з кешуванням шарів через Buildx, пушить у реєстр та деплоїть через SSH.
Для zero-downtime деплою ми покладаємось на поведінку Docker Compose з health checks. Новий контейнер стартує, проходить health check, і лише тоді старий контейнер зупиняється.
Моніторинг
Кожен сервіс виставляє ендпоінт /health, що перевіряє підключення до PostgreSQL та Redis. Всі сервіси виводять структуровані JSON-логи.
Вартість
Запуск Jobber на продакшні на Hetzner:
- CX31 сервер: €8.50/місяць
- 100ГБ volume для PostgreSQL: €4.40/місяць
- Object Storage: ~€2/місяць
- Всього: ~€15/місяць
Порівняйте з AWS (t3.medium + RDS + S3): ~€80/місяць мінімум. Для бутстреп SaaS-продукту ця різниця в 5 разів значуща.
Уроки
- Health checks обов'язкові — без них Docker миттєво перезапускає зламані контейнери
- Завжди використовуй volumes для баз даних — втрата даних PostgreSQL невідновна
- Фіксуй версії образів —
postgres:16-alpine, а неpostgres:latest - Автоматизуй все — ручні деплої — джерело №1 інцидентів на продакшні
Висновок
Docker на Hetzner Cloud дає fluxLab.dev інфраструктуру продакшн-класу за частину вартості хмарних провайдерів. Для SaaS-продуктів з передбачуваними навантаженнями виділені сервери з Docker Compose простіші та дешевші за Kubernetes.