Деплой на Hetzner Cloud: Terraform, CI/CD, Docker Swarm

Вы купили VPS на Hetzner, поставили Ubuntu, запустили сайт через ручной scp. Через месяц понимаете: обновления кода — это ад, Nginx не настроен под высокую нагрузку, а SSL-сертификат истёк в пятницу вечером. Каждый релиз превращается в многочасовой стресс, заказчики жалуются на медленную загрузку. М

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Деплой на Hetzner Cloud: Terraform, CI/CD, Docker Swarm
Средний
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Вы купили VPS на Hetzner, поставили Ubuntu, запустили сайт через ручной scp. Через месяц понимаете: обновления кода — это ад, Nginx не настроен под высокую нагрузку, а SSL-сертификат истёк в пятницу вечером. Каждый релиз превращается в многочасовой стресс, заказчики жалуются на медленную загрузку. Мы настраиваем деплой так, чтобы всё работало автоматически: нажали кнопку в GitHub — сайт обновился за минуту, мониторинг присылает алерт при сбое. Экономия времени и нервов — наш приоритет. Свяжитесь с нами для бесплатной консультации — расскажем, как ускорить ваш релизный цикл.

Проблемы которые решаем

  • Ручной деплой через FTP/SCP — медленно, ошибки, нет истории изменений. Мы заменяем на Git-based CI/CD с откатом.
  • Nginx без кеширования и gzip — высокий TTFB, провал Core Web Vitals. Оптимизируем LCP и CLS.
  • SSL-сертификат истекает — настраиваем Let's Encrypt с автообновлением через systemd timer.
  • Нет мониторинга — не знаете о падении сервера до утра. Ставим Prometheus + Node Exporter + Alertmanager.
  • Масштабирование — один сервер не тянет нагрузку. Используем Docker Swarm на нескольких VPS с Load Balancer.

Как мы это делаем

Используем infrastructure as code: весь конфиг — в Git. Terraform создаёт серверы, firewall, DNS, Object Storage. Packer собирает образы. Ansible — настройка ПО. GitHub Actions — деплой после каждого push.

Реальный кейс: клиент-маркетплейс с 50 000 товаров. Раньше деплой занимал 2 часа через ручной rsync. Мы построили пайплайн:

  1. GitHub Actions собирает Docker образы.
  2. Загружает их в реестр (GitHub Container Registry).
  3. По SSH запускает docker stack deploy на Swarm-кластере из 3 нод.

Время релиза сократилось до 2 минут. Откат — ещё быстрее: git revert и новый push.

Как работает CI/CD пайплайн?

Каждый push в main-ветку запускает сборку, тесты (если есть) и деплой на staging. После ручного подтверждения — деплой на продакшн. Все шаги описаны в YAML-файле в репозитории, поэтому изменения отслеживаются и воспроизводимы.

Terraform для инфраструктуры

# main.tf (начало) terraform { required_providers { hcloud = { source = "hetznercloud/hcloud" version = "~> 1.44" } } } provider "hcloud" { token = var.hcloud_token } resource "hcloud_server" "app" { name = "myapp-prod" image = "ubuntu-22.04" server_type = "cpx21" location = "nbg1" ssh_keys = [hcloud_ssh_key.default.id] user_data = file("cloud-init.yaml") labels = { env = "production" app = "myapp" } } resource "hcloud_firewall" "app" { name = "myapp-firewall" rule { direction = "in" protocol = "tcp" port = "22" source_ips = ["10.0.0.0/8"] } rule { direction = "in" protocol = "tcp" port = "80" source_ips = ["0.0.0.0/0", "::/0"] } rule { direction = "in" protocol = "tcp" port = "443" source_ips = ["0.0.0.0/0", "::/0"] } } resource "hcloud_load_balancer" "lb" { name = "myapp-lb" load_balancer_type = "lb11" location = "nbg1" } resource "hcloud_load_balancer_target" "server" { type = "server" load_balancer_id = hcloud_load_balancer.lb.id server_id = hcloud_server.app.id } 

GitHub Actions для CI/CD

