2025 Homelab in Review
Another year with my homelab, and it’s been pretty stable. I didn’t have a lot of time to change or experiment with things but I’m pretty happy with my setup.
I wanted to start a yearly review to document the things I want to improve, the things that have gone well, and the things that I want to get rid of.
The Setup
My setup is simple: Proxmox running a Debian VM with Docker installed. Apps are deployed using docker-compose files. I manage everything through Ansible.
This approach has served me well. Updates are straightforward, backups are simple, and when something breaks, there’s only one place to look. The cognitive overhead is minimal, which matters when you’re maintaining it in your spare time.
The OSS Projects I Host
Apprise: B
I only had this setup for docker autoheal. I found the interface pretty confusing. I ended up removing it and autoheal while writing this post.
Authelia: A
This has been painless to keep up to date. I like that it supports _FILE env vars for docker secrets. It was also easy to integrate into traefik. I don’t really use it since most of my services are not exposed to the internet. The only point I would ding is that releases can sometimes be spread apart, but for costing $FREE.99, I can’t complain.
Authentik: B
I’ve found the interface and documentation pretty hard to follow. I initially wanted to have a central place to manage users but gave up on this dream since a lot of OSS projects gatekeep LDAP/SAML as an enterprise feature. Giving it a B since the documentation and interface could be better.
Bitwarden / Vaultwarden: A
I haven’t migrated from 1Password yet. I recently started using 1Password CLI so I’m even more locked in now! I also added my parents to 1Password so I might stick with them until they do something questionable.
Browserless: A-
I set this up because I wanted to run headless browser stuff in n8n, but I never got around to it. Maybe next year!
ChangeDetection: A
This has been great! In the past I used it to keep track of releases but GitHub added a way to watch only the releases for a project. Seems like some open source projects are moving away from GitHub though so this use case might come in handy again.
It has also been great for monitoring my own and Uplift/client websites for changes.
Crawl4AI: B
I only set this up recently but I’m excited to try it out. Being able to turn websites into markdown that can then be fed to AI workflows seems useful. Docking a point because the documentation has a weird scrolling behavior and is buggy sometimes. I’m wary of scraping things from my home IP since I don’t want to get blocked, might run this in the cloud instead.
Filestash: D
Gave this another try and remembered why I didn’t use it. I wanted an easy way to upload files from other devices but this wasn’t the right use case for it. I find the admin/configuration pretty confusing and the documentation is not very comprehensive and flat out wrong sometimes.
I thought I could use it as an S3 API gateway using plg_gateway_s3 plugin that the doucmentation references, however I can’t find that plugin anywhere, I even checked the repository history.
Garage: B
I set this up to replace MinIO since they stopped maintaining the open source version. So far it seems ok, however I wish it supported postgres as a database and that it had a UI for the admin.
Grafana Stack: C
This includes grafana, prometheus, loki, cadvisor, etc. Keeping up with updates has been a chore and I’m debating switching to something else (any recommendations?). This post goes into much more detail and I can relate to it.
Healthchecks: A+
This has been great, no notes.
Homepage: B
It works ok but the slow start is frustrating, also the weather shows as 271.69°F. It’s been like that since I first set it up and I never figured out why.
Home Assistant: B
I don’t use home assistant that much, and I’ve found the interface kind of confusing. It seems very powerful I just don’t have the time to learn it. I also have soured on smart home stuff in general.
Immich: A
I use Photoprism to share photos with family/friends and have been running Immich in parallel. Immich seems more stable and has a better user interface. I might switch to it fully next year.
I wish the API supported searching for multiple values, for example multiple filenames. I run a script to sync favorites from Apple Photos to Immich and Photoprism and this would be handy for that.
Jellyfin: C
It’s… fine, I guess. I end up just using Infuse app on my Apple TV instead
Kutt: B
They recently refactored it and addressed some of my concerns, however I wish they had a way to easily identify internal routes vs short urls so I could expose only the short urls to the internet.
I might just remove this and use cloudflare redirects, although having the stats is nice.
Mealie: C
Some cool ideas but I end up just looking things up in Bear (my markdown editor of choice on iPhone).
Metabase: B
We use this for Uplift and it’s pretty handy. I don’t really have enough data at home to analyze things. Giving a B because it could use AI to help create dashboards, although I’m sure this is coming soon if it isn’t there already.
n8n: A
This has been pretty easy to keep up to date, including the latest 2.0 migration. They had a nice guide for upgrading including all the breaking changes. I do wish they had better support for multiple users on the free version. I also wish they had an affordable self-hosted plan that unlocked some of the features like shared projects and global variables. I want to give them money for self-hosting but the cheapest plan is insanely expensive.
NocoDB: C
It’s ok, but entering data is not as fast as I would like. I wanted to keep track of some stuff and then analyze it in metabase or within NocoDB but I ended up just not tracking as often as I’d like because it felt cumbersome. I might remove this and just use spreadsheets.
Open WebUI: B
For the longest time there was a bug where if it couldn’t reach the ollama API it would just not load, but they finally fixed that!
Giving a B mostly because open models are not that great compared to SOTA models and I don’t end up using Open WebUI much.
Photoprism: B
It has served me pretty well over time. I like that it shows the camera and lens information front and center. However, it doesn’t seem as stable as Immich. I have random issues like it not indexing all the new images overnight, although it seems to correct itself the following night. I also had an issue where the count of images didn’t match what was on disk, an issue that I never ran into with Immich. I will probably retire Photoprism in 2026 and give it another try later when it matures some more. Running both Photoprism and Immich is consuming a lot of disk space for their thumbnail caches.
Teamspeak: B
I set this up back when my wife and I played TF2 together and the latency on discord was way higher than a local TeamSpeak server. Haven’t used this in a long time, ended up removing it as part of writing this post.
Traefik: A
It has served me well over the years, however I heard that Caddy has an autodiscovery feature now so I might try that.
Umami: A
We use this for Uplift and I recently set it up for my own website. I only expose the script url and event send api endpoint. The UI is really nice.
Uptime Kuma: B-
I like that it’s pretty stable however the UI could use some improvements. Adding tags is cumbersone and in general there’s no great way to organize things once you have a lot of websites.
I also wish it supported Postgres. It’s pretty slow to load with many websites and a long history. At some point I tried running docker volumes over nfs and sqlite didn’t work well with that.
Watchtower: A
Gets the job done. I wish there was a way to update only for security updates but that’s more a limitation of docker registry than Watchtower. I did change from daily updates to weekly to reduce risk of supply chain attacks. I might make it even less frequent since most things are not exposed to the internet.
Goals for Next Year
- Set up healthchecks for all the containers.
- Switch from Photoprism to Immich
- Replace Kutt with Cloudflare redirects
- Remove apps I don’t use much (Jellyfin, Mealie, NocoDB, Metabase, etc.)
Looking Ahead to 2026
I don’t expect any hardware changes for 2026 given the insane prices of RAM affecting everything. I’ll probably keep running Docker Compose.
Either way, my homelab will keep running, quietly hosting the services I use. And honestly, that’s exactly what I want from it.