Skip to main content

Spin Up a VM in Hetzner

Create a CX43 VM on Hetzner Cloud for CTMS deployment. Total cost: ~$10.59/mo.


Step 1 — Location & Image

Sign in at console.hetzner.cloud → create a project → Add Server.

Pick any available location (Helsinki, Nuremberg, Ashburn, etc.) and select Rocky Linux 10 as the image.

Hetzner — Location & Image


Step 2 — Server Type

Select Cost-Optimized → CX43 (8 vCPU, 16 GB RAM, 160 GB SSD):

Hetzner — Server Type CX43

SpecValue
TypeCX43 (Cost-Optimized, x86 Intel/AMD)
vCPU8
RAM16 GB
Disk160 GB SSD
Traffic20 TB
Price~$9.99/mo + $0.60 IPv4 = $10.59/mo

Step 3 — Networking & SSH Key

Enable IPv4 (required). Select your SSH key — or add a new one (see Generate SSH Key).

Hetzner — Networking & SSH Key


Step 4 — Create & Connect

Give it a name (e.g., ctms-prod-1) and click Create & Buy now.

Hetzner — Summary & Create

Copy the public IPv4 from the server detail page, then connect:

ssh -i ~/.ssh/ctms-hetzner root@<ip-address>

After VM Creation

Upload the bundle and deploy:

scp -i ~/.ssh/ctms-hetzner zynctl-bundle-*.tar.gz root@<ip>:~

ssh -i ~/.ssh/ctms-hetzner root@<ip>
tar xzf zynctl-bundle-*.tar.gz && cd zynctl-bundle-*
cp zynctl.conf.example zynctl.conf
# Edit zynctl.conf: set SERVER_HOST=<ip> and Docker Hub creds
./zynctl.sh full-deploy

See Bundle Deployment for the full guide.


Firewall (Optional)

In Hetzner Console → Firewalls → create one with these inbound rules:

PortService
22SSH
3000Zynexa
3001Sublink
4000Cube.js
5080OpenObserve
8000Supabase Studio
8001ODM API
8006MCP Server
8080Frappe
9080API Gateway

Apply the firewall to your server.


CLI Alternative (hcloud)

# Install (macOS)
brew install hcloud

# Authenticate
hcloud context create ctms
# Paste API token from: Console → Security → API Tokens

# Create CX43 VM
hcloud server create \
--name ctms-prod-1 \
--type cx43 \
--image rocky-10 \
--ssh-key ctms-key

# Get IP
hcloud server ip ctms-prod-1

# Snapshot before risky changes
hcloud server create-image --type snapshot --description "pre-deploy" ctms-prod-1

# Delete
hcloud server delete ctms-prod-1