A collection of k8s stacks to run a homelab.
On the server run the following file to install a single node k8s cluster. It has been tested on Ubuntu 22.04
install-k8s-cluster.sh
- k8s: 1.29.2-1.1
Once k8s credentials are available use them (.kube config file) make a copy of values-template.yaml and update the file with proper values.
Note: bash 4.0 or higher is required to run the following commands.
cp values-template.yaml values.yaml
And run the following file to install the homelab.
install-homelab.sh
- cilium: 1.14.7
- metallb: 0.14.3
- cert-manager: 1.14.3
- ingress-nginx: 4.10.0
- sealed-secrets: 2.15.2
After you have made changes in the configuration (charts or values.yaml) you can run the following file to update the homelab.
update-homelab.sh
Global settings:
- uid
- gid
- tz
Those settings can be overridden per service, for example:
prowlarr:
uid: 1000
gid: 1000
tz: Europe/Madrid
custom-dns (based on CoreDNS)
cert-manager-letsencrypt-cloudflare (Cluster issuer for Let's Encrypt with DNS-01 challenge using Cloudflare)
prowlarr (based on Prowlarr)
nzbhydra2 (based on NZBHydra2)
transmission (based on Transmission)
sabnzbd (based on SABnzbd)
You probably want to have a look at this https://sabnzbd.org/wiki/extra/hostname-check.html
radarr (based on Radarr)
sonarr (based on Sonarr)
bazarr (based on Bazarr)
lidarr (based on Lidarr)
readarr (based on Readarr)
calibre (based on Calibre)
calibre-web (based on Calibre-Web)
jellyseerr (based on Jellyseerr)
overseerr (based on Overseerr)
jellyfin (based on Jellyfin)
Once installed go to https://jellyfin.yourdomain/web/#/wizardstart.html to configure the server.
plex (based on Plex Media Server)
For native apps in the same network you will need to set Settings -> Network -> Custom server access URLs to something like https://plex.yourdomain.tld
emby (based on Emby)
xteve (based on xTeVe)
threadfin (based on Threadfin)
homarr (based on Homarr)
filebrowser (based on File Browser
This you can use as .filebrowser.json
{
"port": 8080,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database.db",
"root": "/srv"
}
fileflows (based on FileFlows)
home-assistant (based on Home Assistant)
The following will be needed in the configuration.yaml file for Home Assistant to work with the ingress-nginx (more info):
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.0.0.0/8 # Cilium's default CIDR
Probably you also want to install hacs (Home Assistant Community Store) to get more integrations and plugins. https://hacs.xyz/
flaresolverr (based on FlareSolverr)
Tool to solve Cloudflare challenges.
renovate (based on Renovate)
docker-registry (based on registry)
Includes Prometheus, Grafana, Alertmanager, and kube-state-metrics