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

Ручной деплой на Hetzner Cloud превращает каждый релиз в стресс: обновления кода занимают часы, SSL-сертификаты истекают в самый неподходящий момент, а нагрузка на сервер растёт. Мы автоматизируем весь процесс с помощью Terraform, CI/CD и Docker Swarm, чтобы вы обновляли сайт нажатием кнопки и не думали об инфраструктуре. Наша команда реализует проект под ключ — от настройки серверов до мониторинга и поддержки.

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

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

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

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

Вы купили 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 для автоматизации.

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060