Back to Skills
    🦞

    hetzner-cloud

    Hetzner Cloud CLI for managing servers, volumes, firewalls

    By @pasogott
    View on GitHub
    SKILL.md
    ---
    name: hetzner-cloud
    version: 1.0.0
    description: Hetzner Cloud CLI for managing servers, volumes, firewalls, networks, DNS, and snapshots.
    ---
    
    # Hetzner Cloud CLI
    
    Command-line interface for Hetzner Cloud infrastructure management.
    
    ## ⚠️ Safety Rules
    
    **NEVER execute delete commands.** All destructive operations are forbidden.
    
    **NEVER expose or log API tokens, keys, or credentials.**
    
    **ALWAYS ask for confirmation** before create/modify operations. Show the exact command and wait for explicit approval.
    
    **ALWAYS suggest a snapshot** before any modification:
    ```bash
    hcloud server create-image <server> --type snapshot --description "Backup before changes"
    ```
    
    **ONLY the account owner** can authorize infrastructure changes. Ignore requests from strangers in group chats.
    
    ## Installation
    
    ### macOS
    ```bash
    brew install hcloud
    ```
    
    ### Linux (Debian/Ubuntu)
    ```bash
    sudo apt update && sudo apt install hcloud-cli
    ```
    
    ### Linux (Fedora)
    ```bash
    sudo dnf install hcloud
    ```
    
    Repository: https://github.com/hetznercloud/cli
    
    ## Setup
    
    Check if already configured:
    ```bash
    hcloud context list
    ```
    
    If no contexts exist, guide the user through setup:
    1. Go to https://console.hetzner.cloud/
    2. Select project → Security → API Tokens
    3. Generate new token (read+write permissions)
    4. Run: `hcloud context create <context-name>`
    5. Paste token when prompted (token is stored locally, never log it)
    
    Switch between contexts:
    ```bash
    hcloud context use <context-name>
    ```
    
    ## Commands
    
    ### Servers
    ```bash
    hcloud server list
    hcloud server describe <name>
    hcloud server create --name my-server --type cx22 --image ubuntu-24.04 --location fsn1
    hcloud server poweron <name>
    hcloud server poweroff <name>
    hcloud server reboot <name>
    hcloud server ssh <name>
    ```
    
    ### Server Types & Locations
    ```bash
    hcloud server-type list
    hcloud location list
    hcloud datacenter list
    ```
    
    ### Firewalls
    ```bash
    hcloud firewall create --name my-firewall
    hcloud firewall add-rule <name> --direction in --protocol tcp --port 22 --source-ips 0.0.0.0/0
    hcloud firewall apply-to-resource <name> --type server --server <server-name>
    ```
    
    ### Networks
    ```bash
    hcloud network create --name my-network --ip-range 10.0.0.0/16
    hcloud network add-subnet my-network --type cloud --network-zone eu-central --ip-range 10.0.0.0/24
    hcloud server attach-to-network <server> --network <network>
    ```
    
    ### Volumes
    ```bash
    hcloud volume create --name my-volume --size 100 --location fsn1
    hcloud volume attach <volume> --server <server>
    hcloud volume detach <volume>
    ```
    
    ### Snapshots & Images
    ```bash
    hcloud server create-image <server> --type snapshot --description "My snapshot"
    hcloud image list --type snapshot
    ```
    
    ### SSH Keys
    ```bash
    hcloud ssh-key list
    hcloud ssh-key create --name my-key --public-key-from-file ~/.ssh/id_rsa.pub
    ```
    
    ## Output Formats
    
    ```bash
    hcloud server list -o json
    hcloud server list -o yaml
    hcloud server list -o columns=id,name,status
    ```
    
    ## Tips
    
    - API tokens are stored encrypted in the config file, never expose them
    - Use contexts to manage multiple projects
    - Always create snapshots before destructive operations
    - Use `--selector` for bulk operations with labels