Skip to content

Hetzner Connection Setup

This guide explains how to connect your Hetzner account to SideButton so you can provision and manage agent VMs directly from the portal.

Overview

SideButton provisions Hetzner servers on your behalf using a project-scoped API token with Read & Write permissions. Once connected, you can deploy agents with one click and SideButton handles the full VM lifecycle (create, reboot, stop, start, delete).


Prerequisites

  • A Hetzner Cloud account
  • An existing Hetzner project (or permission to create one)

Step 1: Create or select a Hetzner project

  1. Go to https://console.hetzner.com/Projects
  2. Use an existing project or click New Project to create one

Note: A Hetzner API token is scoped to a single project. If you want SideButton to manage agents in multiple Hetzner projects, create a separate connection for each project. (Multiple connections per provider are planned as a future enhancement — currently the portal supports one active Hetzner connection.)


Step 2: Generate an API token

  1. Inside your project, go to SecurityAPI TokensGenerate API Token

  2. Give it a descriptive name (e.g., sidebutton-agent-manager)

  3. Set permissions to Read & Write

    ⚠️ Read-only tokens are rejected by the portal with a token_readonly error. Make sure you select Read & Write.

  4. Click Generate API Token

  5. Copy the token immediately — Hetzner displays it only once and it cannot be retrieved later


Step 3: Connect in SideButton

  1. Open the SideButton portal → IntegrationsCloud
  2. On the Hetzner card click Connect to open the connection form
  3. Paste the API token from Step 2
  4. Optionally pick a Default Location (e.g., nbg1 for Nuremberg, fsn1 for Falkenstein, hel1 for Helsinki, ash for Ashburn US)
  5. Click Connect & Validate — SideButton validates the token by calling GET /v1/locations against the Hetzner API and stores it encrypted

Once connected, the Hetzner card shows a green Connected badge.


Creating an agent on Hetzner

After connecting, any new agent you create can use your Hetzner connection:

  1. Go to AgentsAdd agent — the Create Agent wizard opens
  2. Pick an agent profile, then select your Hetzner connection as the cloud account
  3. Choose a Location and Machine size (see table below)
  4. Click Launch — SideButton provisions the server, SSH key, and firewall automatically

Available regions

Location codeData center
nbg1Nuremberg, Germany
fsn1Falkenstein, Germany
hel1Helsinki, Finland
ashAshburn, VA, USA
hilHillsboro, OR, USA
sinSingapore

Available sizes and pricing

TierServer typevCPURAMMonthly price
SCX2324 GB~$5
MCX3348 GB~$9
LCX43816 GB~$19
LXCCX23 (dedicated vCPU)48 GB~$53

Prices shown in USD equivalent. Hetzner bills in EUR; exact amounts vary with exchange rates. See Hetzner pricing for current rates.

Hetzner does not offer a spot/preemptible market — all instances are on-demand.


What SideButton creates in your Hetzner project

Provisioning through SideButton creates the following resources in your Hetzner project:

Shared account firewall (sidebutton-acct-<account id>) — created once per account (at connect, or lazily at the first provision) and attached to every agent server:

RuleProtocolPortSource
SSHTCP22Operator allowlist
RDPTCP3389Operator allowlist
SideButton control planeTCP987646.225.225.112/32
ICMPICMPAny

The SSH/RDP operator allowlist starts with the IP you connected from and is editable under Settings → Cloud Operations → Firewall allowlist. Agents created before the shared firewall existed carry a legacy per-agent firewall (sidebutton-agent-<name>), which is removed when that agent is deleted.

Server (named after the agent):

  • OS: Ubuntu 24.04
  • Labels: sidebutton/managed=true, sidebutton/agent=<name>, sidebutton/tier=<S|M|L|LX>

SSH key (sb-<agent name>) — a per-agent keypair generated by SideButton. The public half is registered in the project and injected into root@; the private half is stored encrypted and surfaced in the portal's SSH key inventory (Settings → Cloud Operations).

You can inspect all created resources directly in the Hetzner Console under your project.


Troubleshooting

ErrorCauseFix
token_readonlyAPI token has Read-only permissionsRegenerate with Read & Write in Hetzner → Security → API Tokens
token_invalidToken was deleted or is malformedGenerate a new token and reconnect
HTTP 429 (rate limit)Too many API requestsHetzner allows 3600 req/hr per project (replenishes 1/sec). Check for runaway list/poll loops
Server creation failsProject resource quota exceededRequest a quota increase in the Hetzner Cloud Console

Security notes

  • SideButton stores your API token encrypted with AES-256-GCM
  • Tokens are never logged or exposed in API responses
  • You can delete the connection at any time — SideButton will refuse deletion if agents are still attached
  • Rotate your API token in Hetzner Console → Security → API Tokens and reconnect via Integrations → Cloud → Hetzner → Rotate credentials

Next step

Once your agent shows Online, connect it to your Claude subscription so Claude Code can authenticate and start working on jobs. Then send it work — see Orchestrating Agents.

Released under the Apache-2.0 License.