Skip to Content

Self-Host TrueNAS SCALE: Your Own Network-Attached Storage in 20 Minutes

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:

  1. Network → Global Configuration — Set a static IP or configure your domain
  2. System → General → Localization — Set your timezone
  3. 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:

  1. Shares → Windows (SMB) → Add
  2. Path: /mnt/tank/documents
  3. Name: documents
  4. 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:

  1. Click Install on the MinIO app
  2. Accept defaults or set a custom admin password
  3. Storage: Point it to /mnt/tank/media or create a new dataset
  4. 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:

  1. Data Protection → Periodic Snapshot Tasks → Add
  2. Dataset: tank/documents
  3. 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 rclone in a jail/container

Verification

Confirm everything works:

  1. ping 192.168.1.100 — Machine is reachable
  2. Browse to \\192.168.1.100\documents — SMB share mounts
  3. Storage → Snapshots — Periodic snapshots are appearing
  4. 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.

Self-Host PostgreSQL: Production-Grade Database in Your Homelab in 15 Minutes