Executive Summary
Hetzner Cloud offers two distinct backup mechanisms: automatic daily backups (server-level rolling snapshots retained for seven days at a 20% monthly surcharge) and manual snapshots (point-in-time server images billed per GB of used storage). This article explains the distinction between server snapshots and Cloud Volumes, walks through enabling automatic backups and taking manual snapshots via the Hetzner Cloud console, and demonstrates automating snapshot creation with the hcloud CLI for teams that need custom retention policies.
Backups are a fundamental part of any production infrastructure. Hetzner Cloud provides built-in mechanisms for creating point-in-time copies of your server instances, but understanding the options — and their limitations — is essential for choosing the right backup strategy.
All snapshot and backup configuration is performed in the Hetzner Cloud console at console.hetzner.cloud or via the Hetzner Cloud API / hcloud CLI tool. The INNOVATECH GROUP portal does not provide native snapshot management — the portal's hosting/cloud service detail page is for service reference only.
Prerequisites
- A Hetzner Cloud account with at least one provisioned server instance
- Access to the Hetzner Cloud console at
console.hetzner.cloud - For CLI automation: a local workstation with the
hcloudCLI installed and an API token generated from the Hetzner Cloud console - Familiarity with cron scheduling (for automated snapshot scripts)
Understanding Server Snapshots vs. Cloud Volumes
Server Snapshots
A server snapshot is a complete image of your server's boot disk at a specific point in time. It captures the full filesystem — operating system, installed packages, application code, databases, and configuration files.
- Billing: Per GB of used disk space on the snapshot. Pricing is listed on the Hetzner Cloud pricing page and may change — always verify current rates.
- Use cases: Pre-deployment checkpoints, disaster recovery, cloning a server configuration.
- Retention: Manual snapshots persist until you explicitly delete them. There is no automatic cleanup.
Automatic Daily Backups
Hetzner Cloud offers an automatic daily backup feature that creates a rolling set of server backups.
- Retention: Seven rolling backups. The oldest backup is replaced when a new one is created.
- Billing: 20% surcharge on the server's monthly cost. For example, a €5.39/month server costs an additional €1.08/month for automatic backups.
- Backup window: Hetzner assigns a two-hour backup window. The exact time is server-configurable from the console, but the backup may start at any point within the window.
Cloud Volumes
A Cloud Volume is a persistent block storage device that can be attached to (and detached from) server instances. Volumes are billed separately from the server and are not affected when a server is deleted.
- Volumes are not included in server snapshots or automatic backups. A server snapshot captures only the server's boot disk.
- To back up a Cloud Volume, you must snapshot the volume separately (via the Cloud console or API) or use file-level backup tools (rsync, restic, etc.) from inside the server.
Enabling Automatic Daily Backups
- Log in to the Hetzner Cloud console at
console.hetzner.cloud. - Select your project and navigate to the Servers section.
- Click on the server you want to back up.
- Navigate to the Backups tab.
- Click Enable Backups.
- Optionally configure the preferred backup window (the two-hour period during which backups will be created).
Automatic backups begin on the next scheduled window after enabling. The first backup may take longer depending on disk usage.
Restoring from an Automatic Backup
- In the Backups tab, locate the backup you want to restore.
- Click Restore and confirm. This replaces the server's current boot disk with the backup image.
- The server will reboot during the restore process.
Warning: Restoring a backup overwrites the current disk. Any data written after the backup was taken will be lost. Consider taking a manual snapshot before restoring if you need to preserve the current state.
Taking a Manual Snapshot
Manual snapshots are useful for pre-deployment checkpoints, pre-migration captures, or any situation where you want a restorable copy outside the automatic backup rotation.
- In the Hetzner Cloud console, select the server.
- Navigate to the Snapshots tab.
- Click Take Snapshot.
- Enter a descriptive label (e.g.
pre-deploy-2026-04-15orbefore-db-migration). - Wait for the snapshot process to complete. The server remains running during the snapshot, but disk-intensive operations may experience brief I/O delays.
Restoring from a Manual Snapshot
- In the Snapshots tab (or the Images section in the Hetzner Cloud console), locate the snapshot.
- Click Create Server to provision a new server from the snapshot, or Restore to overwrite an existing server's disk.
When to Use Manual vs. Automatic Backups
| Scenario | Recommendation |
|---|---|
| General daily protection | Enable automatic backups |
| Pre-deployment checkpoint | Take a manual snapshot |
| Longer retention than 7 days | Manual snapshots (they persist until deleted) |
| Cloning a server configuration | Manual snapshot → create server from image |
| Disaster recovery with guaranteed RPO | Automatic backups + periodic manual snapshots |
Automating Snapshots with the hcloud CLI
For teams that need more control — custom retention windows, more frequent snapshots, or scripted workflows — the hcloud CLI tool provides programmatic access to Hetzner Cloud operations.
Install the hcloud CLI
macOS:
brew install hcloud
Ubuntu/Debian:
sudo apt install -y hcloud-cli
Or download the binary from the Hetzner GitHub releases page.
Authenticate
- In the Hetzner Cloud console, navigate to Security → API Tokens.
- Click Generate API Token, give it a descriptive name, and select Read & Write permissions.
- Copy the token — it is shown only once.
Configure the CLI:
hcloud context create my-project
# Paste the API token when prompted
Create a Snapshot via CLI
hcloud server create-image --type snapshot --description "auto-$(date +%Y-%m-%d-%H%M)" YOUR_SERVER_NAME
Replace YOUR_SERVER_NAME with the server's name or ID.
Automate with Cron
Create a script at /home/deploy/scripts/snapshot.sh:
#!/bin/bash
set -euo pipefail
SERVER_NAME="laravel-prod-01"
DESCRIPTION="auto-$(date +%Y-%m-%d-%H%M)"
hcloud server create-image \
--type snapshot \
--description "$DESCRIPTION" \
"$SERVER_NAME"
echo "[$(date)] Snapshot created: $DESCRIPTION" >> /home/deploy/logs/snapshot.log
Make it executable and schedule it via cron:
chmod +x /home/deploy/scripts/snapshot.sh
crontab -e
Add a cron entry (example: daily at 02:00):
0 2 * * * /home/deploy/scripts/snapshot.sh
Cleaning Up Old Snapshots
List all snapshots:
hcloud image list --type snapshot --sort created:desc
Delete a specific snapshot by ID:
hcloud image delete SNAPSHOT_ID
For automated cleanup, you can script a retention policy. Example: keep only the last 14 snapshots:
#!/bin/bash
set -euo pipefail
KEEP=14
SNAPSHOT_IDS=$(hcloud image list --type snapshot -o noheader -o columns=id --sort created:asc | head -n -$KEEP)
for id in $SNAPSHOT_IDS; do
hcloud image delete "$id"
echo "[$(date)] Deleted snapshot $id" >> /home/deploy/logs/snapshot-cleanup.log
done
Common Failure Modes
| Symptom | Likely Cause | Action |
|---|---|---|
| Automatic backup not appearing | Backup was just enabled; first backup hasn't run yet | Wait for the configured backup window to pass |
| Snapshot creation fails | Server is in an error state or performing another operation | Check server status in the console; retry after the current operation completes |
| CLI returns "unauthorized" | API token expired or lacks write permissions | Generate a new token with Read & Write scope |
| Restored server has stale data | Backup/snapshot was taken before recent changes | This is expected — snapshots are point-in-time. Consider more frequent snapshots for critical workloads |
| Cloud Volume data missing after restore | Volumes are not included in server snapshots | Volume data must be backed up separately via Volume snapshots or file-level tools |
Security Considerations
- Store the
hcloudAPI token securely. Do not commit it to a Git repository. Use environment variables or a secrets manager. - An API token with write access can delete servers, snapshots, and volumes. Restrict token scope to the minimum necessary and rotate tokens periodically.
- Snapshot images may contain sensitive data (database credentials, application secrets, user data). Hetzner encrypts data at rest, but treat snapshot access as equivalent to server access.
- If you automate snapshot creation via cron on a server, ensure the cron user has access to the
hcloudconfiguration context.
When to Contact INNOVATECH GROUP Support
Open a support ticket if:
- You need guidance on a backup strategy for INNOVATECH GROUP-managed hosting or cloud services
- You are unsure whether your hosting plan includes automatic backups as a managed feature
- You need help configuring backup-related services on infrastructure managed by INNOVATECH GROUP
- You encounter issues with a Hetzner Cloud service that is part of your INNOVATECH GROUP hosted environment