Skip to content

Hetzner Object Storage โ€‹

Store backups in Hetzner Object Storage with EU data residency.

Overview โ€‹

Hetzner Object Storage offers S3-compatible storage with:

  • ๐Ÿ‡ช๐Ÿ‡บ EU data residency (GDPR compliant)
  • ๐Ÿ’ถ Competitive pricing
  • ๐Ÿ”’ German infrastructure
  • S3-compatible API

Configuration โ€‹

FieldDescriptionDefault
NameFriendly nameRequired
RegionHetzner regionfsn1
BucketBucket nameRequired
Access Key IDS3 credentialsRequired
Secret Access KeyS3 credentialsRequired
Path PrefixFolder within bucketRequired

Path Prefix Required

Hetzner Object Storage requires a path prefix. It cannot write to the bucket root.

Regions โ€‹

RegionLocation
fsn1Falkenstein, Germany
nbg1Nuremberg, Germany
hel1Helsinki, Finland
ashAshburn, USA

Hetzner Setup โ€‹

Create Project โ€‹

  1. Login to Hetzner Cloud Console
  2. Create a new project (or use existing)

Enable Object Storage โ€‹

  1. In your project, go to Object Storage
  2. Create a new bucket
  3. Select region

Generate Credentials โ€‹

  1. Go to Security โ†’ API Tokens
  2. Generate S3 credentials
  3. Save Access Key and Secret Key

Configuration Example โ€‹

Region: fsn1
Bucket: my-backups
Access Key ID: xxxxxxxxxxxxxxxx
Secret Access Key: xxxxxxxxxxxxxxxxxxxxxxxx
Path Prefix: /database-backups

Endpoint is auto-generated:

https://fsn1.your-objectstorage.com

Pricing โ€‹

ResourcePrice
Storageโ‚ฌ0.0049/GB/month (~$0.005)
Egressโ‚ฌ0.01/GB
RequestsFree

Very competitive compared to major cloud providers.

GDPR Compliance โ€‹

Hetzner's EU-based infrastructure helps with GDPR:

  • Data stored in EU/EEA
  • German company (Hetzner Online GmbH)
  • No US data transfers for EU regions
  • DPA (Data Processing Agreement) available

Compliance Configuration โ€‹

For maximum GDPR compliance:

  1. Use EU regions (fsn1, nbg1, hel1)
  2. Enable DBackup encryption
  3. Document in your records of processing

Features โ€‹

Bucket Versioning โ€‹

Enable via API or Hetzner Console for backup protection.

Lifecycle Rules โ€‹

Configure automatic deletion of old versions.

Public Access โ€‹

Can be disabled for private buckets (recommended).

Troubleshooting โ€‹

Invalid Credentials โ€‹

InvalidAccessKeyId

Solutions:

  1. Regenerate S3 credentials in Hetzner Console
  2. Verify no extra spaces
  3. Check credentials match region

Access Denied on Root โ€‹

AccessDenied when writing to /

Solution: Set a Path Prefix (required for Hetzner).

Bucket Not Found โ€‹

NoSuchBucket

Solutions:

  1. Create bucket in Hetzner Console
  2. Verify bucket name matches exactly
  3. Check region is correct

Region Mismatch โ€‹

PermanentRedirect

Solution: Ensure region in DBackup matches bucket region.

Integration with Hetzner Cloud โ€‹

VPS in Same Datacenter โ€‹

Lower latency when DBackup runs on Hetzner:

  • Use same region for VPS and Object Storage
  • Internal network speeds

Load Balancer โ€‹

Combine with Hetzner Load Balancer for HA setups.

Security โ€‹

Network Security โ€‹

  • Enable firewall rules
  • Use VPN for management access
  • Consider private networking

Encryption โ€‹

Multiple layers available:

  1. Transit: TLS (automatic)
  2. Server-side: Hetzner encryption
  3. Client-side: DBackup Encryption Profiles

Access Control โ€‹

Currently limited compared to AWS:

  • Single credential per project
  • Use separate projects for isolation

Best Practices โ€‹

  1. Use path prefixes to organize backups
  2. Enable DBackup retention for automatic cleanup
  3. Use EU regions for GDPR compliance
  4. Enable encryption for sensitive data
  5. Monitor costs in Hetzner Console
  6. Regular restore tests to verify integrity

Migration โ€‹

From Other S3 Storage โ€‹

Use rclone for migration:

bash
rclone copy s3:source-bucket hetzner:dest-bucket/prefix --progress

To Hetzner โ€‹

  1. Create Hetzner destination in DBackup
  2. Run parallel backups to both destinations
  3. Verify Hetzner backups
  4. Update jobs to use Hetzner only

Next Steps โ€‹

Released under the GNU General Public License. | Privacy ยท Legal Notice