NAME

hcloud.pl - Hetzner Cloud CLI (Perl implementation)

VERSION

version 0.001

SYNOPSIS

# List servers
hcloud.pl server

# Create a server (minimal)
hcloud.pl server create --name my-server --type cx22 --image debian-12

# Create a server (full options)
hcloud.pl server create \
    --name my-server \
    --type cx22 \
    --image debian-12 \
    --location fsn1 \
    --ssh-key my-key \
    --label env=prod \
    --label team=ops \
    --user-data-from-file cloud-init.yaml

# Create without public IPv4
hcloud.pl server create --name private-server --type cx22 --image debian-12 \
    --without-ipv4 --network 12345

# Delete a server
hcloud.pl server delete 12345

# Describe a server
hcloud.pl server describe 12345

# List server types
hcloud.pl servertype

# JSON output
hcloud.pl -o json server

DESCRIPTION

Perl implementation of the Hetzner Cloud CLI tool (hcloud). This script provides a command-line interface to the Hetzner Cloud API.

To avoid conflicts with the official hcloud binary, this script is named hcloud.pl. You can create an alias if desired:

alias hcloud='perl /path/to/hcloud.pl'

NAME

hcloud.pl - Hetzner Cloud CLI (Perl implementation)

OPTIONS

-t, --token=TOKEN

Hetzner Cloud API token. Defaults to HETZNER_API_TOKEN environment variable.

-o, --output=FORMAT

Output format: table (default) or json.

COMMANDS

server

Manage servers.

server create

Create a new server. Required options: --name, --type, --image.

hcloud.pl server create --name web1 --type cx22 --image debian-12

Options:

--name              Server name (required)
--type              Server type, e.g., cx22, cpx11 (required)
--image             Image name, e.g., debian-12 (required)
--location          Location: fsn1, nbg1, hel1, ash, hil
--datacenter        Datacenter, e.g., fsn1-dc14
--ssh-key           SSH key name or ID (repeatable)
--label             Label as key=value (repeatable)
--network           Network ID to attach (repeatable)
--volume            Volume ID to attach (repeatable)
--firewall          Firewall ID (repeatable)
--placement-group   Placement group ID or name
--user-data-from-file   Path to cloud-init file
--without-ipv4      Create without public IPv4
--without-ipv6      Create without public IPv6
--primary-ipv4      Assign existing Primary IPv4
--primary-ipv6      Assign existing Primary IPv6
--automount         Automount attached volumes
--no-start-after-create  Don't start server after creation

server list

List all servers.

server describe <ID>

Show details for a server.

server delete <ID>

Delete a server.

sshkey

Manage SSH keys.

image

List images. Use --type to filter by type (system, snapshot, backup).

servertype

List available server types.

location

List available locations.

datacenter

List available datacenters.

ENVIRONMENT

HETZNER_API_TOKEN

Default API token if not specified via --token.

SEE ALSO

WWW::Hetzner::CLI, WWW::Hetzner::Cloud, https://docs.hetzner.cloud/

SUPPORT

Source Code

The code is open to the world, and available for you to hack on. Please feel free to browse it and play with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull from your repository :)

https://github.com/Getty/p5-www-hetzner

git clone https://github.com/Getty/p5-www-hetzner.git

AUTHOR

Torsten Raudssus <torsten@raudssus.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.