Installing TrueNAS SCALE on Proxmox for Network Attached Storage
Installing TrueNAS SCALE on Proxmox
This guide shows you how to install TrueNAS SCALE as a virtual machine on Proxmox VE, configure ZFS storage pools, and set up NFS/SMB shares for your homelab. You'll create a centralized network storage solution accessible by all your services.
What You'll Build
A complete NAS solution featuring:
- ZFS storage pool with data integrity checking
- NFS shares for Linux/Unix systems
- SMB shares for Windows compatibility
- Centralized media storage for Jellyfin
- Web-based management interface
System Specifications
Virtual Machine Configuration
- VM ID: 111
- CPU: 4 cores (x86-64-v2-AES)
- RAM: 8192 MB (no ballooning for ZFS)
- OS Disk: 16 GB (local-lvm)
- Data Disk: 884 GB (passed through or virtual disk)
- Network: Bridged (vmbr0)
Software Stack
- Hypervisor: Proxmox VE
- NAS OS: TrueNAS SCALE 25.04.1
- Filesystem: ZFS
- Sharing Protocols: NFS, SMB
Network Configuration
- TrueNAS IP:
${TRUENAS_IP}(example: 192.168.0.111) - Mount Path:
/mnt/vault-111
Prerequisites
Before starting:
- Proxmox VE installed and running
- ISO storage configured in Proxmox
- Storage disk(s) available for TrueNAS
- Network access to Proxmox web interface
Part 1: Download and Prepare ISO
Step 1: Download TrueNAS SCALE
-
Download TrueNAS SCALE 25.04.1
-
Verify SHA256 checksum:
Expected: 0719DFE4B1C7BD36AE1D6084F674CFB1AD87B749B407B4BF4801511CA401ED4A
Step 2: Upload ISO to Proxmox
- In Proxmox web interface, go to your node
- Click local storage → ISO Images
- Click Upload and select TrueNAS ISO
- Wait for upload to complete
Part 2: Create Virtual Machine
Step 3: Create VM in Proxmox
Navigate to your Proxmox node and click Create VM. Use these settings:
General Tab:
- Node:
proxmox - VM ID:
111 - Name:
truenas
OS Tab:
- Storage:
local - ISO Image:
TrueNAS-SCALE-25.04.1.iso - Type:
Linux - Version:
6.x - 2.6 Kernel
System Tab:
- Graphics card:
Default - Machine:
q35 - BIOS:
OVMF (UEFI) - ☑ Add EFI Disk
- EFI Storage:
local-lvm - ☐ Pre-Enroll keys
- SCSI Controller:
VirtIO SCSI single - ☑ Qemu Agent
- ☐ Add TPM
Disk Tab:
- Bus/Device:
VirtIO Block 0 - Storage:
local-lvm - Disk Size:
16GiB - ☑ Discard
- ☑ IO thread
CPU Tab:
- Sockets:
1 - Cores:
4 - Type:
x86-64-v2-AES
Memory Tab:
- Memory (MiB):
8192 - ☐ Ballooning Device (important for ZFS!)
Network Tab:
- Bridge:
vmbr0 - VLAN tag:
none - ☑ Firewall
- Model:
VirtIO (paravirtualized) - MAC address:
auto
Click Finish to create the VM.
Part 3: Add Storage Disk
Step 4: Add Data Disk to VM
- Select VM
111 (truenas)in Proxmox - Go to Hardware tab
- Click Add → Hard Disk
Configure disk:
- Bus/Device:
VirtIO Block 1 - Storage:
vault-111(or your storage) - Disk Size (GiB):
884(or your size) - ☑ Discard
- ☑ IO thread
Click Add.
Part 4: Install TrueNAS
Step 5: Start VM and Install
-
Select the VM and click Start
-
Open Console
-
TrueNAS installer will boot automatically
-
Follow installation wizard:
- Select install disk (16 GB VirtIO disk)
- Set root password
- Choose administrative user
- Confirm installation
-
When complete, remove installation media and reboot
Part 5: Initial Configuration
Step 6: Access TrueNAS Web Interface
After reboot:
- TrueNAS console shows IP address (via DHCP)
- In browser, navigate to:
http://${TRUENAS_IP}:80 - Log in with root credentials from installation
Step 7: Set Static IP (Optional but Recommended)
-
Navigate to Network → Global Configuration
-
Configure:
- IPv4 Default Gateway:
${GATEWAY_IP} - DNS Servers:
${PIHOLE_IP}
- IPv4 Default Gateway:
-
Go to Network → Interfaces
-
Edit interface, set:
- Type:
Static - IP Address:
${TRUENAS_IP}/24
- Type:
-
Test changes, then save permanently
Part 6: Create Storage Pool
Step 8: Create ZFS Pool
-
Go to Storage → Create Pool
-
Configure pool:
- Name:
vault-111 - Layout:
Striped(single disk) orMirror(multiple disks) - Select your 884 GB disk(s)
- ☑ Allow non-unique serial disks (if needed in VM)
- Name:
-
Click Create
Note: For production, use mirrored or RAIDZ layouts for redundancy. Striped is OK for testing.
Part 7: Create Dataset
Step 9: Create Media Dataset
- Go to Datasets
- Click pool name (
vault-111) - Click Add Dataset
Configure:
- Name:
media(or your preferred name) - Share Type:
Generic(for flexibility)
- Click Save
Step 10: Set Dataset Permissions
-
Click the dataset (
vault-111/media) -
Go to Permissions tab
-
Click Edit
-
Set:
- Owner: Your username (create user first if needed)
- Group: Your group
- Permissions:
rwxrwxrwxor adjust as needed
-
Click Save
Part 8: Configure NFS Share
Step 11: Enable NFS Service
- Go to System Settings → Services
- Find NFS service
- Toggle to Running
- Click ⚙ (configure) icon
- Ensure NFSv3 and NFSv4 are enabled
- Click Save
Step 12: Create NFS Share
- Go to Sharing → Unix (NFS) Shares
- Click Add
Configure:
- Path:
/mnt/vault-111/media - Description:
Media Storage - Authorized Networks:
${ALLOWED_NETWORK}/24(e.g., 10.0.0.0/24) - Access: Add network with
Read/Write
- Click Save
Part 9: Configure SMB Share (Optional)
Step 13: Enable SMB Service
- Go to System Settings → Services
- Find SMB service
- Toggle to Running
Step 14: Create SMB Share
- Go to Sharing → Windows (SMB) Shares
- Click Add
Configure:
- Path:
/mnt/vault-111/media - Name:
Media - Purpose:
Default share parameters
- Click Save
Part 10: Mount Shares on Client VMs
Step 15: Mount NFS Share on Linux
On your client VM (e.g., Jellyfin server):
Install NFS client:
sudo apt update
sudo apt install -y nfs-common
Create mount point:
sudo mkdir -p /mnt/vault-111
Mount the share:
sudo mount -t nfs ${TRUENAS_IP}:/mnt/vault-111/media /mnt/vault-111
Verify mount:
df -h | grep vault
Step 16: Make Mount Persistent
Edit fstab:
sudo nano /etc/fstab
Add line:
${TRUENAS_IP}:/mnt/vault-111/media /mnt/vault-111 nfs defaults,_netdev 0 0
The _netdev option ensures mount waits for network.
Test fstab:
sudo umount /mnt/vault-111
sudo mount -a
Troubleshooting
Issue: Can't access TrueNAS web interface
Solutions:
- Check VM is running in Proxmox
- Verify IP address from TrueNAS console
- Ensure firewall allows port 80/443
- Try accessing via direct IP, not hostname
Issue: Can't create ZFS pool
Solutions:
- Verify disk is visible in TrueNAS (Storage → Disks)
- Check disk hasn't been previously used (wipe if needed)
- Ensure disk is not mounted elsewhere
- For VM disks, confirm "Discard" is enabled in Proxmox
Issue: NFS mount fails on client
Solutions:
- Verify NFS service is running on TrueNAS
- Check firewall rules allow NFS (ports 2049, 111)
- Confirm client IP is in authorized networks
- Test mount manually first before adding to fstab
- Check network connectivity:
ping ${TRUENAS_IP}
Issue: Permission denied when accessing share
Solutions:
- Check dataset permissions match client user UID/GID
- Verify NFS export allows read/write
- On client, check mount options:
mount | grep vault - Consider using
maprootormapallin NFS share settings
Performance Tips
For better performance:
- Enable IO thread on all disks in Proxmox
- Use VirtIO drivers for network and disks
- Disable memory ballooning for ZFS (already done in guide)
- Consider PCI passthrough for storage controller if available
- Allocate adequate RAM (ZFS loves RAM for ARC cache)
Maintenance
Check Pool Health
# From TrueNAS shell
zpool status
Scrub Pool (Data Integrity Check)
From web interface:
- Storage → Pools
- Click pool → Scrub Pool
- Schedule regular scrubs (monthly recommended)
Update TrueNAS
- System Settings → Update
- Check for updates
- Download and apply (backup config first!)
Conclusion
You now have a fully functional TrueNAS NAS server running on Proxmox with:
- ✓ ZFS storage pool for data integrity
- ✓ NFS shares for Unix/Linux clients
- ✓ SMB shares for Windows compatibility
- ✓ Centralized storage for your homelab services
- ✓ Web-based management interface
Your Jellyfin server and other VMs can now access centralized, reliable storage for media and data.
Next steps:
- Configure automatic snapshots for backups
- Set up replication to another TrueNAS instance
- Explore TrueNAS apps for additional services
- Implement proper backup strategy (3-2-1 rule)