Skip to content

TheDonDope/homelab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Homelab

Don't pay money to use services, host them yourself.

This repository provides the configuration to deploy a collection of useful services to your own local Kubernetes cluster. For an easier deployment helmfile is used.

Requirements

To use this, you need a local kubernetes cluster installed (for example through minikube or k3s), and the following tools:

Services provided

The services listed here are considered user-facing services, used by multiple clients with different platforms (mobile, web, computer).

Service Description
Jellyfin The Free Software Media System
Nextcloud Cloud Storage
Pi-hole Network-wide Ad Blocking
VaultWarden Bitwarden compatible server

Internal services

The services listed here are used by the cluster to enable and manage internal and external communication.

Service Description
Bitnami ExternalDNS Automatic DNS for Pi-hole
Ingress-Nginx Controller Ingress for local network
Longhorn Distributed block storage (used as storage for Nextcloud)
MetalLB Load balancer

Monitoring

For monitoring purposes, the PLTG Stack (Prometheus, Loki, Tempo, Grafana) is provided, consisting of:

  • Monitoring: Prometheus
  • Log aggregation: Loki
  • Tracing: Tempo
  • Observability: Grafana

Service specific configuration

Some services might have additional requirements, be it installed tools, or deployed resources.

Bitnami ExternalDNS

Grafana

Ingress-Nginx

Jellyfin

Loki

Longhorn

MetalLB

Nextcloud

Pi-hole

Update the default password:

kubectl create secret generic pihole-password \
  --from-literal=password='new_password_here' \
  --namespace=pihole-system \
  --dry-run=client -o yaml | kubectl apply -f -

Prometheus

Tempo

VaultWarden

Deploying to a cluster

Before you deploy to your cluster, you need to prepare it:

  • Install / verify Helm dependencies:
make helm-deps

Deploying to a cluster is as simple as running:

make helm-install

Important: Afterwards also apply the kustomizations by running:

make kustomize

Using a production cluster with k3s

To help you bootstrap a production-grade lightweight kubernetes cluster, the Makefile provides three different targets:

Installing a minimal k3s cluster:

  • servicelb is disabled in favour of using metallb
  • traefik is disabled in favour of monitoring with grafana
  • local-storage is disabled in favour of using longhorn
make k3s-install

Copying over the kubeconfig to your local ~/.kube/config:

make k3s-config

Tearing down the installed k3s cluster and deleting all installed files:

make k3s-uninstall

About

Don't pay money to use services, host them yourself.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •