Field note
Why I Moved Plex and Jellyfin from TrueNAS to Debian
Why moving storage and media services to one Debian VM made my homelab simpler to operate.
For a long time, my media stack depended on a TrueNAS virtual machine. It handled the ZFS storage, SMB shares, and the Plex workload around it. That arrangement worked, but it also meant the application and the storage it depended on were separated by a virtualised network layer.
The old arrangement
TrueNAS was responsible for the pools and shares, while Plex lived on top of that storage. The setup gave me a familiar NAS interface, but Plex configuration and cache data were being written across NFS. Permissions and ACL behaviour became part of the application problem, and every change had to cross another boundary before it reached the media.
That separation was also more operational complexity than I needed. I was maintaining a storage appliance, a media application, and the connections between them, even though this is a personal homelab with one main Proxmox host.
Why I moved to Debian
I created a Debian VM as the new home for Plex and the media services, then moved ownership of the ZFS pools to it. The important distinction was that the storage migration and the application migration were deliberate, staged changes—not a rebuild from scratch.
I preserved the existing Plex database and metadata, kept the old TrueNAS VM powered off as a rollback option, and verified both pools before changing the application paths. That meant Plex could keep its users, watch history, libraries, and metadata instead of starting over.
What is better for me now?
- Fewer layers: Plex reads the ZFS datasets locally instead of reaching them through NFS.
- Simpler troubleshooting: storage permissions, application access, and container paths are visible on one Debian VM.
- More predictable writes: Plex configuration and cache live on local Debian storage, avoiding the NFS ACL problems I hit during the move.
- One place for media services: Plex and Jellyfin can run alongside each other while sharing read-only media mounts.
- Better rollback: the original TrueNAS VM remains intact and powered off while I validate the new arrangement.
Adding Jellyfin without risking Plex
Once Debian owned the storage, I could add Jellyfin as a separate Docker service without touching the Plex database. Jellyfin has its own configuration and cache, and its media mounts are read-only. That gives me a realistic free alternative to test while Plex continues working for existing users.
External Jellyfin access goes through the existing Cloudflare Tunnel rather than a new router port. The public hostname reaches a login page, while Jellyfin accounts still control access to the libraries.
Internet
↓
Cloudflare Tunnel
↓
Debian
├── Plex
├── Jellyfin
└── Local ZFS media storage
The trade-off
TrueNAS was a useful part of the earlier design, and I am not pretending that a dedicated NAS is always the wrong answer. For me, the extra appliance boundary no longer earned its complexity. Debian gives me direct control of the storage and the services that use it, while Proxmox still provides the isolation and rollback points I want.
The result is not just fewer machines in a diagram. It is a system I understand better, can troubleshoot faster, and can change in smaller, reversible steps.