What

https://restic.net

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:

SettingValue
CompressionInherit (e.g. LZ4)
Record size1M
EncryptionOff (restic encrypts client-side)
AtimeOff

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 open

Periodic 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).