explaingit

khuedoan/homelab

9,232PythonAudience · ops devopsComplexity · 5/5Setup · hard

TLDR

A complete blueprint that turns bare-metal PCs into a self-hosted Kubernetes cluster with one command, deploying services like Gitea, Jellyfin, Grafana, and a Matrix chat server automatically.

Mindmap

mindmap
  root((homelab))
    Bootstrap
      PXE OS install
      Kubernetes setup
      Single command deploy
    Services
      Gitea git server
      Jellyfin media
      Grafana monitoring
      Matrix chat
    Automation
      ArgoCD GitOps
      Woodpecker CI
      Auto SSL certs
      Auto DNS updates
    Networking
      Tailscale VPN
      WireGuard
      Cloudflare Tunnel
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Deploy a self-hosted Gitea git server and Jellyfin media server on spare PCs with a single command.

USE CASE 2

Use GitOps to manage all home services through code, commit a config change and ArgoCD applies it automatically.

USE CASE 3

Expose home services securely to the internet via Cloudflare Tunnel without opening router ports.

USE CASE 4

Run a local AI assistant using Ollama on your own hardware inside the cluster.

Tech stack

PythonKubernetesArgoCDWoodpecker CIAnsibleTailscaleWireGuardCloudflare

Getting it running

Difficulty · hard Time to first run · 1day+

Requires 4+ bare-metal machines connected via a network switch, comfort with Kubernetes, GitOps, and Linux administration is essential.

License not specified in the explanation.

In plain English

This is a personal homelab configuration: a complete blueprint for turning a set of bare-metal machines into a fully automated self-hosted server environment. The creator runs it on four small form-factor PCs connected through a network switch. The project starts from empty hard drives and, with a single command, automatically installs an operating system on each machine over the network using PXE boot (a method that lets machines install software over the network without a USB drive), sets up a container orchestration platform called Kubernetes, and then deploys a collection of self-hosted services. Those services include a git server (Gitea), a media server (Jellyfin), monitoring dashboards (Grafana), a Matrix chat server, a document management system (Paperless), and a CI/CD pipeline for automated testing and deployment. Everything is managed through code stored in git repositories, a pattern called GitOps. When you want to make a change, you update a configuration file and commit it. Tools called ArgoCD and Woodpecker CI then automatically apply those changes to the running system without manual intervention. The feature list covers a wide range: automatic OS and Kubernetes updates, SSL certificate management, DNS record updates for exposed services, VPN access via Tailscale or WireGuard, the ability to expose services to the internet through Cloudflare Tunnel, single sign-on, distributed storage, monitoring and alerting, and automated backup and restore. There is also an experimental self-hosted AI section using Ollama, though the creator notes it runs slowly without a dedicated graphics card. The project is labeled alpha, meaning breaking changes can happen and a complete redeployment may be required after upgrades. It is intended as a framework and reference for people building their own homelabs rather than a production-ready product.

Copy-paste prompts

Prompt 1
Using this homelab repo as a reference, write an ArgoCD Application manifest to deploy a new self-hosted service to the Kubernetes cluster.
Prompt 2
How do I add a new service to khuedoan's homelab setup? Show me which files to edit and what a minimal example looks like.
Prompt 3
Write a Woodpecker CI pipeline config that runs tests on push and triggers an ArgoCD sync to deploy to the homelab cluster.
Prompt 4
Generate a Tailscale exit-node config so I can route all traffic through my homelab when away from home.
Open on GitHub → Explain another repo

← khuedoan on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.