How to Migrate from Hetzner object storage to Quake AI
Coming from another cloud?
▸Hetzner·Object Storage, Buckets
Buckets
- S3 API (PUT Bucket requires specific headers like x-amz-acl limited to private/public-read, LocationConstraint); Swift uses POST/PUT Container with broader ACLs via X-Container-Read/Write.
- Public access via https://bucket.location.your-objectstorage.com/object; Swift public via temp URLs or ACLs.
- Up to 100 buckets per account; Swift has no hard limit.
How to migrate from Hetzner object storage to Quake AI
Both Hetzner Object Storage and Quake AI use S3-compatible APIs, making this one of the simplest migration paths. rclone copies data directly between endpoints with no local staging required.
Service mapping#
Hetzner to Quake AI
| Hetzner service | Quake AI equivalent | Key difference |
|---|---|---|
| Object Storage | Object storage | No notable divergence |
| S3 Credentials (Access Key / Secret Key) | Object storage | Project-scoped keys valid for all buckets in project by default; restrict via policy on key (Hetzner-specific?); Quake AI/Swift uses... see details |
| Object Storage (S3-compatible, Ceph-backed) | S3 Compatibility | Hetzner Object Storage endpoint format is location-scoped: {bucket}.{location}.your-objectstorage.com (e.g.... see details |
| Object Versioning | Versioning | Supported in both, but Hetzner S3 limited NoncurrentVersionExpiration to NoncurrentDays only. |
Prerequisites#
- A Quake AI account with S3 credentials
- Hetzner S3 credentials (generated in the Hetzner Cloud Console under Security > S3 Credentials)
- rclone installed (v1.65+)
Before you start#
Read the migration planning guide for the S3/Swift compatibility matrix.
Hetzner-specific considerations:
- No egress fees: Hetzner includes outbound transfer in the plan. You will not be charged for data leaving Hetzner during migration.
- Ceph backend: Hetzner Object Storage uses Ceph RADOS Gateway, similar to Quake AI's Swift S3 gateway. Behavior differences between the two are minimal for standard S3 operations.
- Virtual-hosted bucket addressing: Hetzner uses
bucket.location.your-objectstorage.comURLs. This is handled automatically by rclone. - 100-bucket limit: Hetzner limits accounts to 100 buckets. Quake AI does not impose a hard bucket limit.
- Custom metadata: Neither rclone nor s3cmd preserves custom metadata during cross-provider copies. If your objects have custom
x-amz-meta-*headers, use MinIO Client instead.
Configure rclone remotes#
Add both remotes to ~/.config/rclone/rclone.conf:
[hetzner]
type = s3
provider = Other
access_key_id = YOUR_HETZNER_ACCESS_KEY
secret_access_key = YOUR_HETZNER_SECRET_KEY
endpoint = fsn1.your-objectstorage.com
acl = private
[quakeai]
type = s3
provider = Ceph
access_key_id = YOUR_RUMBLE_ACCESS_KEY
secret_access_key = YOUR_RUMBLE_SECRET_KEY
endpoint = object.us-east-2.rumble.cloud
acl = privateReplace the Hetzner endpoint with your region (fsn1, nbg1, or hel1). Replace the Quake AI endpoint with your region.
Verify both remotes:
rclone lsd hetzner:
rclone lsd quakeai:Create the destination bucket#
rclone mkdir quakeai:my-bucketRun the migration#
Initial copy#
rclone copy hetzner:my-source-bucket quakeai:my-bucket \
--transfers 16 \
--checkers 32 \
--s3-chunk-size 64M \
--progress \
--log-file migration.log \
--log-level INFOSince both endpoints are S3-compatible, rclone performs a direct server-to-server copy. No data passes through your local machine unless object sizes require multipart reassembly.
Delta syncs#
rclone sync hetzner:my-source-bucket quakeai:my-bucket \
--transfers 16 \
--checkers 32 \
--progressVerify the migration#
rclone size hetzner:my-source-bucket
rclone size quakeai:my-bucketCheck file integrity:
rclone check hetzner:my-source-bucket quakeai:my-bucket \
--one-way \
--log-file check.logSee the validation checklist for the full procedure.
Cut over#
- Run a final
rclone sync. - Update your application's S3 endpoint configuration. See update application endpoint.
- Keep the Hetzner source bucket for 30 days as a rollback target.
- Cancel your Hetzner Object Storage subscription after the holdover period.
See also#
- Plan your migration: compatibility matrix, validation checklist
- Migration tools comparison: rclone configuration and alternatives
- Update application endpoint: swap SDK config to Quake AI
Usage Guidelines
The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.
For the full policy, see Usage Guidelines.
Last validated: 08.09.2026
Quick answers
- What is the S3-compatible endpoint hostname?CLIAPI
- Where do I set CORS rules, lifecycle policies, or bucket policies in the Console?Console
- Why do Object Storage API curl examples fail before the first request?API
- Why does my public bucket URL return 404 from the browser after I apply a public-read policy?APIConsole
See Also
S3 on Quake AI
Prerequisite
How to Migrate from Azure blob storage to Quake AI
Shares: S3, Migration
How to Migrate from Backblaze B2 to Quake AI
Shares: S3, Migration
How to Migrate from DigitalOcean Spaces to Quake AI
Shares: S3, Migration
How to Migrate from Google Cloud storage to Quake AI
Shares: S3, Migration