Table of Contents
After some careful consideration, I decided to completely redesign my home lab.
While the Kubernetes-based approach worked well for most of the things, I did not like:
- the administration overhead of managing those separate servers
- did not really need enterprise-level redundancy and uptime, as I mostly ran only media server applications – could tolerate some downtime
- most importantly – and if anyone knows better, feel free to let me know what did I miss – I had serious performance issues with Plex (maybe it was due to the fact I had no intel GPU? as unlikely as it sounds, since – see later down the line – I do not experience this)
I also acquired some (datacentre-grade) server…I know, I know… but still…
I initially virtualised my k8s nodes, and that was a moderate success. There were still some issues, so now I have returned to an older concept.
Enter Docker #
Yep. I returned to the roots. There are some key differences though:
- in the older version, I used Docker Compose.
- in this later iteration I decided to build on this great project, and do almost all the server configuration using Ansible; as this saves me most of the effort of configuring shares, setting up user rights, and alike; admittedly there are some manual tasks during the setup, but they are quite minimal
Since all is running on a VM, the setup is quite secure.
- the codebase for the config is sitting in my Github repo
- the file with the secrets is a bit of a risk for now – since it is sitting on the VM – but that is something I plan to mitigate, by syncing it off to a local NAS
- said local nas is the storage for the media files anyway – via an NFS share
- and the Proxmox VM is backed up – for the time being manually, but I will explore other options in the future
Most of this concept was coming from my brief encounter with CasaOS, which is a very cool project – just I preferred something where there are more possible configuration options and less clicky-clicky. Nevertheless, I liked the look of Casa, and I looked for something similar, so I came across this gem.
Putting these two projects together resulted in a pretty neat-looking stack.
Now I have an (almost) turn-key setup, where most of these services (and the code contains many more, but in the past few days I only had time to set up these) are easily configured, coming up as Docker containers. Some of these – the ones that either support it natively or can be put behind an oauth2 – are web-facing, others I plan to keep local only (I also moved my home network to a 10.x.x.x/16 range), although I might use Tailscale to make them securely available.