As I wrote in my previous post, I have a new member in the home server environment: The Lenovo ThinkCenter Mini Computer! Right after getting Ubuntu up and running on it, I began the process of easing the workload on my #RaspberryPi. PiHole had been flagging high CPU load a couple of times already, especially when Jellyfin was streaming media and performing its usual tasks.
The target was clear: keep PiHole on the Pi and move the heavier services to the Lenovo. But I also didn’t simply want to migrate the services. I also wanted to improve the setup …
Setup with a plan
Before I just started installing stuff, I made some “design choices”:
- I decided to now set up everything in containers. Jellyfin, for example was installed directly on the PI. It worked very well – but I wanted a more controlled environment for it.
- I wanted to have a hostname for each service instead of port numbers that I forgot a minute after setting up a service.
- Everything should be settled in /opt/ instead some user home or installed directly
- I wanted to have a graphical overview like Docker on the Desktop
It’s always DNS
First problem: how to get Hostnames to work with FritzBox and PiHole!
The FritzBox supports assigning Hostnames to clients, but only one per client and only one level. I wanted to have http://.
In the end the solution was to
- add the hostnames in piHole under “Settings > Local DNS Settings” AND
- set the DNS server in the fritzbox for both IPv4 AND IPv6 (before I had only set IPv4)
Honestly, ChatGPT was quite some help in debugging what was going wrong.
Containers everywhere & Use AI wisely
Once I had figured that out, I began setting up the server. Once again, I used ChatGPT and Mistral to create the initial versions of the docker compose files. I really enjoyed receiving suggestions and learnt a lot from them. — And this time, I added all the configs to git versioning, so that I was save to play around with configs!
Then the following services were configured:
- #traefik for routing all requests on port 80 to the according containers. I was concerned about setting it up. But with ChatGPT & Mistral, it was amazingly fast.
- Started #portainer. I knew that I was about to start quite some containers and I wanted some more overview than I had before.
- Transferred #navidrome to the new host.
- Moved #jellyfin from installation to docker setup. This was a bit of a hazzle until I had figured out where to copy which directory. “Thanks” ChatGPT to false guide me here!
- Made #peertube remote runner a permanent resident on the server – finally. Before this, I had always started the runner directly on my PC as it was too heavy for the Pi.
- Finally also made a static index page served via #nginx so that I don’t have to remember what’s running under which hostname. Here, ChatGPT guided me into the right (simple) direction because I would have overcomplicated things
That’s it for now! Next to come might be wanderer.to and netdata.