hcloud: Command-line interface for Hetzner Cloud

hcloud is a command-line interface for interacting with Hetzner Cloud.

Installation
You can download pre-built binaries for Linux, FreeBSD, macOS, and Windows on
the releases page.
On macOS, you can install hcloud via Homebrew:
brew install hcloud
Third-party packages
There are unofficial packages maintained by third-party users. Please note
that these packages aren’t supported nor maintained by Hetzner Cloud and
may not always be up-to-date. Downloading the binary or building from source
is still the recommended install method.
| Operating System |
Command |
| Debian (>= bullseye) |
apt install hcloud-cli |
| Ubuntu (>= 19.04) |
apt install hcloud-cli |
| Arch Linux |
pacman -Syu hcloud |
| Void Linux |
xbps-install -Syu hcloud |
| Gentoo Linux |
emerge hcloud |
Build manually
If you have Go installed, you can build and install the hcloud program with:
go get -u github.com/hetznercloud/cli/cmd/hcloud
Getting Started
-
Visit the Hetzner Cloud Console at console.hetzner.cloud,
select your project, and create a new API token.
-
Configure the hcloud program to use your token:
hcloud context create my-project
-
You’re ready to use the program. For example, to get a list of available server
types, run:
hcloud server-type list
See hcloud help for a list of commands.
Shell Completion
To load completions:
Bash:
$ source <(hcloud completion bash)
# To load completions for each session, execute once:
Linux:
$ hcloud completion bash > /etc/bash_completion.d/hcloud
MacOS:
$ hcloud completion bash > /usr/local/etc/bash_completion.d/hcloud
Zsh:
# If shell completion is not already enabled in your environment you will need
# to enable it. You can execute the following once:
$ echo "autoload -U compinit; compinit" >> ~/.zshrc
# To load completions for each session, execute once:
$ hcloud completion zsh > "${fpath[1]}/_hcloud"
# You will need to start a new shell for this setup to take effect.
Fish:
$ hcloud completion fish | source
# To load completions for each session, execute once:
$ hcloud completion fish > ~/.config/fish/completions/hcloud.fish
Output configuration
You can control output via the -o option:
-
For list commands, you can specify -o noheader to omit the table header.
-
For list commands, you can specify -o columns=id,name to only show certain
columns in the table.
-
For describe commands, you can specify -o json to get a JSON representation
of the resource. The schema is identical to those in the Hetzner Cloud API which
are documented at docs.hetzner.cloud.
-
For describe commands, you can specify -o format={{.ID}} to format output
according to the given Go template.
The template’s input is the resource’s corresponding struct in the
hcloud-go library.
You can use the following environment variables to configure hcloud:
HCLOUD_TOKEN
HCLOUD_CONTEXT
HCLOUD_CONFIG
When using hcloud in scripts, for example, it may be cumbersome to work with
contexts. Instead of creating a context, you can set the token via the HCLOUD_TOKEN
environment variable. When combined with tools like direnv, you
can configure a per-directory context by setting HCLOUD_CONTEXT=my-context via .envrc.
Examples
List all servers
$ hcloud server list
ID NAME STATUS IPV4
210216 test1 running 78.46.122.12
210729 ubuntu-8gb-nbg1-dc3-1 running 94.130.177.158
Create a server
$ hcloud server create --name test --image debian-9 --type cx11 --ssh-key demo
7s [====================================================================] 100%
Server 325211 created
License
MIT license