A Dashboard for my Homelab
Go Homelab Programming — Published on .
I was hoping to make a final blog post this year detailing the latest changes I made to my homelab. However, while trying to finish up, I was looking for a small dashboard to list all the services I’m hosting so friends and family can get a nice overview. As such, you’re getting a blog post about my homelab’s dashboard instead!
I’ve looked around for some pre-existing free software I could just deploy and be done with it. If it were that easy, I wouldn’t be having a whole blog post to write! Well, it could’ve been that easy, there’s plenty of existing projects for this purpose. If only I liked what was available already.
After trying a few, I found mafl to be the cleanest. But while setting it up, I realized a number of applications that I want to have easy access to, might not be very useful to other people. Furthermore, some of the applications I host, such as Grocy, are useful for me and my fiancee, but not so much for friends living abroad. I wanted to be able to filter out entries.
So I looked around some more, and found absolutely nothing offering this functionality. Its just a page with some links, how hard can it be to make myself? Lately I’ve been enjoying some Go programming, so perhaps this would make a nice project to get a bit more in to it.
After spending some time looking up how to do basic things, I found
http.ServeMux to do the routing for me. I experimented a little with storing
the information in a database with GORM, but realized after
2 days its not worth the effort. Besides, I’d have to create and secure an
administration area, which is more work than I wanted this to be.
Thinking back about mafl, I thought I’d just set it all up with a simple YAML file. Its simple to configure for the end-user (me), while also being simple to implement for the developer (also me). As a small bonus, this means I can template the YAML file from Terraform code, which would automatically update the URLs to services if I ever change them, or complain if it’s trying to list a service which I’ve removed.
After a day or two of hacking around, I got something I was satisfied with, and seemed to work as desired. I built a container out of it, and deployed it. Asked a few friends to verify, and it worked in a single test round.
I found some free (as in freedom) icon sets to include, so its easier to find the link you’re looking for (again, inspired from mafl). I do think I’d want to add some generic icon set in the future, but for now its not a very high priority. I’m also not entirely sure I want to include the icons in my git repository, but they are SVGs, and thus technically just text files, so its not a sin in my book.
Lastly, I added a Makefile to make building just a little easier, with a
dist target to build for a plethora of free software targets. This is mostly
for my own convenience, so I can just copy over the dist directory from the
project to dist.tyil.nl and call it a release.
With all this done, I felt ready to release a proper v1.0.0, and include it as a project on my blog. Now I can finally focus finishing up the complete rework of my homelab. With some luck I could finish up before the end of the year and write another blog post about it. Realistically speaking, however, I wouldn’t count on myself to write another blog post so soon. So if luck is not on our side, a pre-emptive warm wishes for 2026!