Deployments

My own awesome self hosted list (https://github.com/awesome-selfhosted/awesome-selfhosted) of things currently deployed.

AI and Machine Learning

LocalAI

  • GitHub: https://github.com/mudler/LocalAI
  • Purpose: Host and run various local LLMs with API compatibility
  • Notes: Allows testing multiple models with OpenAI-compatible API. Models in the library are uncensored but llama3 based ones were buggy, had better results with mistral / qwen based ones. Also can run any model from huggingface so long as VRAM allows. Can do code completion with https://www.continue.dev/ VSCode extension.

Nvidia Container Runtime / Device plugin

  • GitHub: https://github.com/NVIDIA/k8s-device-plugin
  • Purpose: Plugin to expose NVIDIA GPUs to kubernetes pods
  • Notes: Gives access to a new resource nvidia.com/gpu.shared that can be used in pods to allocate shared and controlled usage of a GPU resource. Works with a regular RTX card.

Tabby

  • GitHub: https://github.com/TabbyML/tabby
  • Purpose: IDE code auto completion
  • Notes: Not personally fond of copilot like products so not using it so much. It can connect to an external ollama server for the model. It has its own VSCode extension. It takes quite a while to start (~10min).

Whisper ASR

Rhasspy Wyoming

Development Tools

ArgoCD

  • Website: https://argo-cd.readthedocs.io/en/stable/
  • Purpose: GitOps continuous delivery tool
  • Notes: I have not tested alternative tools because it just works. Initial setup requires allowing the project, namespace, github, etc. But afterwards it's just about managing the applications. It's great to sync from a webui, to inspect or edit resources when cannot directly connect to the cluster, to rollback versions, etc.

Gitea / Forgejo

Glitchtip

  • GitHub: https://github.com/GlitchTip/
  • Purpose: Error tracking platform
  • Notes: Self-hosted alternative to Sentry. It also has an uptime feature for websites but it is not very performant for that purpose. I use it for my own application as well as for Nextcloud which makes it possible to override the sentry DSN.

Harbor

  • GitHub: https://github.com/goharbor/harbor
  • Purpose: Container registry with security scanning
  • Notes: Used for storing private container images and also to cache docker.io pulls since they implemented rate limit. Alternative to the simpler registry V2 (https://hub.docker.com/_/registry). Was a headache to deploy just because of how the helm chart is made, I ended up rewriting my own kustomize files.

OpenGist

PyPI

Verdaccio

Lifestyle

Tandoor

  • GitHub: https://github.com/TandoorRecipes/recipes
  • Purpose: Recipe management system
  • Notes: Django based. Parses websites from a simple link extracting the recipe as well as photos. Then recipes can be scaled per person, etc. which is cool.

Media Management

Bazarr

  • GitHub: https://github.com/morpheus65535/bazarr
  • Purpose: Subtitle management for Sonarr/Radarr
  • Notes: In an ideal world it would automatically download missing subtitles in the languages I have set up. In reality it fails and crashes most of the time. I like the concept but it has never worked reliably for me.

Calibre

Invidious

Jellyfin

  • GitHub: https://github.com/jellyfin/jellyfin
  • Purpose: Media streaming server
  • Notes: Fork of Emby, open source alternative to Plex, etc. It had issues in the past with some memory leaks or cpu going crazy, etc. but it works pretty stable most of the time. Sometimes requires fiddling with metadata to get it to recognize properly some shows. The webui works better than the apps on Android at least. I use https://github.com/jarnedemeulemeester/findroid to download episodes offline when I commute. Also has a feature to sync watch content with people that are distant.

Kavita

Lidarr

Lunasea

Owncast

  • GitHub: https://github.com/owncast/owncast
  • Purpose: Self-hosted live streaming
  • Notes: Alternative to Twitch. Slightly buggy but I could get it to work which is quite good for a project still in v0.2.1 when tested.

Prowlarr

  • GitHub: https://github.com/Prowlarr/Prowlarr
  • Purpose: Indexer management
  • Notes: Central management for all *arr apps. Basically define torrent and usenet index sources here and radarr, sonarr, lidarr, readarr, etc. all get them synchronized.

Qbittorrent

  • GitHub: https://github.com/qbittorrent/qBittorrent/
  • Purpose: Torrent client
  • Notes: Used for automated downloads with *arr apps using category tags. The retro web UI still works to add magnetic links manually. I tested transmission too. Both work fine I just ended up using this one more.

Radarr

Readarr

Sabnzbd

Sonarr

Tidalidarr

  • GitHub: https://github.com/DorskFR/tidalidarr
  • Purpose: Tidal integration for Lidarr
  • Notes: Reads the missing albums from Lidarr and search / download from Tidal then trigger an import in Lidarr. It does not rely on external projects for the Lidarr / Tidal API integration.

Monitoring

Botkube

  • GitHub: https://github.com/kubeshop/botkube
  • Purpose: Kubernetes monitoring chatbot
  • Notes: Sends alerts and cluster info to chat platforms. I use it with mattermost. I don't really rely on it but it's just there if I need to.

Dashy

  • GitHub: https://github.com/Lissy93/dashy
  • Purpose: Dashboard for homelab services
  • Notes: I tried many dashboards: heimdall, homepage, organizrr, etc. I end up using none. This is just the latest I will sooner or later give up on using.

Diun

  • GitHub: https://github.com/crazy-max/diun
  • Purpose: Docker image update notifier
  • Notes: I don't think I really understand if it alerts me of available tags so that I update my deployments or if it alerts me of deployments which have been updated. I don't pay much attention since I use renovabot.

Grafana

  • GitHub: https://github.com/grafana/grafana
  • Purpose: Metrics visualization and dashboards. Also logs.
  • Notes: Usefulness depends on the quality of the dashboards. Tried different tools to collect metrics. Technically also have logs integrated but I do not like the UI. I don't look at it as much as I thought I would.

Grafana-alloy

  • GitHub: https://github.com/grafana/alloy
  • Purpose: Collects metrics
  • Notes: Successor to grafana agent which allowed for cool rewriting of the metrics collection configuration file from prometheus to River to Alloy format. It uses more resources than it should with 1.3G per node which is 13 times more than vector or fluent-bit...

Grafana-loki

  • GitHub: https://github.com/grafana/loki
  • Purpose: Log aggregation system
  • Notes: It works and can be used as a datasource for Grafana. Technically logs can be viewed in Grafana but I do not like the querying system or the UI and end up not using it. Graylog had a better UI but no color coding per log level.

Kube-state-metrics

Vector

  • GitHub: https://github.com/vectordotdev/vector
  • Purpose: Log and metrics pipeline
  • Notes: It's DataDog's open source metrics and logs collection tool written in Rust. If only they open sourced their log UI too.

Victoria-logs

Victoria Metrics

Network

MetalLB

  • GitHub: https://github.com/metallb/metallb
  • Purpose: Load balancer implementation
  • Notes: Can't say I understand everything that it can do but for my usage: it creates a floating IP which then becomes accessible to all machines in the CIDR and is able to reach any node that has a metallb listener deployed. What this allows to do is to use services of type LoadBalancer such as in Nginx ingress controller.

Kubernetes Nginx Ingress Controller

  • GitHub: https://github.com/kubernetes/ingress-nginx
  • Purpose: Ingress controller
  • Notes: The free one by kubernetes. There are different proxy vendors and many seem quite good. k3s ships with traefik by default but I just install this one and never had to think about it.

PiHole

  • GitHub: https://github.com/pi-hole/pi-hole
  • Purpose: Network-wide ad blocking / DNS
  • Notes: I used it for ~2 years and now use Adguard Home directly on my openwrt custom router / firewall. I still have it deployed though.

Office & Productivity

Bookstack

Collabora

Email: Dovecot / MbSync / Roundcube

  • GitHub: https://github.com/roundcube/roundcubemail
    + custom Dockerfiles to install dovecot-imapd and isync
    on a Debian base
  • Purpose: Email backup server
  • Notes: Cronjobs are running mbsync which syncs my different gmail accounts to a dovecot pod. Then using roundcube for a webUI to view backed up emails. It is also possible to connect directly using a client like Thunderbird.

ESPHome

  • GitHub: https://github.com/esphome/esphome
  • Purpose: ESP32/ESP8266 firmware management
  • Notes: I use it for an ESP32 bluetooth bridge which I found more stable than Home Assistant's integrated Bluetooth for some devices.

Filebrowser

Fileflows

  • GitHub: https://github.com/revenz/FileFlows
  • Purpose: File processing automation
  • Notes: For now I only have one Flow to convert all my h264 videos to h265. I initially wanted to convert everything to AV1 but the codec integration had a bug with the quality settings range so I went ahead with h265. It saved me around 5TB on a 14TB library.

Firefly III

  • GitHub: https://github.com/firefly-iii/firefly-iii
  • Purpose: Personal finance manager
  • Notes: Don't use it so much anymore due to the lack of banking APIs. Otherwise was working fine for basic reconciliation and budgeting.

Frigate

  • GitHub: https://github.com/blakeblackshear/frigate
  • Purpose: NVR with object detection
  • Notes: Had stability issues with it (disk getting filled by logs or temp files, etc.). v0.15 introduced a nice UI revamp. It also has the benefit of supporting Google USB accelerator Coral https://coral.ai/products/accelerator which I had laying around and speeds up inference. I do not connect it directly to my cameras and instead use a separate go2rtc deployment so that the load is separated and due to aforementioned stability issues. It is possible to setup notifications in Home Assistant that arrive directly as Android notifications with picture and video.

Ghost

Go2rtc

  • GitHub: https://github.com/AlexxIT/go2rtc
  • Purpose: RTSP/WebRTC streaming
  • Notes: Connects to my webcams to lower the load on them. Then serves the camera feed to Home Assistant and to Frigate separately.

Home Assistant

  • GitHub: https://github.com/home-assistant/core
  • Purpose: Home automation platform
  • Notes: I don't use as many features as I should / could. I use it for temperature viewing / controlling, to control Hue lights automatically / remotely without a Hue account, Live camera feed, some switchbot bots and meter plugs. I don't have fancy dashboards.

Matter python server

Mosquitto

Nextcloud

  • GitHub: https://github.com/nextcloud/server
  • Purpose: File sync and collaboration platform
  • Notes: Used for file sharing, for Nextcloud Talk occasionally. The Web UI is a bit slow though.

NTP

Odoo

Owntracks

Paperless-ngx

Rustpad

  • GitHub: https://github.com/ekzhang/rustpad
  • Purpose: Collaborative text editor
  • Notes: I use it to share ephemeral (24h) snippets, often between my own machines. Can be used anonymously. Real time editing with multiple editors. File based.

Vaultwarden

Youtrack

Photos

Immich

  • GitHub: https://github.com/immich-app/immich
  • Purpose: Photo backup and management. Google Photos alternative.
  • Notes: Tried it many times in its early versions but was not mature enough to switch. In the meantime tried everything that I could find: photoprism, photostructure, librephotos, piwigo, etc. Then end of 2024, tried again and it worked out of the box with external libraries, reverse proxy, multiple workers, gpu acceleration, albums, multiple users, etc. It is now the best open source photos solution.

SPIS

  • GitHub: https://github.com/gbbirkisson/spis
  • Purpose: Photo indexing system / timeline
  • Notes: In my quest to find a good open source photos solution I stumbled upon this rust project. I still find it excellent for its purpose: throw a photo folder and it will scan everything and create a timeline of it. And it does so very quickly: indexing the photos takes around 5min for 120k or ~700GB photos for me.

Security

Authelia

  • GitHub: https://github.com/authelia/authelia
  • Purpose: Authentication and SSO solution
  • Notes: I use it to add a login screen to apps that do not have one. This allows me to have an external URL pointing directly to internal services such as Longhorn's dashboard.

Bank-vaults

  • GitHub: https://github.com/bank-vaults/bank-vaults
  • Purpose: Vault operator
  • Notes: I use its mutating webhook which reads from vault and injects secrets to each pod based on role annotations and service accounts. It is also possible to use it to deploy vault, unseal it, etc. but I have not experimented with this.

Cert-manager

Clean-dead-pods (custom script)

  • Purpose: Pod cleanup utility
  • Notes: Kubernetes seems to keep around pods in various broken states and when used with strategy recreate which does not allow multiple similar pods (especially for volume mounting). I am sure there is a better way such as Eviction Policies but I have not researched enough.

LLDAP

Renovate

Unseal (custom script)

  • Purpose: Vault auto-unseal in a secure way
  • Notes: Handles Vault initialization / unsealing when the pods restart. I tested with vault high availability but I find a single vault pod along with an unseal script to be more performant / reliable. Bank-vault has an unseal feature too for the vault server it deploys.

Hashicorp Vault

  • GitHub: https://github.com/hashicorp/vault
  • Purpose: Secrets management
  • Notes: Configured via terraform and integrated in kubernetes via bank-vaults. This removes the need to have secret.yaml files in the repository as well as base64 encoded secrets in the cluster. Secrets are injected in the environment of the main process when pods start.

Social

Answer

  • GitHub: https://github.com/apache/answer
  • Purpose: Q&A platform
  • Notes: Project that got integrated in the Apache foundation. I don't use it so much but it is well made enough that I don't want to remove it.

Libreddit

  • GitHub: https://github.com/libreddit/libreddit
  • Purpose: Alternative Reddit frontend written in Rust
  • Notes: I would probably use this more if I used a tool to replace all reddit links with my personal instance. It works well when I need to use it.

Mattermost

Monica

  • GitHub: https://github.com/monicahq/monica
  • Purpose: Personal CRM
  • Notes: I forget too many things so I always wanted a system like this where I can save some facts about people for my own usage. Contrary to Facebook like networks, this requires inputting all the info so it does require some work. It could probably be extended through its API to automatically ingest info from emails, chat logs, etc. but I keep it simple.

Signal

Slackdump

Storage

Democratic-CSI

  • GitHub: https://github.com/democratic-csi/democratic-csi
  • Purpose: Storage provisioner
  • Notes: CSI driver for TrueNAS. In other words allows to have a storage class that will trigger volume (ZVOL based) creation in TrueNAS via iSCSI. It is stable.

Longhorn

  • GitHub: https://github.com/longhorn/longhorn
  • Purpose: Distributed block storage
  • Notes: Provides persistent storage for stateful applications. Along with the appropriate storage class it allows to answer Kubernetes PVC requests and create a PersistentVolume for it. The UI is clean. Scheduled backup jobs are available. Live volume expansion works. Having multiple replicas ensure resilience. It is on the way to maturity but settings are sometimes confusing and bugs can be pretty annoying (volumes refusing to detach, etc.)

MinIO

  • GitHub: https://github.com/minio/minio
  • Purpose: S3-compatible object storage
  • Notes: Used for backup storage and general object storage. It's the most stable deployment I have experienced in 3 years.

Proxmox

  • GitHub: https://www.proxmox.com/en/
  • Purpose: Virtualization management
  • Notes: Technically not a deployment, but I make use of cert-manager, nginx, etc. to route to proxmox web UI which allows me to manage my cluster from anywhere.

TrueNAS

Velero

  • GitHub: https://velero.io/
  • Purpose: Kubernetes backup
  • Notes: Cluster-level backup solution. It backs up yaml resources, secrets, etc. to S3 and allows for transfer cluster to cluster, etc.

System

Upgrade-controller