Hetzner - DokuWiki




What is the difference between local and ceph disks for servers on the CX models?

Servers with local disks keep all data on a local RAID mirror on the host system. They are optimized for high I/O performance and low latency and are especially suited for applications which require fast access to disks with low latency, such as databases.

Servers with ceph disks store their data on a remote filesystem. Each block is stored on three different servers. They are especially suited for higher availability needs: If the local host hardware fails, we will boot the server on a different machine.

What are the dedicated vCPU server plans?

Every dedicated vCPU instance has its own dedicated CPU resources (1 vCPU = 1 hyper-thread), so these CCX servers offer you predictably high CPU performance. We recommend them for systems with high production loads and CPU intensive applications. They are only available with local (NVMe SSD) storage. They utilize the same high performance hardware as our other Hetzner cloud servers, with a generous allocation of I/O and network power.

Of course all the other Hetzner Cloud features you know and love are are also available for these dedicated vCPU instances. Using the rescale feature on the administration interface Cloud Console, you can up- and downgrade the CCX servers depending on how many resources you require.

Please note that our System Policies at https://www.hetzner.com/rechtliches/cloud-server/ also apply to our dedicated vCPU instances.

Can I use Cloud-Init when creating servers?

While creating your server, you can inject cloud-init user data. This means you can make your server execute special commands while booting, like creating users or running a shell command.


touch /tmp/cloudinit_was_here

For more examples see https://help.ubuntu.com/community/CloudInit and http://cloudinit.readthedocs.io/en/latest/topics/examples.html

In order for cloud-init to work, you must use the system images we provide as they include a special cloud-init datasource.

What are floating IPs and how do they work?

Floating IPs help you to create highly flexible setups. You can assign a floating IP to any server. The server can then use this IP. You can reassign it to a different server at any time, or you can choose to unassign the floating IP from servers all together.

Floating IPs can be used globally. This means you can assign a floating IP to a server in one location and later reassign it to a server in a different location. For optimal routing and latency, floating IPs should be used in the location they were created in.

For floating IPs to work, you must configure them inside the operating system of the server you use.

To temporarily configure a floating IPv4 "", you can run

ip addr add dev eth0

Please note that this configuration will not survive a reboot.

To configure the first IPv6 address of floating IPv6 netblock 2a01:4f8:2c17:2c::/64, you should run:

ip addr add 2a01:4f8:2c17:2c::1/128 dev eth0

How to permanently configure a floating ip?

To learn how to permanently configure a floating ip read our tutorial.

What are snapshots and backups?

Snapshots and backups are copies of your server's disk.

You can create snapshots when you need them and keep them forever or until you decide to delete them. We at Hetzner Online will store the snapshots even if you delete the server that the snapshot was taken of. We invoice for snapshots on a per gigabyte per month basis. Please find additional information in the billing FAQ

Backups are nightly copies of your server's disk. Our system will automatically create them for every server that you have enabled them on. They are invoiced with a flat fee per server. See here in the billing FAQ. Backups are bound to a single server and will automatically be deleted if you delete the server. For every server there are seven slots for backups. If all slots are full and you create an additional one, then the oldest backup will be deleted.

To access a snapshot or a backup, you will need to either:

  • Use the Cloud Console to create a new server and choose the snapshot or backup as a source image. Or
  • Rebuild an existing server using the snapshot or backup as a source image. Note that this will overwrite the contents of the server's disk.

When creating snapshots or backups, we recommend that you power down your server to ensure data consistency on the disk. You may, however, also create them from a running system. In this case we will try to flush the disk caches of your operating system using Qemu Guest Agent before snapshotting. However in this case we cannot guarantee data consistency.

Important note: Snapshots and backups do not include any volumes which are attached to your server.

Can I pick my backup window?

In the past there used to be an option pick a window yourself, however we had to deactivate this feature. This allows us to better spread the additional load caused by running backups throughout the day. It was necessary because many users picked the same window, causing performance repercussions and negatively impacting server performance during certain times of the day.

Please use our snapshot feature if you want to precisely control when your disk gets saved.

