ZFS gives you snapshots, replication, scrubs and end-to-end checksums locally — but a snapshot on the same pool (or even a second NAS in the same room) is not an off-site backup. Object storage in Frankfurt is the cheap third leg: intercolo i3 is S3-compatible, strong read-after-write, reached via the endpoint https://de-fra.i3storage.com in region de-fra, at 99.999999% durability — and the data never leaves the Frankfurt facility. You push your datasets as objects off-site, either comfortably through a TrueNAS Cloud Sync Task in the GUI or scriptably via rclone. No second site, no tape robots, no US hyperscaler egress surprises.
In TrueNAS SCALE: Credentials → Backup Credentials → Cloud Credentials → Add (in CORE: System → Cloud Credentials). Pick 'S3 Compatible' as the provider — only that type lets you set a custom endpoint instead of a hard-wired Amazon region name.
Endpoint URL: de-fra.i3storage.com · Region: de-fra · Access Key ID + Secret Access Key from your intercolo API-key pair (SigV4). Via 'Verify Credentials' TrueNAS tests the connection immediately. TLS stays on and the certificate is valid.
In SCALE: Data Protection → Cloud Sync Tasks → Add (in CORE: Tasks → Cloud Sync Tasks). Give it a description, select the credential you just created and pick the bucket (e.g. truenas-offsite) — optionally a subfolder per dataset.
Direction: PUSH (local → S3). Transfer Mode: SYNC mirrors the source exactly and also deletes removed files remotely; COPY only adds and never deletes in the bucket. Choose the dataset path as the source, e.g. /mnt/tank/data.
Set the schedule or cron, ideally nightly right after the local snapshot task so a consistent state is uploaded. Optionally set a bandwidth limit and enable 'Follow Symlinks' as needed.
Tick 'Remote Encryption' and filenames and contents are encrypted client-side via rclone crypt BEFORE upload. Store the password and salt safely — without them the off-site copy cannot be restored later.
Path-style: https://de-fra.i3storage.com/truenas-offsite · Virtual-hosted: https://truenas-offsite.de-fra.i3storage.com. Both work; --checksum compares by checksum instead of timestamp — a natural fit for ZFS.
Keep the roles cleanly separated. Local ZFS snapshots and replication to a second pool or NAS give you fast, block-level recovery and protection against disk or pool failure — but they live at the same site and share one fire, one power outage, one ransomware strain on the LAN. The Cloud Sync / rclone copy to Frankfurt is the spatially separated distance copy: it does not replace your snapshots, it complements them as the third leg of 3-2-1. Fast everyday restores still come locally from the ZFS snapshot; reaching for Frankfurt is the disaster case, when the site itself is gone. That way each layer is responsible for exactly one job.
To be honest: i3 Object Storage provides NO storage-side versioning and no Object Lock/WORM. A Cloud Sync in SYNC mode mirrors — if you delete or encrypt a file locally, that change is pushed up on the next run. Your retention and rollback point therefore lives in TrueNAS: the ZFS snapshot retention (snapshot tasks with a lifetime, e.g. hourly 24 h, daily 14 days) keeps the immutable historical states locally, and the S3 copy is the off-site leg of 3-2-1. If you want to fix the last good state off-site too, use COPY instead of SYNC or separate target buckets/folders per point in time. For confidentiality, ALWAYS encrypt client-side — Remote Encryption in the Cloud Sync Task or rclone crypt — because there is no at-rest encryption on the storage side; only transport runs over TLS. The key stays with you: no password, no restore.
The target is aligned exactly to the source and also removes deleted files remotely. Lowest storage footprint, but no protection against accidental deletion — always combine this mode with local ZFS snapshot retention.
Copies new and changed files upward but NEVER deletes in the bucket. Old states stay off-site while the bucket keeps growing. Useful when you want to work without a second retention mechanism.
The checkbox in the Cloud Sync Task encrypts filenames and contents via rclone crypt BEFORE upload. Only ciphertext lands in the bucket. Store password and salt safely — without them the copy is worthless.
The same mechanism manually: a crypt remote layered over your S3 remote. Only unreadable ciphertext reaches storage and the key never leaves the NAS. Ideal for scriptable backups with full control over the key.
With cloud backup the untested restore is the real risk. US hyperscalers bill every retrieval as egress — so people test too rarely. Here 1 TB of egress is included per booked TB of storage. You pull a dataset back as a test (Cloud Sync PULL or rclone copy in the reverse direction), check individual files and validate your recovery path without the next invoice exploding. Extra traffic is billed transparently at +€3.99/TB — predictable, not surprising. Especially when pulling back large ZFS pools, you know in advance what the restore costs instead of finding a surprise on the monthly bill.
| Wasabi | Backblaze B2 | intercolo i3 | |
|---|---|---|---|
| Location / data residency | EU region selectable, US corporation | EU region selectable, US corporation | Frankfurt DC, 100% DE, GDPR/DPA |
| Endpoint | s3.eu-central-*.wasabisys.com | s3.eu-central-*.backblazeb2.com | https://de-fra.i3storage.com (de-fra) |
| TrueNAS integration | S3 Compatible / rclone | B2 native or S3 / rclone | S3 Compatible Cloud Sync / rclone |
| Egress model | 'free' up to storage limit, then throttled | 1 TB free/day, then per GB | 1 TB incl./TB, then +€3.99/TB |
| Starting storage price | List price US$/TB | List price US$/TB | €2.49/TB |
| Support / contact | Ticket, EN | Ticket, EN | Direct, German, DC team |
| Power | varies | varies | 100% green power |
Your immutable historical states come from periodic snapshot tasks with a lifetime (e.g. hourly 24 h, daily 14 days). This history lives locally and is your actual rollback point — the S3 copy only secures the current state off-site.
3 copies, 2 media, 1 off-site: production pool plus local replication as the fast copies, the Frankfurt copy as the distance leg. Regularly verify with a test restore that the off-site copy is really readable and complete.
Split datasets or retention classes into their own buckets, each with its own API key pair (SigV4). That keeps the blast radius of a compromised key small and billing per bucket easy to trace.
Naše izkušnje govorijo same zase: Uspešno smo izvedli migracije, ki so vključevale več petabajtov podatkov in več kot 500 milijonov datotek.