name: Deploy to Hetzner on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Deploy via SSH uses: appleboy/ssh-action@v1 with: host: ${{ secrets.HETZNER_IP }} username: deploy key: ${{ secrets.SSH_PRIVATE_KEY }} script: | set -e cd /var/www/myapp git fetch origin main git reset --hard origin/main composer install --no-dev --optimize-autoloader npm ci --omit=dev npm run build php artisan migrate --force php artisan optimize sudo systemctl reload php8.3-fpm nginx php artisan queue:restart 

Hetzner Object Storage для статики

aws configure set aws_access_key_id $HETZNER_S3_KEY aws configure set aws_secret_access_key $HETZNER_S3_SECRET aws configure set region eu-central aws --endpoint-url https://fsn1.your-objectstorage.com s3 mb s3://myapp-assets aws --endpoint-url https://fsn1.your-objectstorage.com s3 sync ./dist/assets s3://myapp-assets/assets --cache-control "public, max-age=31536000, immutable" 

Что такое Docker Swarm и зачем он нужен?

Docker Swarm — это нативный кластеризатор Docker, который объединяет несколько серверов в единое вычислительное пространство. Он обеспечивает автоматическое распределение контейнеров, балансировку нагрузки и восстановление при сбоях. Для проектов, которым нужно горизонтальное масштабирование и отказоустойчивость без сложности Kubernetes, Swarm — оптимальный выбор.

Docker Swarm кластер

# Инициализация на первом сервере ssh server1 "docker swarm init" # Получение токена JOIN_TOKEN=$(ssh server1 "docker swarm join-token worker -q") # Добавление рабочих узлов ssh server2 "docker swarm join --token $JOIN_TOKEN server1:2377" ssh server3 "docker swarm join --token $JOIN_TOKEN server1:2377" # Деплой стека docker -H ssh://deploy@server1 stack deploy -c docker-compose.prod.yml myapp 

Процесс работы

  1. Анализ — изучаем текущую инфраструктуру, требования к нагрузке и бюджет.
  2. Проектирование — выбираем серверные типы, схему балансировки, стек ПО.
  3. Реализация — пишем Terraform, Ansible, CI/CD, мониторинг.
  4. Тестирование — проверяем деплой на staging-сервере, нагрузочное тестирование.
  5. Деплой — переносим на продакшн, настраиваем алерты и бэкапы.

Сроки ориентировочно

Задача Срок
Один VPS + Nginx + SSL + деплой 1–2 дня
Terraform + Load Balancer + мониторинг 3–4 дня
Docker Swarm кластер (3+ сервера) 4–5 дней
Полная инфраструктура с reserve от 1 недели

Стоимость рассчитывается индивидуально — пишите, оценим ваш проект.

Как быстро откатить неудачный деплой?Если CI/CD настроен корректно, откат выполняется одной командой: `git revert` последнего коммита и push. Пайплайн автоматически развернёт предыдущую стабильную версию. Время отката — менее 2 минут.

Типичные проблемы и решения

Проблема Решение
Конфигурация разъезжается после ручных правок Всё в Terraform — изменения только через код
База данных не бекапится Ежедневный бэкап в Object Storage через cron
SSL-сертификат истекает Let's Encrypt с systemd timer
Нет мониторинга Prometheus + Grafana + Alertmanager

Что входит в работу

  • Развёрнутая документация схемы и конфигураций.
  • Доступы к серверам и админке.
  • Обучение вашей команды (1-2 часа созвона).
  • Поддержка в течение 1 месяца после сдачи.

Как настроить деплой на Hetzner за 1 день?

Если сайт уже работает на одном сервере, мы добавляем:

  1. Автоматический SSL (Certbot systemd timer).
  2. GitHub Actions с быстрым скриптом деплоя.
  3. Мониторинг Uptime Kuma на отдельном VPS.
  4. Ежедневный бэкап базы в Object Storage.

Всё это — с гарантией работоспособности. За несколько лет мы выполнили более 50 проектов на Hetzner — от небольших лендингов до высоконагруженных маркетплейсов. Закажите настройку под ключ — подберём оптимальную конфигурацию и нарисуем roadmap миграции.

Почему стоит выбрать Hetzner для продакшена?

  • GDPR-compliant дата-центры в Европе.
  • Цена в 3–5 раз ниже AWS/GCP при аналогичной производительности.
  • Высокая надёжность: uptime 99.9% по SLA.
  • Простой API и CLI для автоматизации.

Получите консультацию — расскажем, как оптимизировать ваш текущий деплой.