What are projects, and how can I use them?

You can group your servers and other resources into projects. For each project you can invite other users to join and therefore work with you on the project via Cloud Console. To invite a user select "Access; Members; Add Member".

Add member.png

You can then enter the email address of the person you want to invite and choose their role, which determines their access level in this project.

Add member 2.png

The invitee will get an email containing a special link. After clicking it he can log in with his existing Hetzner Account details or create a new account. On completion he can accept the invitation and work together with you in your project.

You can always revoke access to the project or change the role of another member by going to "Access; Members in your Cloud Console".

Each member's role in a project determines what they are allowed to do:

Role Permissions
Owner Highest access level. Can do everything an admin can do. Can move servers to other projects. Will be invoiced for all resources in the project, regardless of who created them. Each project can only have one owner.
Admin Can do everything a member can do. Additionally can manage project members (add/remove/change role) and API tokens.
Member Can create, modify and delete all resources in the project, such as servers, floating IPs, images, volumes, etc.
Restricted Can create, modify and delete all resources in the project except for:
  • creating or deleting servers
  • creating snapshots
  • deleting snapshots or backups
  • converting backups into snapshots
  • switching on or off backups for a server
  • creating floating IPs
  • changing server types
  • creating or deleting volumes

How can I move a resource (server / volume / floating ip) to another account?

Moving resources to another account works by moving them to a different project which is owned by the target account.

Therefore the target account has to invite the current owner of the resource into a project and give the current account at least member permissions. Then proceed as described under "How can I move a resource to another project?".

How can I move a resource (server / volume / floating ip) to another project?

Only the owner of the source project can move resources out of it. Project ownership is indicated by the little crown in the projects overview.

To move the resource click on the three dots in the corresponding list view and select "Transfer to Project". Note that the owner of the target project will have to pay for the resource from now on.

Are there limits to the number of resources I can get?

Our cloud services are designed in a way so that you can tap into additional resources easily. In order to prevent abuse, we put some limits on the number of resources a single account can create.

These limits can be found on the "Limits" tab in your overview page. If you would like us to increase the resource limits use the "Request limit change" button on the "Limits" tab.

How can I reinstall a server?

Our recommended way to do this is to delete your old server and create a new one instead. This way you can ensure that all settings -- e.g. regarding ssh access keys and other things -- are fresh and up-to-date. There is also a high chance that your new server will get the same ip address your old, deleted server had.

How can I access the server I rebuilt?

Assume you rebuilt your Server server1 from a snapshot called snap1.

Case 1: server1 was originally created without selecting a SSH-Key:

After rebuild, a new root-password for server1 will be generated and mailed to you. It will be set on first boot using the cloud-init mechanism.

If snap1 contained injected SSH keys, these will also continue to work.

Case 2: server1 was created with selecting your SSH-Key key1:

After rebuild, the key key1 will be injected into server1 on first boot using the cloud-init mechanism. You can use key1 to access your server.

If snap1 contained any more keys in its authorized_keys file, you can also still use these to access server1.

In all cases, server1 cannot be accessed using a root-password directly after the rebuild, even if one was set in snap1.

Case 1 and Case 2 only apply if you restore a snapshot that was taken from our officially provided images. If you used the rescue system or other means to install the server snap1 was taken from, it will not be fit for reconfiguration via cloud-init, and its behavior might be different.

While creating a new server, I have selected a snapshot as source image. How can I access this server?

Assume you created your server server1 from a snapshot called snap1.

Case 1: You did not select a ssh key while creating server1:

After server creation, a root password for access will be generated and mailed to you. It will be set using the cloud-init mechanism.

If snap1 contained injected SSH keys, these will also continue to work.

Case 2: You selected ssh key key1 while creating server1:

After server creation, the key key1 will be injected into server1 using the cloud-init mechanism. You can use key1 to access your server.

If snap1 contained any more keys in its authorized_keys file, you can also still use these to access server1.

In all cases server1 cannot be accessed using a root-password directly after it creation, even if one was set in snap1.

