Skip to main content

Order and prepare a Robot (bare-metal) server

Inspect 1.36

Buy the dedicated server through Hetzner Robot, clear its disks, and find the WWN to install onto. Once that is done, registers the server and attaches it to a cluster.

Note

Syself Autopilot manages the software install and cluster membership. It does not buy, return, or sell hardware. You order the server; Syself Autopilot provisions it.

Order through Hetzner Robot 

Buy the dedicated server in Hetzner Robot⁠. Note the server's numeric ID from its detail page. needs it as spec.serverID on the HetznerBareMetalHost object.

Hetzner has several dedicated-server lines. The AX line runs AMD Ryzen and EPYC CPUs, and other lines run Intel. The server auction sells in-stock and returned machines at a discount, often the fastest way to get a specific build. You can individualize a server with add-ons too, for example a 10 Gbit uplink in place of the standard 1 Gbit NIC. See Hetzner's docs on the server lines⁠, the add-ons⁠, and the 10 Gbit uplink⁠.

Note

Availability varies by location: not every model or add-on can be ordered in every datacenter. Check the location selector on the order page before you commit to a specific build.

For stateful workloads, favor a model with the local NVMe you need, because . See for why owning the hardware beats a managed control plane.

Check the disk controller before you buy 

Syself Autopilot installs onto a disk on an onboard NVMe or SATA (AHCI) controller. A server whose root disk sits behind a hardware RAID or SAS controller cannot boot.

Provisioning still succeeds on such a server, with only a warning in the provisioner log. The node then never boots, so check the model before you order.

A sealed node boots without an initramfs, so only drivers built into the kernel are available, and the drivers for these controllers are loadable modules. Putting the controller in JBOD or non-RAID mode does not help because the disks still sit behind it.

These Hetzner servers carry such a controller and are not supported:

Hetzner server Built-in controller
DX141 PERC H330 (LSI SAS 3008)
DX150, DX290 PERC H710 (LSI SAS 2208)
DX151, DX291 PERC H730 (LSI SAS 3108)
DX152, DX180, DX181, DX292 PERC H730P (LSI SAS 3108)

Two more cases to watch for:

  • DX182 and DX293 carry a PERC H755, but their NVMe disks are not connected to it. They work with NVMe disks only. Their SATA and SAS disks are not supported.
  • Any server with an added RAID controller (3Ware, Adaptec, LSI or Broadcom) is not supported, including custom builds and server auction machines.

The AX, EX and PX lines use onboard NVMe and SATA, so they work as long as no RAID controller was added. See Hetzner's Dell PowerEdge quickstart guide⁠ for which controller a Dell-based model carries.

If you already have one of these servers, or need one, before you register it.

Account preparation 

Registering a bare-metal server needs your Hetzner account set up first: the hetzner and robot-ssh secrets in the management cluster, and a Robot webservice user. That is a one-time step in .

Clear factory RAID first 

Newly purchased Hetzner dedicated servers ship with RAID enabled by default. Sealed nodes install onto plain disks, and the provisioner refuses to install while a disk carries RAID or a foreign OS. It does not wipe for you, so clear the disks in the Hetzner rescue system before you register the server: see .

Find the disk WWN 

Syself Autopilot installs onto the disk you name by its WWN. The WWN (World Wide Name) is a stable hardware ID for a disk, so it always points to the same disk. There are two ways to get it.

Read it in the rescue system. Boot the server into the Hetzner rescue system (a small Linux that Hetzner boots over the network). The wwn-* symlinks under /dev/disk/by-id/ are the reliable source, because the WWN column in lsblk is often blank in rescue:

				$ ls -l /dev/disk/by-id/ | grep -E 'wwn|nvme'
			

Or let the inventory pass surface it: register the HetznerBareMetalHost without rootDeviceHints. Syself Autopilot boots the server into rescue, collects the hardware inventory, and then stops with an error because no disk was specified (this is expected). Read the WWN from the inventory and re-apply with it set:

				$ kubectl describe hetznerbaremetalhost <name>
			

Look under Hardware Details → Storage for the disk and its WWN.

Single-disk vs multi-disk servers 

  • Single-disk server: there is one WWN; use it.
  • Multi-disk server: choose the disk you want the OS installed onto and use its WWN. The remaining disks become data disks, which survive reinstalls and are where stateful workloads should live.