Self-Host TrueNAS SCALE: Your Own Network-Attached Storage in 20 Minutes
Cloud storage is convenient until you're paying $120/year for 2TB and your files live on someone else's computer. TrueNAS SCALE gives you enterprise-grade storage — ZFS, snapshots, replication, apps — running on your own hardware. No subscriptions. No data mining. Just your data, your rules.
In this guide, you'll deploy TrueNAS SCALE on a spare machine or VPS, configure a ZFS pool, set up SMB sharing, and install your first app. Let's build.
Why TrueNAS SCALE?
TrueNAS SCALE is the Linux-based evolution of FreeNAS/TrueNAS CORE. It brings:
- ZFS filesystem — Checksums, compression, snapshots, and self-healing
- Apps ecosystem — Kubernetes-powered app catalog with 100+ pre-configured services
- SMB/NFS/iSCSI — Share files across your network (or the internet) securely
- Replication — Sync data to another TrueNAS box or cloud bucket
- No vendor lock-in — Export your pool and walk away anytime
If you've outgrown a USB drive duct-taped to a Raspberry Pi, this is your next step.
Prerequisites
- A machine with 8GB+ RAM (16GB recommended for ZFS), 2+ drives (one for OS, one+ for storage), and an Ethernet connection
- Alternatively, a VPS with 2+ attached volumes (Hetzner and Contabo work well)
- A USB stick (8GB+) for the installer if using bare metal
- Basic Linux comfort (SSH, editing config files)
Step 1: Install TrueNAS SCALE
Download the latest ISO from truenas.com. Flash it to USB with balenaEtcher or dd:
# Linux/macOS
dd if=TrueNAS-SCALE-24.04.iso of=/dev/sdX bs=4M status=progress
Boot from the USB, select Install/Upgrade, pick your OS drive, and set a root password. The installer handles partitioning automatically. Remove the USB and reboot when done.
For VPS installs, mount the ISO via your provider's rescue mode or custom image feature, then follow the same steps.
Step 2: Initial Web UI Setup
After boot, the console displays your management URL:
https://192.168.1.100 (or your VPS IP)
Open it in a browser, log in with root and your password. You'll land on the dashboard. Three things to do immediately:
- Network → Global Configuration — Set a static IP or configure your domain
- System → General → Localization — Set your timezone
- System → Advanced → SSH — Enable SSH if you want remote shell access
Step 3: Create a ZFS Pool
Go to Storage → Pools → Add. Select your data drives and choose a layout:
- Stripe — Maximum capacity, no redundancy (not recommended)
- Mirror — 2 drives, 50% capacity, 1-drive fault tolerance
- RAIDZ1 — 3+ drives, ~66% capacity, 1-drive fault tolerance
- RAIDZ2 — 4+ drives, ~50% capacity, 2-drive fault tolerance
Name it tank (tradition) and click Create Pool. ZFS scrubs and checksums are enabled by default — leave them on.
Step 4: Create Datasets and Shares
Datasets are ZFS's version of folders, but with per-dataset compression, quotas, and snapshots. Create a few:
Storage → Pools → tank → Add Dataset
Name: media (for Plex/Jellyfin)
Name: backups (for Borgmatic/Restic)
Name: documents (for SMB/NFS shares)
Now share them. For Windows/macOS clients:
- Shares → Windows (SMB) → Add
- Path:
/mnt/tank/documents - Name:
documents - Enable Allow Guest Access for a homelab, or configure users for tighter security
Click Save, then Start Service when prompted. Your share is now at \\192.168.1.100\documents.
Step 5: Install Apps (Optional but Awesome)
TrueNAS SCALE has a built-in app catalog. Go to Apps → Discover Apps and search for what you need. Let's install MinIO (S3-compatible storage) as an example:
- Click Install on the MinIO app
- Accept defaults or set a custom admin password
- Storage: Point it to
/mnt/tank/mediaor create a new dataset - Click Install again
Kubernetes spins it up in the background. In 2 minutes, you have S3 at http://192.168.1.100:30000.
Step 6: Snapshot and Replication
ZFS snapshots are instant and space-efficient. Set up automatic snapshots:
- Data Protection → Periodic Snapshot Tasks → Add
- Dataset:
tank/documents - Schedule:
Hourly(keep 24),Daily(keep 7),Weekly(keep 4)
For off-site backup, add a Replication Task to push snapshots to:
- Another TrueNAS box via SSH
- A cloud bucket (S3, B2, GCS) via
rclonein a jail/container
Verification
Confirm everything works:
ping 192.168.1.100— Machine is reachable- Browse to
\\192.168.1.100\documents— SMB share mounts - Storage → Snapshots — Periodic snapshots are appearing
- Apps → Installed — MinIO shows
Active
Next Steps
- TrueNAS + Cloudflare Tunnel — Access your files remotely without VPN
- TrueNAS + Borgmatic — Encrypted off-site backups to any S3 bucket
- TrueNAS + Plex — Stream media to any device
- TrueNAS + WireGuard — Secure remote access to your NAS
TrueNAS SCALE turns commodity hardware into a storage appliance that rivals $5,000 Synology units. Your data stays yours. Now go fill that pool.