# How to Migrate from Hetzner object storage to Quake AI

Source: https://docs.quake.ai/docs/object/migration/migrate-from-hetzner
Markdown: https://docs.quake.ai/docs/object/migration/migrate-from-hetzner.md

---

# 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.



This guide covers **Hetzner Object Storage**, the S3-compatible bucket service at `*.your-objectstorage.com`. If you are moving data from **Hetzner Storage Box** (which uses SFTP, FTP, SMB, or WebDAV, not S3), rclone reads those protocols directly: configure an rclone SFTP remote for the source and a Quake AI S3 remote for the destination. See [Back up to Quake AI](/docs/object/migration/backup-to-quake-ai) for rclone setup.



## Service mapping

<MigrationTable provider="hetzner" service="storage/object" />


## Prerequisites

- A Quake AI account with [S3 credentials](/docs/object/how-to/create-s3-credentials)
- Hetzner S3 credentials (generated in the Hetzner Cloud Console under **Security** > **S3 Credentials**)
- [rclone](https://rclone.org/install/) installed (v1.65+)

## Before you start

Read the [migration planning guide](/docs/object/migration/plan-your-migration) 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.com` URLs. 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](/docs/object/migration/tools-comparison#minio-client) instead.

## Configure rclone remotes

Add both remotes to `~/.config/rclone/rclone.conf`:

```ini
[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 = private
```

Replace the Hetzner endpoint with your region (`fsn1`, `nbg1`, or `hel1`). Replace the Quake AI endpoint with your region.

Verify both remotes:

```bash
rclone lsd hetzner:
rclone lsd quakeai:
```

## Create the destination bucket

```bash
rclone mkdir quakeai:my-bucket
```

## Run the migration

### Initial copy

```bash
rclone copy hetzner:my-source-bucket quakeai:my-bucket \
  --transfers 16 \
  --checkers 32 \
  --s3-chunk-size 64M \
  --progress \
  --log-file migration.log \
  --log-level INFO
```

Since 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

```bash
rclone sync hetzner:my-source-bucket quakeai:my-bucket \
  --transfers 16 \
  --checkers 32 \
  --progress
```

## Verify the migration

```bash
rclone size hetzner:my-source-bucket
rclone size quakeai:my-bucket
```

Check file integrity:

```bash
rclone check hetzner:my-source-bucket quakeai:my-bucket \
  --one-way \
  --log-file check.log
```

See the [validation checklist](/docs/object/migration/plan-your-migration#validation-checklist) for the full procedure.

## Cut over

1. Run a final `rclone sync`.
2. Update your application's S3 endpoint configuration. See [update application endpoint](/docs/object/migration/update-application-endpoint).
3. Keep the Hetzner source bucket for 30 days as a rollback target.
4. Cancel your Hetzner Object Storage subscription after the holdover period.

## See also

- [Plan your migration](/docs/object/migration/plan-your-migration): compatibility matrix, validation checklist
- [Migration tools comparison](/docs/object/migration/tools-comparison): rclone configuration and alternatives
- [Update application endpoint](/docs/object/migration/update-application-endpoint): swap SDK config to Quake AI