Case 1 and Case 2 only apply if you use a snapshot that was taken from our officially provided images. If you used the rescue system or other means to install the server snap1 was taken from, it will not be fit for reconfiguration via cloud-init, and its behavior might be different.

The keyboard mapping in the console window seems to be wrong. How can I fix this?

All of our images come with keyboard mapping set for a US keyboard. If you have something different, you need to configure it yourself within your server.

For example, on Ubuntu you can do so by running

sudo dpkg-reconfigure keyboard-configuration

and selecting the keyboard layout you are using on your local PC. After a reboot, the keyboard mapping in the console will be correct.

How do I protect my server from being deleted by accident?

Servers, Snapshots and Floating IPs can be protected in the Cloud Console and API.

Before you can delete a protected resource, you have to first deactivate the deletion protection. This provides an additional safeguard for accidental deletion.

Protected resources are indicated by a lock icon on the Server, Snapshot and Floating IP overview page. You can't use the "Rebuild" feature to reinstall a protected server.

How many servers can I create?

Each customer has a default limit for the number of Cloud resources that we simultaneously provide. If you would like to increase your limit, you can send a request to our support team by opening a support ticket via Cloud Console. Our team will quickly review your request and, if everything is in order, they will increase your limit.


What are the Hetzner Cloud Volumes?

It is a feature for fast, flexible, and cost-effective (SSD based) block storage which you can attach to your Hetzner Cloud Server.

Are volumes available in all locations?

Volumes are available all locations (currently Falkenstein, Helsinki and Nuremberg).

Can I resize Volumes?

You can resize a Volume to up to 10 TB. The feature uses a sliding bar to allow you to choose the size you need in 1 GB increments. Please note, however, that you can only increase the size of your Volume, not descrease it and you need to resize the filesystem manually.

How can I mount a volume on the server?

When you attach the volume to your server using the Cloud Console, you will see the commands you can use to mount the Volume.

Attaching a volume fails. Why does this happen?

Servers which have run for quite some time may need a power off and power on cycle. This is a one time only requirement and will trigger our cloud management system to enable Volume support for this server. Please note, a soft reboot is not enough.

Automounting fails - How can I fix this problem?

You need a script on your server so you can automount Volumes. We install this script automatically with all of our standard images. However, any servers that were created before 30 November 2018 will be missing this script. To fix this problem, you can either install the script manually, or create a new server.

1. SSH as root into the server

2. Install curl

3. Create the configuration file and open an editor

mkdir -p /etc/systemd/system/systemd-udevd.service.d/
touch /etc/systemd/system/systemd-udevd.service.d/override.conf
nano /etc/systemd/system/systemd-udevd.service.d/override.conf

4. Paste the following configuration into the editor


5. Create the udev rule file and open an editor

touch /etc/udev/rules.d/99-hcloud-automount.rules
nano /etc/udev/rules.d/99-hcloud-automount.rules

6. Paste the following configuration into the editor

# Check if it is a Hetzner Cloud Volume
# Abort unless the user explicitly requests this feature
#   The API returns a success code when the automount option is active.
#   This is just a oneshot url with an expiry of just a few minutes.
#   On any error (404 on the URL, no curl installed, or timeout, ...) the rule
#   will abort
IMPORT{program}="/bin/sh -c 'curl --max-time 1 --fail$env{ID_SERIAL_SHORT} > /dev/null 2>&1 && echo HC_CONFIGURE=yes'"
RUN{program}+="/bin/mkdir -p %E{MOUNT_PATH}"
# Create an fstab entry
RUN{program}+="/bin/sh -c 'grep -q %E{SOURCE_PATH} /etc/fstab || echo %E{SOURCE_PATH} %E{MOUNT_PATH} %E{ID_FS_TYPE} discard,nofail,defaults 0 0 >> /etc/fstab'"
# Manually trigger the fstab to systemd.mount generator
RUN{program}+="/bin/systemctl daemon-reload"
# Activates the new rule
RUN{program}+="/bin/systemctl restart local-fs.target"

7. Reload systemd

systemctl daemon-reload

8. At last you should enable the new udev rule

udevadm control --reload
udevadm trigger -c add -s block -p ID_VENDOR=HC --verbose -p ID_MODEL=Volume

If the scripts are already there, the server need a power off and power on cycle. Please note, a soft reboot is not enough.

How does Hetzner Online store the data in volumes?

Every block of data is stored on three different physical servers (triple replication).

Is there a limit on the number of attached volumes?

You can mount up to 16 volumes on each of your Hetzner Cloud Servers. Please note that you can only attach a volume to one server at a time.

Are there size limits for volumes?

Volumes can be between 10 GB and 10 TB.

Can I also mount Hetzner Cloud Volumes on a Hetzner dedicated root server?

Unfortunately not: Volumes only work with cloud servers.


How do you bill your servers?

Servers have both a monthly price cap and a price per hour. Your server's bill will never exceed its monthly price cap. If you delete your Cloud Server before the end of the billing month, you will only be billed the hourly rate. We will bill you for each cloud server until you choose to delete them. Even if you aren't actively using your server, we will bill you for it.

Mathematically speaking, you will be billed the minimum amount, whether that is the monthly price cap OR the hourly price multiplied by the number of hours you used the server.

Hourly usage of a server is always rounded up: If you create a server just for a few minutes you will still be billed for one whole hour. This reflects the additional load on your systems that is caused by the server's creation.

Do you bill servers that are off?

Yes. All servers that have finished their creation process will be billed until they are deleted, regardless of their state.

This is because, internally, we allocate full resources to servers regardless of their power state. And it enables rapid startup and boot times for you, the customer.

How do you bill for floating IPs?

Floating IPs are billed monthly. If you use your floating IP for less than a month, you will be billed for the appropriate fraction of it.

How do you bill for traffic?

We only bill for outgoing traffic. Incoming and internal traffic is free. Internal traffic includes other Hetzner Cloud servers, other Hetzner Online dedicated root servers, and other Hetzner Online servers, services, or web hosting packages.

If you exceed the traffic included in your package, we will bill you for every TB of over usage. If you only consume a fraction of a TB, it will be rounded up to the next full TB.

Example: Your server has 20TB included traffic. Within a month you use 20.8TB. You will be billed for 1 TB of over usage.

How do you bill for snapshots and backups?

Snapshots are billed per gigabyte per month. If a snapshot only exists for a fraction of a month, then it will only be billed for this fraction. We will only bill you for the space the compressed snapshot uses in our storage system. So if you create a snapshot of a disk of 40GB, you will be billed for 40GB or less - depending on how the data on your disk compresses.

Backups are billed as a monthly flat price which is 20% of the price of the server you activate them for. So if you activate backups for a server that costs €2.49 per month, you will be billed an additional €2.49 * 0.2 = €0.498/month. For this price you will get a total of 7 backup slots.

When will I get my invoice?

When you sign up for our offer, we will create the first invoice earlier than usual. We will only do this for the very first invoice. We find that it helps prevent abuse.

You can manage your open invoices at any time, regardless of when we create your invoice, via your account on Cloud Console by going to "Account; Billing".

After the first invoice, we will create invoices based on full calendar months. To space out invoices, we may create them up to 28 days after the last month was completed.

How do I keep my costs under control?

You can set alerts that will send you an email if you exceed a certain cost limit. To set an alert, go to "Account; Billing" in your Cloud Console.

Billing alert.png

You can set values per project by clicking on the numbers.

How are small amounts handled in invoices?

All amounts within an invoice are added to the total sum.

Example: You use multiple servers with a price of 0.004€ for just one hour. When we create an invoice, all of these amounts will be added to the total sum of the invoice only after that the total sum will be rounded to two digits using commercial rounding rules. This gives us a higher level of precision than if we used the commercial rounding rules on the sub-totals.

Technical details

What hardware do my servers run on?

Hetzner Cloud servers run on the latest generation of Intel Xeon CPUs (Skylake) with ECC RAM. For local storage we use NVMe SSDs.

What hypervisor and NIC/disk drivers do you use?

