Skip to main content

Hetzner Components

Reference for every Hetzner Cloud offer in the Fractal Cloud catalogue. Parameters and their required flags are sourced from the agent param contract (FRA-2955); each offer includes a fully-parameterized JSON example.

Network

Network.SaaS.HetznerDnsRecord

A DNS record inside a Hetzner DNS zone. When the value parameter is left empty, the record value is derived from a linked compute peer's public IP (load balancer, floating IP, or cloud server). Depends on a parent Network.SaaS.HetznerDnsZone.

ParameterDescriptionExample / possible valuesRequired
recordNameRecord name relative to the zonewww or @Yes
recordTypeDNS record typeA, AAAA, CNAME, TXT, MXNo
valueRecord value; leave empty to derive from a linked compute peer's public IP203.0.113.10No
ttlRecord TTL in seconds300No

Example (fully parameterized):

{
"type": "Network.SaaS.HetznerDnsRecord",
"parameters": {
"recordName": "www",
"recordType": "A",
"value": "",
"ttl": 300
}
}

Network.SaaS.HetznerDnsZone

A Hetzner DNS zone for a domain. Provisions the zone and exposes its assigned name servers as output fields. The DNS API has no label support, so identity is the zone ID plus exact-name adoption.

ParameterDescriptionExample / possible valuesRequired
nameZone name (domain FQDN)example.comYes
ttlDefault TTL in seconds for the zone86400No

Example (fully parameterized):

{
"type": "Network.SaaS.HetznerDnsZone",
"parameters": {
"name": "example.com",
"ttl": 86400
}
}

NetworkAndCompute

NetworkAndCompute.IaaS.HetznerCertificate

A Hetzner TLS certificate, either managed (Hetzner-issued Let's Encrypt for the given domains) or uploaded (caller supplies PEM material). The type parameter selects the mode and determines which other parameters are required.

ParameterDescriptionExample / possible valuesRequired
nameCertificate nameweb-certNo
typeCertificate typemanaged (Let's Encrypt) or uploadedNo
domainNamesComma-separated domain namesexample.com,www.example.comConditional — required for the managed type
certificatePEM certificate chain-----BEGIN CERTIFICATE-----...Conditional — required for the uploaded type
privateKeyPEM private key-----BEGIN PRIVATE KEY-----...Conditional — required for the uploaded type

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerCertificate",
"parameters": {
"name": "web-cert",
"type": "managed",
"domainNames": "example.com,www.example.com",
"certificate": "",
"privateKey": ""
}
}

NetworkAndCompute.IaaS.HetznerCloudServer

A Hetzner cloud server (virtual machine). Dependencies wire the server into a network, SSH key, and placement group; links to HetznerFirewall components declare firewall membership.

ParameterDescriptionExample / possible valuesRequired
serverTypeHetzner server typecx22, cpx31, cax11No
imageImage name or snapshot IDubuntu-24.04No
locationHetzner locationfsn1, nbg1, hel1, ash, hil, sinNo
userDataCloud-init user data#cloud-config\nruncmd:\n - echo hiNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerCloudServer",
"parameters": {
"serverType": "cx22",
"image": "ubuntu-24.04",
"location": "fsn1",
"userData": ""
}
}

NetworkAndCompute.IaaS.HetznerFirewall

A Hetzner firewall, the security group equivalent. Compute components declare membership by linking to it; the server handler applies the firewall at create time. Exposes the canonical managedGroupId output field per the platform managed-SG contract.

ParameterDescriptionExample / possible valuesRequired
nameFirewall name (defaults to fractal-mgd-{componentId})web-tier-fwNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerFirewall",
"parameters": {
"name": "web-tier-fw"
}
}

NetworkAndCompute.IaaS.HetznerFloatingIp

A Hetzner floating IP that can be reassigned between servers. A link to a HetznerCloudServer component assigns the IP to that server (presence is the only signal — no settings required).

ParameterDescriptionExample / possible valuesRequired
nameFloating IP nameweb-fipNo
typeIP address familyipv4 or ipv6No
locationHome location for the floating IPfsn1No
descriptionFree-form descriptionPublic entrypointNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerFloatingIp",
"parameters": {
"name": "web-fip",
"type": "ipv4",
"location": "fsn1",
"description": ""
}
}

NetworkAndCompute.IaaS.HetznerLoadBalancer

A Hetzner load balancer that distributes traffic across backend HetznerCloudServer targets. Listeners and targets are derived from the component's links; a dependency on a HetznerNetwork attaches the LB to a private network so targets are reached over their private IPs.

ParameterDescriptionExample / possible valuesRequired
nameLoad balancer nameweb-lbNo
typeHetzner LB typelb11, lb21, lb31No
locationHetzner locationfsn1No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerLoadBalancer",
"parameters": {
"name": "web-lb",
"type": "lb11",
"location": "fsn1"
}
}

