![](/static/790fef6/assets/icons/icon-96x96.png)
I’m using Ubuntu server for my home lab and it mostly just works. Just make sure you know the difference between setting up docker when it’s been installed through snap or through the package manager (synaptic/apt). If you use 22.04, it’ll want to install docker during the install, which uses snap. I wasn’t sure how permissions work with that setup, so I nuked it, reinstalled through apt, and then added myself to the docker group.
I’m self hosting gitea, Jenkins, registry, and plex atm, but will be adding caddy as well. All of it is containerized and was pretty painless to set up, though I’m still finalizing certain config details (I need a cross-compilation pipeline).
For storage I currently only have the single SSD, and I plan to use an external caddy with four slots (jbod). No RAID, just periodic backups. I have a thinkcentre tiny, so no much room for expansion. If you have the room, I’d suggest using ex-enterprise SAS disks in whatever RAID configuration tickles your fancy, and exposing them as NFS. I only ever use Linux at home, though, so if you have windows machines, others probably have better advice re: making your storage available on the network.
The answer is docker and docker-compose. The problem you’re describing is the reason it exists. Each app is isolated and runs as though it has its own dedicated system, but you can map directories and ports in to make data persistent, and ensure it all just works. This includes mapping in your whole HDD, or even /dev if you so desire (don’t do this). It honestly makes it trivial to get most things up and running.