До основного вмісту

Hetzner Cloud: створення та налаштування серверів через API

Хмара та DevOps · 19.04.2026 · 4 хв читання
Ілюстрація до статті «Hetzner Cloud: створення та налаштування серверів через API»

Hetzner Cloud: найкраща європейська хмара

Hetzner Cloud — німецький хмарний провайдер із серверами в Німеччині, Фінляндії та США. Співвідношення ціна/продуктивність одне з найкращих на ринку: CX22 (2 vCPU / 4 GB) коштує €4.35/міс.

Встановлення hcloud CLI

# Linux
wget https://github.com/hetznercloud/cli/releases/latest/download/hcloud-linux-amd64.tar.gz
tar -xzf hcloud-linux-amd64.tar.gz
mv hcloud /usr/local/bin/

# Автентифікація (токен із Cloud Console)
hcloud context create my-project
# Введіть API токен

Створення сервера

# Переглянути доступні типи серверів
hcloud server-type list

# Переглянути образи
hcloud image list --type system

# Створити сервер
hcloud server create \
  --name web-01 \
  --type cx22 \
  --image ubuntu-24.04 \
  --location nbg1 \
  --ssh-key my-key

# Список серверів
hcloud server list

Firewall через CLI

# Створити правила firewall
hcloud firewall create --name web-firewall

hcloud firewall add-rule web-firewall \
  --direction in --protocol tcp --port 22 \
  --source-ips 0.0.0.0/0,::0/0

hcloud firewall add-rule web-firewall \
  --direction in --protocol tcp --port 80 \
  --source-ips 0.0.0.0/0,::0/0

hcloud firewall add-rule web-firewall \
  --direction in --protocol tcp --port 443 \
  --source-ips 0.0.0.0/0,::0/0

# Застосувати до сервера
hcloud firewall apply-to-server web-firewall --server web-01

Керування через API (cURL)

TOKEN="your_api_token"

# Список серверів
curl -H "Authorization: Bearer $TOKEN" \
  https://api.hetzner.cloud/v1/servers

# Створити сервер через API
curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "api-server",
    "server_type": "cx22",
    "image": "ubuntu-24.04",
    "location": "nbg1"
  }' \
  https://api.hetzner.cloud/v1/servers

Floating IP і Load Balancer

# Створити Floating IP
hcloud floating-ip create --type ipv4 --home-location nbg1

# Прив'язати до сервера
hcloud floating-ip assign 12345678 --server web-01

# Створити Load Balancer
hcloud load-balancer create \
  --name lb-01 \
  --type lb11 \
  --location nbg1

hcloud load-balancer add-target lb-01 \
  --type server --server web-01

Знімки та резервні копії

# Створити знімок
hcloud server create-image web-01 \
  --type snapshot \
  --description "Before update $(date +%Y-%m-%d)"

# Увімкнути автобекап
hcloud server enable-backup web-01
Object Storage: Hetzner пропонує S3-сумісне сховище Object Storage від €3.49/міс за 1 TB. Підключайте через rclone або AWS SDK з endpoint https://<location>.your-objectstorage.com.

Розбір реальних помилок API

Hetzner Cloud API повертає структуровані JSON-помилки з полем code — за ним легко зрозуміти причину, не вгадуючи за HTTP-статусом.

resource_unavailable

{"error":{"code":"resource_unavailable","message":"Server type cx22 not available in location nbg1"}}

Не кожен тип сервера доступний у кожному дата-центрі — наприклад, частина ліній CCX або CPX може бути відсутньою в конкретній локації через завантаженість потужностей. Перевірте доступність конкретної зв'язки через hcloud server-type list і спробуйте сусідній регіон (fsn1, hel1).

uniqueness_error

{"error":{"code":"uniqueness_error","message":"resource already exists"}}

Ім'я сервера, SSH-ключа або firewall вже зайняте у вашому проєкті — Hetzner вимагає унікальності імен ресурсів одного типу всередині проєкту. Додайте суфікс із датою або середовищем: web-01-prod замість просто web-01.

Порівняння ліній серверів Hetzner

ТипvCPURAMДискОсобливість
CX222 (shared)4 GB40 GB NVMeСпільні ядра, найдешевше
CPX213 (shared, AMD)4 GB80 GB NVMeБільше CPU-продуктивності на ту саму RAM
CCX132 (dedicated)8 GB80 GB NVMeВиділені ядра для стабільного навантаження

Коли Hetzner Cloud не підходить

  • Потрібен фізичний виділений сервер із повним контролем над залізом — це лінія Hetzner Dedicated/Robot, окремий продукт з іншим API, не hcloud.
  • Потрібен дата-центр за межами Європи чи США-Схід — у Hetzner Cloud немає регіонів в Азії, Південній Америці чи Африці.
  • Потрібен офіційний образ Windows Server з каталогу — hcloud image list орієнтований насамперед на Linux-дистрибутиви.
  • Потрібен широкий вибір GPU-інстансів для ML-інференсу — лінія GPU у Hetzner Cloud помітно вужча, ніж у AWS чи GCP.
  • Потрібен managed Kubernetes із control-plane від самого провайдера — Hetzner Cloud дає лише сирі VPS, k3s або повноцінний кластер доведеться розгортати самостійно.

Перевірка результату

# Сервер створений і у статусі running
hcloud server describe web-01 -o json | grep status

# Firewall реально застосований до сервера
hcloud firewall describe web-firewall

# SSH проходить за ключем, не за паролем
ssh -o PasswordAuthentication=no -o PreferredAuthentications=publickey root@SERVER_IP echo ok

# API токен робочий і бачить проєкт
curl -s -o /dev/null -w "%{http_code}\n" -H "Authorization: Bearer $TOKEN" https://api.hetzner.cloud/v1/servers

Код відповіді 401 від API означає недійсний або відкликаний токен — перевипустіть його в Cloud Console (Security → API Tokens). Якщо сервер створюється як частина регулярного процесу, винесіть кроки в Terraform-конфігурацію замість ручних викликів hcloud, а деплой застосунку на готовий сервер — у CI/CD через GitHub Actions.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці