Buy the dedicated server through Hetzner Robot, clear its disks, and find the WWN to install onto. Once that is done, [Add bare-metal servers](/docs/hetzner/apalla/servers-and-nodes/bare-metal/add-bare-metal-servers) 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](https://robot.hetzner.com/). Note the server's numeric ID from its detail page. [Add bare-metal servers](/docs/hetzner/apalla/servers-and-nodes/bare-metal/add-bare-metal-servers) 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](https://docs.hetzner.com/robot/dedicated-server/server-lines/ax-server/), the [add-ons](https://docs.hetzner.com/robot/dedicated-server/dedicated-server-hardware/price-server-addons/#other-addons), and the [10 Gbit uplink](https://docs.hetzner.com/robot/dedicated-server/network/10g-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 [data on the extra disks survives a reinstall](/docs/hetzner/apalla/servers-and-nodes/bare-metal/add-bare-metal-servers). See [bare-metal Kubernetes](/docs/hetzner/apalla/concepts/internals/bare-metal-and-cloud) 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](https://docs.hetzner.com/robot/dedicated-server/dell-quickstart/dell-poweredge-quickstart-guide/) for which controller a Dell-based model carries. If you already have one of these servers, or need one, [contact Syself support](/docs/hetzner/apalla/support/get-support) 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 [Prepare your Hetzner account](/docs/hetzner/apalla/getting-started/prepare-your-hetzner-account). ## 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 [Wipe a disk](/docs/hetzner/apalla/servers-and-nodes/maintenance/wipe-a-disk). Before installing, Syself Autopilot checks the target disk and the rest of the server. It refuses to install in four cases: - Any disk in the server carries a RAID member signature or an assembled RAID array. - More than one disk reports the same WWN as the target, so the target is ambiguous. - The target disk holds an LVM (Logical Volume Manager, a Linux tool for flexible disk partitioning) physical volume. - Another disk in the same server holds a Linux installation. Any of these can mean the server is still in use, or the target disk is not what you think it is. Syself Autopilot stops rather than risk wiping the wrong disk. Wiping is a one-time step you do once, at purchase, not something the platform does on its own, so a forgotten setting can never turn an OS disk into a wiped data disk later. ## 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: ```console $ 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: ```console $ kubectl describe hetznerbaremetalhost ``` 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. Before touching the disk, Syself Autopilot runs machine-level checks in the rescue system. Any failure here stops the install before anything is written: - The required tools are present. - The target disk resolves from its WWN, exists, and is large enough (at least about 24 GiB). - No disk contains RAID signatures, another operating system, or an LVM volume group, and no disks share a WWN. See [Wipe a disk](/docs/hetzner/apalla/servers-and-nodes/maintenance/wipe-a-disk). - A short read-speed test passes (at least 20 MiB/s for an HDD, 40 MiB/s for an SSD or NVMe). A disk below the floor stops the install. - On NVMe disks, a SMART health read runs. It is advisory and does not stop the install on its own. It installs both a UEFI and a legacy-BIOS bootloader, so the rescue system's firmware mode does not gate the install. ## Related - [Add bare-metal servers](/docs/hetzner/apalla/servers-and-nodes/bare-metal/add-bare-metal-servers) - [Wipe a disk before provisioning](/docs/hetzner/apalla/servers-and-nodes/maintenance/wipe-a-disk) - [Server types and sizing](/docs/hetzner/apalla/servers-and-nodes/cloud/server-types-and-sizing) - [Bare metal and cloud](/docs/hetzner/apalla/concepts/internals/bare-metal-and-cloud)