List of #selfhosted software on my home #kubernetes cluster, with what they do for me
I've split the list into some sections :
Useful for most folks interested in self-hosting
- cryptpad – Collaborative “office type” suite, entirely clientside encrypted drive, docs, spreadsheets etc. very useful when sharing info with my parents that really shouldn't be public
- funkwhale – I make music sometimes, and this is a federated music site akin to soundcloud.
- gotosocial – a lightweight #fediverse #mastodon style server. I currently am having some issues with it, so my main account is on https://masto.host/
- hauk – Remember google latitude? where you could share your location with a friend on google maps and actually walk toward them and have it update? This is a self-hosted implementation of that kind of service.
- logitech media server – a completely offline multiroom audio capable music library. I have devices scattered through the apartment, and I can play music to all of them at once with them all in sync.
- nextcloud – very extensible personal “cloud” storage – I use this for ensuring my password manager is synced (webDAV), and my phone contacts (cardDAV) and calendar (calDAV) are up-to-date.
- ntfy – a UnifiedPush self-hosted notification system. It allows tusky to ask for notifications without google being involved, and also allows me to send push messages from scripts (e.g. attached to flexget) or other systems such as uptime-kuma
- owncast – a single-user twitch or youtube live replacement. Allows me to stream if I'm in the mood for that, without using a third party. NOTE: this is one of the few things I have on a free tier hosting platform as well because it does run better there.
- peertube – #peertube is video hosting, like youtube, only better, decentralised and federated #fediverse
- pihole – access the internet without the trackers and adverts.
- syncthing – an alternative way of syncing data between machines. Great for folders of files such as obsidian or other notetaking apps.
- writefreely – this blog, running WriteFreely
Useful for the more geeky folks (programmers, arduino tinkerers, home automation geeks etc.)
- argocd – a #continuousDelivery platform, defines what is running in kubernetes in git and keeps it in sync with the git repo. Allows me to rebuild the cluster from scratch in theory.
- drupal – I have a very old site that I want to keep online, and ~15 years ago I migrated the content to drupal.
- code-server – vscode, but not built by microsoft, and in the browser. Allows me to access my dev environment anywhere I have a browser.
- (No longer running) domoticz – a home automation system written in c(++?) that used to run my home automation
- (Deprecated) drone – a CI system I no longer use for new projects because they switched to a proprietary license
- echo-server – a useful piece of debugging software that tells me how a request actually looks when it reaches a pod in the cluster
- esphome – a way to expose esp8266/esp32 devices to HomeAssistant for automation purposes without writing code.
- flexget – a download manager that lets me listen to rss feeds and download the files within them. I need this for reasons.
- gitea – Fork of Gogs – a nice little git server that looks and feels a lot like github.
- homeassistant – Home automation, done pretty well, and entirely offline (it can be online but the way I run it isn't).
- hyperion – creates an “ambient light” system from video streams – this is used to make my TV have an “ambilight” style colourwash behind it that changes based on the scene. I use wled, an esp8266 and a string of ws2812 addressable LEDs to achieve the lighting, and https://rootmy.tv to allow my LG tv to capture it's screen and send it to hyperion.
- jellyfin – My media library, completely offline, sat on my drives here, not on some cloud server.
- karaoke-eternal – My karaoke library exposed as a web service so I can plug a web browser into a projector or TV and create a karaoke party.
- minio – S3 compatible storage allowing me to upload files of any kind and link to them.
- mosquitto – I like to string things together using MQTT. Instead of letting homeassistant provide this, I point homeassistant at my own MQTT server.
- nodered – When I don't want to write code to automate my homeassistant stuff, this allows flow-based “programming” of things. e.g. if the smoke alarm above my 3d printer makes a loud noise, the esp8266 next to the fire alarm detects this, sends an MQTT message to mosquitto, and node-red sees this and sends a signal to turn off power to the printer.
- (deprecated) openvpn – a VPN solution that I don't really use any more but is slightly more supported than wireguard, the one I actively use. It's also a lot easier to debug.
- renovate – monitor your repos for outdated dependencies. a lot like dependabot. Works with gitea nicely.
- rhasspy – OFFLINE VOICE ASSISTANT! This is super cool and I haven't done enough with it, fairly new to me, but you can use the ai-thinker esp32 boards as satellites to a server with ESP32-Rhasspy-Satellite.
- uptime kuma – a system that checks if services are up and notifies if they are not, a lot like pingdom or uptime robot. NOTE: this is one of the few things I have on a free tier hosting platform as well because it lets me know if my home network is reachable from the internet then.
- wg-access-server – the first easy reliable wireguard (VPN) setup I've seen. Works well, allows me to enroll devices onto my network super easily.
- woodpecker ci – a fork of the drone CI system which allows me to automatically build code on a git push.
Useful for just me
- ledcontroller – I wrote this to make pretty patterns on an LED wall behind me when I'm streaming. The wall is wled on an esp8266 with strips of ws2812 leds
Part of the setup of my home kubernetes cluster
- cert-manager – Automatically gets me https certificates so everything I expose to the internet gets a nice certificate
- cluster-ingress – NGINX Kubernetes ingress controller that allows me to direct all inbound port 443 + 80 traffic to the appropriate service
- external-dns configures my dns records by what I put in my ingresses so I don't have to manually create dns records.
- grafana – dashboards for my prometheus monitoring.
- longhorn – a system that allows me to use all my disks in all the nodes on the cluster to create PVCs.
- metallb – by defining a kubernetes service of type LoadBalancer, it gets an IP on my home network.
- prometheus – gotta have that observability on the system. Super overkill for home use but hey, I like having it.
- samba – I expose some PVCs to my local network for windows based PCs.
- vault – I'll be honest here, I have never got this working the way I would like, and so my secrets are not as well encrypted.
Oh, and the cluster is running on very minimal debian boxes with k3s as the kubernetes cluster software.