diff options
| author | Patrick Spek <p.spek@tyil.nl> | 2025-12-17 14:54:18 +0100 |
|---|---|---|
| committer | Patrick Spek <p.spek@tyil.nl> | 2025-12-17 14:54:18 +0100 |
| commit | 517d566b9a9184834b617a786998f49355874474 (patch) | |
| tree | 3172269d3e045edc0ab0d00cf696dd3a7ae03ba6 | |
| parent | bc9ddbeece68b3ee371ee4e945f9bdc017fd14d6 (diff) | |
| download | blog-517d566b9a9184834b617a786998f49355874474.tar.gz blog-517d566b9a9184834b617a786998f49355874474.tar.bz2 | |
Add A Dashboard for my Homelab
| -rw-r--r-- | content/posts/2025/2025-12-17-a-dashboard-for-my-homelab.md | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/content/posts/2025/2025-12-17-a-dashboard-for-my-homelab.md b/content/posts/2025/2025-12-17-a-dashboard-for-my-homelab.md new file mode 100644 index 0000000..2c7d6d4 --- /dev/null +++ b/content/posts/2025/2025-12-17-a-dashboard-for-my-homelab.md @@ -0,0 +1,69 @@ +--- +date: 2025-12-17 +title: A Dashboard for my Homelab +tags: +- Go +- Homelab +- Programming +--- + +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](https://awesome-selfhosted.net/tags/personal-dashboards.html) for this +purpose. If only I liked what was available already. + +After trying a few, I found [mafl](https://mafl.hywax.space/) 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](https://grocy.info/), 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 or me. I experimented a little with storing +the information in a database with [GORM](https://gorm.io/), 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](https://dist.tyil.nl/dashlab/dashlab-1.0.0/), and include it as a +[project](/projects/dashlab/releases/) 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! |
