I migrated most of my self-hosted services to a supercharged Proxmox server a few months ago, retiring the mini PC that most ran off of. In the new machine is a 4 TB NVMe SSD, alongside two older HDDs taken from the TrueNAS machine that it replaced. However, I also have another NAS on the same network that runs alongside OPNsense, packing 12 TB of storage. Thanks to the power of Proxmox and NFS, I now have quite a few of my self-hosted services running on my server, while the data lives on my NAS.
There are two ways to go about what I did here, and neither method is inherently better or worse than the other, so long as the read and write speeds are fast enough and your data is backed u…
I migrated most of my self-hosted services to a supercharged Proxmox server a few months ago, retiring the mini PC that most ran off of. In the new machine is a 4 TB NVMe SSD, alongside two older HDDs taken from the TrueNAS machine that it replaced. However, I also have another NAS on the same network that runs alongside OPNsense, packing 12 TB of storage. Thanks to the power of Proxmox and NFS, I now have quite a few of my self-hosted services running on my server, while the data lives on my NAS.
There are two ways to go about what I did here, and neither method is inherently better or worse than the other, so long as the read and write speeds are fast enough and your data is backed up safely. The first method, and what I’d wager most do, is to simply back up the virtualized storage drives from the server to NAS using a tool like Proxmox Backup Server. That’s more than good enough for most people, but I prefer my method, where the data lives off-site entirely.
It’s surprisingly easy
Proxmox allows you to mount all kinds of storage mediums to the host, including NFS and SMB shares. On TrueNAS, I host NFS and SMB shares, so I can create datasets for storage based on my needs, then mount those to an LXC. Let’s take the DXP4800 Plus from Ugreen as an example. I do the following:
- I create a dataset shared over SMB from TrueNAS
- I mount that dataset over the network on my Proxmox server, naming it “dxp”
- The mountpoint goes to /mnt/pve/dxp
Now, if we use the Proxmox host shell, we can cd to that folder and navigate it as if it were part of the system. The system knows that it’s a network-mounted drive, but an LXC doesn’t have to. Let’s say we want to give an LXC access to that network share, but without making it a privileged container, and let’s say that the container is Paperless-ngx managing our documents with an ID of 101.
In the Proxmox shell, type “cd /etc/pve/lxc” and type “ls”. You should see a file called “101.conf”. If you type “nano 101.conf”, you can now edit the configuration file for our hypothethical Paperless-ngx LXC. If we want to give the LXC access to the mountpoint, we just add the following line:
mp0: /mnt/pve/dxp,mp=/mnt/documents
If you wanted to add an NFS share instead of an SMB share, there are additional steps if you’re using an unprivileged container. It is doable, though, and you can find this post on the Proxmox community forums that outlines the process.
Booting back up the LXC, you’ll see that a new folder called “documents” is in the /mnt folder, and from the perspective of the LXC, it’s just like any old folder in storage. This way, the data never touches the SSD in the server. I use this method to access all kinds of files, and it even works for streaming movies and TV shows using my Jellyfin LXC. The data lives on my NAS, Jellyfin mounts it as if it were a local folder, and I can stream without any issues.
Why not just use the SSD?
TrueNAS is built for storage
I have a couple of reasons for doing this, rather than just using the SSD. For starters, I have the storage in my NAS, so why not use it? As well, SSDs have a limited shelf life, and while you can decrease their wearout on Proxmox by disabling features like High Availability (if you don’t use them), it just makes sense that for some of the data, it should live on my NAS, which ultimately results in my SSD living for longer, too.
Finally, I already use Backblaze on TrueNAS, and if you think about deploying apps on TrueNAS, each with their own dataset, it’s fundamentally the same thing. I can create a dataset, mount it over the network to my Proxmox host, and then store all of the files pertaining to an LXC inside of it. I typically group services by datasets, so “media” belongs to my TV shows, movies, and Jellyfin, whereas personal files such as Nextcloud and my documents go to my “personal” dataset.
As for how it all links in with Backblaze, I can automate my backups to Backblaze from TrueNAS, with a nice UI that joins it all together. I get the best of both worlds this way: the fantastic way Proxmox handles running services, snapshots, backups, and more, and using my NAS as a NAS for my self-hosted services. Everything is stored off of my server, and then backed up to an encrypted Backblaze bucket, so it’s kept completely safe.