We are running KVM as a hypervisor. We use virtio for both virtual NICs and disks.

Is there any way to get a custom configuration?

Customized virtual servers are not currently available. However, you can mount additional disks, called Volumes, which are flexible block storage drives with up to 10 TB storage. And you can add RAM and CPU resources with the Rescale feature.

How are your images set up?

The images we provide use cloud-init to set up networking and other options.

They come with qemu-guest agent preinstalled. It is used for:

  • force flushing of disk caches before snapshots and backups are created
  • resetting the root password on your request

If you do not want to have qemu guest agent running, feel free to uninstall it. However you will lose the functionality mentioned above.

Can I install Windows?

Right now we are focusing on support for Linux as an operating system. You can install Windows manually on your own using an ISO image. For more information, please see here.

Please note that we will not provide any support for Windows.

Are you patched against Meltdown and Spectre?

All currently released stable patches are applied. We expect to apply more patches as they get released by our vendors over the new few days and weeks.

How are API tokens stored?

In order to access our API you will need to generate an API token, which is a 64 byte string. The last 32 bytes of this key are secret. The first 32 bytes are a prefix which is used for identification, similar to a username. On Token creation we will display the full version only once.

After that your token cannot be retrieved in full again since the secret portion is stored in a hashed format only. The prefix can be retrieved again to identify the token, for example in the list of account activities.

The prefix part itself does not enable access to the API since the secret part is needed as well.

For your Debian and Centos Images: What is the minor version?

We automatically update our images to be the latest minor version within two weeks after the release. That means that our existing Debian 9 image will always contain the latest Debian 9.X version within two weeks after its release.

More detail:

For Debian and Centos the versioning scheme is MAJOR.MINOR, e.g. Debian 9.1 is Debian with major version 9 and minor version 1.

For both Debian and Centos updating a minor Version (e.g. Debian 9.3 -> 9.4) is done implicitly when updating your software packages. Therefore the minor version will change during the lifetime of your server. To avoid confusion our Image descriptions do not contain the minor version but only the major (e.g. "Debian 9" instead of "Debian 9.1")

Future plans

Do you plan to add x feature?/Will you add more features?

We started Hetzner Cloud with the minimal feature set we think is necessary to enter the market. However we intend to continually add new features and services. We have designed our internal development methods and systems to allow us to add more features.

Unfortunately we cannot provide you with a precise roadmap of the things we are working on. However you can stay up to date by following us on Twitter at https://twitter.com/hetzner_online

Will you add additional locations in different geographic regions?

We are actively looking into this option right now.


Can I access your Service through an API?

Of course! You can find current the api docs under https://docs.hetzner.cloud.

If you develop something against our API we appreciate feedback through the support form of your Cloud Console.

Do you sponsor efforts to integrate Hetzner Cloud into Open Source libs?

Yes we do: If you are developing integrations based on our API and your product is Open Source you may be eligible for a free one time €50 (excl. VAT) credit on your account. Please contact us via the support page on your Cloud Console and let us know the following:

  • The type of integration you would like to develop
  • Link to the GitHub repo you will use for the project
  • Link to some other Open Source work you have already done (if you have done so)

A list of integrations that are already done or being worked on can be found here:


We'd love to hear from you! :)

Is there a command line (CLI) tool to access Hetzner Cloud?

Yes. It is provided as an Open Source Project here: https://github.com/hetznercloud/cli

If you would like to contribute or extend it, please do so by opening pull requests.

Is there a library to access Hetzner Cloud from my programming language?

We currently provide a library for Go as Open Source under https://github.com/hetznercloud/hcloud-go.

You can find inofficial libraries for many languages at our integrations list: https://github.com/hetznercloud/awesome-hcloud

Since our API is very easy to use you may not even need a full lib and a quick HTTPS request may be enough; check out our API documentation at https://docs.hetzner.cloud

Work for us

We are looking for new developers. So if you like our product and would like to work for Hetzner Online, please take a look at https://career.hetzner.com

© 2020. Hetzner Online GmbH. Alle Rechte vorbehalten.