NetworkAndCompute.IaaS.HetznerNetwork

A Hetzner private network, the VPC equivalent. Provides the foundation for private connectivity between servers, load balancers, and subnets.

ParameterDescriptionExample / possible valuesRequired
nameNetwork namecore-netNo
ipRangeNetwork CIDR (RFC 1918)10.0.0.0/16No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerNetwork",
"parameters": {
"name": "core-net",
"ipRange": "10.0.0.0/16"
}
}

NetworkAndCompute.IaaS.HetznerPlacementGroup

A Hetzner placement group that controls how member servers are distributed across physical hosts. Only the spread type is supported by Hetzner.

ParameterDescriptionExample / possible valuesRequired
namePlacement group nameapp-spreadNo
typePlacement group typespread (only supported value)No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerPlacementGroup",
"parameters": {
"name": "app-spread",
"type": "spread"
}
}

NetworkAndCompute.IaaS.HetznerPrimaryIp

A Hetzner primary IP that attaches to a server's public interface at create time. Primary IPs are datacenter-scoped; when datacenter is omitted, it is derived from the resolved location's canonical datacenter.

ParameterDescriptionExample / possible valuesRequired
namePrimary IP nameweb-primary-ipNo
typeIP address familyipv4 or ipv6No
datacenterHetzner datacenterfsn1-dc14No
autoDeleteDelete the IP when its assigned server is deletedfalseNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerPrimaryIp",
"parameters": {
"name": "web-primary-ip",
"type": "ipv4",
"datacenter": "fsn1-dc14",
"autoDelete": false
}
}

NetworkAndCompute.IaaS.HetznerSnapshot

A server snapshot, a Hetzner image of type snapshot. Taken once from the source HetznerCloudServer dependency; later reconciles only verify the image still exists. Depends on a HetznerCloudServer.

ParameterDescriptionExample / possible valuesRequired
descriptionSnapshot descriptionnightly-app-imageNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerSnapshot",
"parameters": {
"description": "nightly-app-image"
}
}

NetworkAndCompute.IaaS.HetznerSshKey

An SSH key registered in the Hetzner project. Servers reference it via a dependency to inject the public key at create time.

ParameterDescriptionExample / possible valuesRequired
nameSSH key namedeploy-keyNo
publicKeyOpenSSH public key materialssh-ed25519 AAAAC3Nza... user@hostYes

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerSshKey",
"parameters": {
"name": "deploy-key",
"publicKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyMaterial user@host"
}
}

NetworkAndCompute.IaaS.HetznerSubnet

A subnet inside a Hetzner network. Hetzner subnets are sub-resources with no own ID or labels; identity is the CIDR within the parent network and ownership is inherited from it. Depends on a HetznerNetwork.

ParameterDescriptionExample / possible valuesRequired
cidrBlockSubnet CIDR within the parent network range10.0.1.0/24Yes
networkZoneHetzner network zoneeu-centralNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.HetznerSubnet",
"parameters": {
"cidrBlock": "10.0.1.0/24",
"networkZone": "eu-central"
}
}

Storage

Storage.IaaS.HetznerBlockStorage

An attachable Hetzner block-storage volume. A dependency on a HetznerCloudServer attaches the volume to that server.

ParameterDescriptionExample / possible valuesRequired
nameVolume namedata-volNo
sizeSize in GB (minimum 10)10No
locationHetzner locationfsn1No
formatFilesystem format; empty leaves the volume unformattedext4, xfsNo

Example (fully parameterized):

{
"type": "Storage.IaaS.HetznerBlockStorage",
"parameters": {
"name": "data-vol",
"size": 10,
"location": "fsn1",
"format": ""
}
}

Storage.PaaS.HetznerObjectStorageBucket

An S3 bucket on Hetzner Object Storage. The service is S3-only with no management API or labels, so the agent never adopts buckets it did not create and bucket identity is the globally unique name per location.

ParameterDescriptionExample / possible valuesRequired
nameBucket name (lowercase, globally unique per location)my-data-bucketNo

Example (fully parameterized):

{
"type": "Storage.PaaS.HetznerObjectStorageBucket",
"parameters": {
"name": "my-data-bucket"
}
}

Storage.PaaS.HetznerStorageBox

A Hetzner Storage Box providing managed file-share storage (SMB/FTP/SSH access). The Storage Box API supports labels, so the Component Management Protocol applies.

ParameterDescriptionExample / possible valuesRequired
nameStorage box namebackups-boxNo
typeStorage box typebx11, bx21, bx31, bx41No
locationHetzner locationfsn1, nbg1, hel1No
passwordInitial access passwords3cr3t-passw0rdYes

Example (fully parameterized):

{
"type": "Storage.PaaS.HetznerStorageBox",
"parameters": {
"name": "backups-box",
"type": "bx11",
"location": "fsn1",
"password": "s3cr3t-passw0rd"
}
}