What
A modern backup solution:
- effective – only transferring the parts that actually changed in the files you back up
- secure – by careful use of cryptography in every part of the process
- verifiable – enabling you to make sure that your files can be restored when needed
- self-hostable, free and open source
Setup
Repo layout
restic/ ← TrueNAS dataset root
├── documents/ ← ~/Documents, backed up from ONE machine only
├── <hostname>/configs/ ← per-host: /etc + ~/.config etc.
└── <hostname2>/configs/
ZFS dataset
In TrueNAS UI → Datasets, create main-pool/backups/restic:
| Setting | Value |
|---|---|
| Compression | Inherit (e.g. LZ4) |
| Record size | 1M |
| Encryption | Off (restic encrypts client-side) |
| Atime | Off |
Restic REST Server app
In Apps → Discover Apps, install Restic REST Server:
- UID/GID: leave at chart default (568 / apps)
- Port: 30248 (this is the data port, not a UI)
- Authentication: disabled
- Append-only: disabled
- Storage: point to
main-pool/backups/restic
After installing, fix dataset ownership so the app can write:
→ Datasets → restic → Edit Permissions → User: apps (568), Group: apps (568)
Then restart the app. Confirm it’s running:
nmap <truenas-host> -p 30248
# Should show: 30248/tcp openPeriodic snapshots (defense-in-depth on the repo)
In Data Protection → Periodic Snapshot Tasks → Add:
- Dataset:
main-pool/backups— Recursive: yes - Schedule: daily
- Lifetime: 30 days
Client setup and restore commands
See Restic backup setup (not available online).