The Great Homelab Migration (Or, How I Learned to Stop Worrying and Love Proxmox)
Table of contents
Alright, gather ‘round, folks. Let’s talk about my homelab.
Specifically, let’s talk about how I, Chris, amateur server whisperer, decided it was time for a bit of a shake-up. What prompted this voyage of discovery, you ask? A subtle, insidious creeping feeling that my current setup, while charming in its simplicity, was starting to hold me back.
The Good Ol’ Days with unRAID
For years, unRAID was my dependable workhorse. It was where I cut my teeth, where I first dipped my toe into the wondrous world of self-hosting. It handled my media server (Jellyfin, naturally, after a long time with Plex), the whole Sonarr/Radarr/Bazarr media stack, and a few other bits and bobs. Its simple UI, the ease of adding disks to the array, and the “Docker Apps” section were a godsend for someone just starting out. It’s a fantastic stepping stone, truly it is. If you’re just looking to run a media server and dabble with a few Docker containers, unRAID is pretty much plug-and-play.
But, as any good tech enthusiast knows, “just starting out” is a temporary state. I started wanting more. More control. More flexibility. More… power.
The Cracks Begin to Show
My ambitions started outgrowing unRAID’s comfortable confines. I was getting into more advanced workloads: local LLMs with Ollama and Open WebUI, GPU-enabled transcoding with Tdarr, and generally trying to push the boundaries of what a single machine could do. This is where unRAID, bless its heart, started to show its limitations as a hypervisor and Docker manager.
While unRAID does have VM support and its own Docker implementation, it always felt a bit… constrained, especially compared to the sheer power and configurability of something like Proxmox. Managing a fleet of containers and VMs, configuring finely-tuned network settings, and ensuring optimal resource allocation became a bit of a faff. I yearned for the granular control Proxmox offers with its LXC containers and full-blown virtual machines.
Plus, the inherent elegance of LXC containers for lightweight services truly shines in Proxmox. Running Jellyfin in an LXC, for example, is far more efficient and isolated than running it in a Docker container alongside everything else on unRAID. You can bind mount storage directly into an LXC, which is mighty convenient, and not have to mess about with loopback SMB/NFS.
And speaking of storage, there was a particularly vexing issue that became a recurring nightmare: the unRAID Mover. This little helper, designed to shift files between the cache drive and the array, occasionally had a nasty habit of breaking inodes in the filesystem. The result? Stale file handles on my beloved NFS shares. Nothing quite like trying to access a file and being met with that particularly infuriating error. It’s like trying to shake hands with a ghost in that you know it should be there, but it just isn’t. This kind of filesystem corruption is the sort of thing that makes a chap consider rather drastic measures, like, say, migrating everything to TrueNAS sometime in the future. But that’s a story for another blog post.
The Proxmox Pivot: A Revelation
The solution? Virtualizing unRAID under Proxmox. “Wait, what?” I hear you cry. “You’re running a hypervisor within a hypervisor?” Yes, dear reader, yes I am. And it’s glorious.
The core of this elegant solution involved a healthy dose of PCI-passthrough. I passed through my LSI HBA directly to the unRAID VM. This essentially gives the unRAID VM direct control over the physical drives, allowing it to manage the array exactly as if it were running bare-metal.
The rest of the homelab, the good stuff, runs directly on Proxmox. This meant I could leverage Proxmox’s superior virtualization capabilities. Want a full VM for a specific project? Done. Need a lightweight, high-performance LXC container for a service? Easy peasy. And for my Docker needs, while Proxmox with LXC isn’t quite unRAID’s “Docker Apps” equivalent, there are readily available scripts that set up Docker within an LXC, which is a bit meta but works perfectly fine.
My media stack (Sonarr, Radarr, Bazarr, qBittorrent) now happily hums along in LXCs. Jellyfin, which previously resided in a Docker container on unRAID, has also been migrated to a dedicated LXC, enjoying the improved isolation and performance. Transcoding with Tdarr is now a breeze, leveraging my Intel Quick Sync, which can be passed through to a VM or LXC for hardware acceleration. The only real sacrifice there is the local Proxmox TTY, but honestly, who spends much time staring at that these days?
For storage, the unRAID VM exports NFS and SMB shares, which Proxmox then uses. I also experimented with MinIO for S3-compatible storage and rclone for backups and even serving WebDAV. Autofs handles the automounting of NFS and SMB shares, keeping things tidy. And for those times when I just need a quick file browse, Filebrowser offers a lightweight, iOS-friendly UI.
Crucially, this setup gives me the best of both worlds: unRAID for its excellent array management and data protection, and Proxmox for its unparalleled flexibility as a hypervisor and container orchestrator. It’s like having your cake and eating it too, but with more blinky lights.
The Unexpected Twist (and a Moment of Panic)
Of course, no homelab adventure is complete without a minor catastrophe. During one of my initial migrations, I managed to completely bork my network configuration, rendering the server inaccessible. Cue frantic late-night troubleshooting, staring at a blank screen wondering if I’d bricked the whole damn thing. It turned out to be a misplaced subnet mask, a classic “oops” moment. But it forced me to delve deeper into Proxmox’s networking configurables, which, in hindsight, was a valuable learning experience. Now, at least, my fridge can ping my router. God help us all.
Lessons Learned and What’s Next
So, what have I gleaned from this escapade?
- Know when to pivot: While unRAID was excellent for my initial foray, recognising its limits and moving to a more capable platform like Proxmox was crucial for scaling my homelab ambitions.
- PCI-passthrough is your friend: It opens up a world of possibilities for virtualizing hardware-dependent services.
- LXC containers are brilliant: For lightweight, isolated services, they are incredibly efficient.
- Network configuration is critical: And often the source of the most frustrating problems. Double-check your subnet masks, kids.
- Always have a backup (and a backup for your backup): This goes without saying, but when you’re messing with live systems, peace of mind is priceless. Git for managing configs is essential here. PBS (Proxmox Backup Server) is a godsend.
What’s next? Well, the NFS stale file handle issue with unRAID’s Mover still irks me. While the current setup is stable, the persistent threat of inode corruption does make me eye up TrueNAS Scale as a potential replacement for the virtualized unRAID in the future. The ZFS filesystem and its renowned data integrity features are certainly tempting, especially as I delve deeper into data-intensive AI workloads.
But for now, I’m quite content. My homelab is more robust, flexible, and powerful than ever. And, more importantly, I’ve had a jolly good time messing about with it. After all, isn’t that what homelabbing is all about?
Related Posts
- Why I Regret Not Using Tailscale from the Start ("Click here, get started in 5 minutes!" Isn't necessarily BS.)
- The Issue of Pay for Play Identity- SSO, the Paywall, Security, and You (or Your Business)
- The Curious Case of the Unpaid Labour and the Unwilling Payer (or "Yes, Your Car Might Need a Subscription Model")