The homelab is always a moving target. Just when I think I have something down, I either break it, or I am let in on a product that makes me completely rethink. So, I’ve done some rethinking; and now I think I have the bones of a good project.
At the architecture level, not much has changed. 4 pancake Dells with some ram and an SSD, all running Docker. Rather than go with Nomad, or Kubernetes, I’m sticking with Swarm-mode. I couldn’t fully wrap my head around storage interfaces in the bigger orchestrators so rolling back to my roots. This time I am adding in a few Raspberry-Pi 4B+s in the mix. Also running docker, and Keepalive.d for virtual IP. The tiny boards are running docker as well, configured as manager nodes, with the Dells configured as worker nodes. Some changes to the Jellyfin software dictated that I had to update out of my old AF gaming rig that’s easily 15+ years old by now. It served me well, but I think I’ve fully outgrown it. In its stead I took a gamble on one of those tiny PCs from Amazon, more on this later.
So, I have Swarm up and running. Dropped in Portainer for management, cause GUIs work. Now I’ve got the same problems I ran in to before. This time I brought reinforcements.
For storage, I’ve had a Synology NAS running and it’s great for large slow media files. but I really don’t want any of my container configurations sitting on spinning disks. Earlier in the year I spent some money on a FlashStor from ASUS, it’s sharing up 6 NVMe drives and has the ability to run TrueNAS scale. This took a little learning but I bonded the NICs and got it configured with an available share that all my hosts can talk to.
Rather than use the Synology’s application portal. I instead took another jump at Traefik, hopefully this time I could figure out how to make it work. It turns out that when I was initally trying to make it happen, I was putting the labels in the wrong place, so that it was deploying to the container, rather than deploying to the service. With that out of the way, I was prepped and ready to get stuff deployed.
I initially began with some of the Dumbware.io stuff, little single container things with a single JSON file in the back end. From there it was like falling off a bike, Commafeed, Mealie, and Dashy, n8n, then on to bigger things: Immich, and the *arr stack. Immich is going to be more involved as I want to bring all my data out of google photos, which is going to take a while. As far as the *arr stack, I was able to re-use a lot of my original compose file.
With the Docker stuff up and functional, I needed to address the media streamer, Jellyfin. The tiny pc I got, a Beelink SEI with an AMD Ryzen 5 CPU, 16GB of RAM, and a 500GB SSD, was far and away faster than I expected it to be, especially with the sub $300 pricetag. About the only problem is, my instance can’t transcode the AV1 codec on the fly. Everything else, works swimmingly.
Next on my list is to fully build out Immich to replace google photos. Play a little bit more with Affine (my replacement for Obsidian) and work on putting together some more AI things to learn the technologies in use.