Skip to content

danilupion/homelab

Repository files navigation

Homelab

A collection of k8s stacks to run a homelab.

Installation

Single Node K8S Cluster

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

Versions

  • k8s: 1.29.2-1.1

Homelab

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

Versions

Update (configuration)

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

Services Configuration

Global settings:

  • uid
  • gid
  • tz

Those settings can be overridden per service, for example:

prowlarr:
  uid: 1000
  gid: 1000
  tz: Europe/Madrid

Helm Charts

Networking

metallb-config (single node ip pool)

custom-dns (based on CoreDNS)

Certificates

cert-manager-letsencrypt-cloudflare (Cluster issuer for Let's Encrypt with DNS-01 challenge using Cloudflare)

Media Indexing

prowlarr (based on Prowlarr)

nzbhydra2 (based on NZBHydra2)

Media Downloading

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

Media Management

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)

Media Streaming

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)

Tools

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.

Dev

renovate (based on Renovate)

docker-registry (based on registry)

Observability

Includes Prometheus, Grafana, Alertmanager, and kube-state-metrics