Skip to content

Bare Metal Kubernetes Homelab - Complete Setup Guide

Production-ready Kubernetes on bare metal with GitOps automation. Go from blank Ubuntu nodes to a fully operational cluster with one streamlined workflow.

A production-ready Kubernetes cluster with these services accessible via HTTPS on your Tailnet:

ServiceURLPurpose
ArgoCDargocd.yourdomain.comGitOps dashboard
Grafanagrafana.yourdomain.comMetrics and dashboards
Prometheusprometheus.yourdomain.comMetrics collection
Alertmanageralertmanager.yourdomain.comAlert routing
Vaultvault.yourdomain.comSecrets management
Longhornlonghorn.yourdomain.comStorage dashboard
Headlampheadlamp.yourdomain.comKubernetes UI
Hubblehubble.yourdomain.comNetwork observability
Homehome.yourdomain.comDashboard with links
flowchart TB
    subgraph Workstation["Your Workstation"]
        Ansible["Ansible Playbooks"]
        Git["Git Push"]
    end

    subgraph Nodes["Ubuntu 24.04 Nodes"]
        CP["Control Plane"]
        W1["Worker 1"]
        W2["Worker N"]
    end

    subgraph Cluster["Kubernetes Cluster"]
        ArgoCD["ArgoCD"]
        Cilium["Cilium CNI"]
        Envoy["Envoy Gateway"]
        Vault["Vault"]
        Longhorn["Longhorn"]
        Apps["Your Apps"]
    end

    subgraph External["External Services"]
        TS["Tailscale"]
        CF["Cloudflare DNS"]
        B2["Backblaze Backup"]
    end

    Ansible -->|provision| Nodes
    Git -->|GitOps| ArgoCD
    ArgoCD -->|deploys| Cluster
    Envoy -->|ingress via| TS
    CF -->|DNS records| TS
    Longhorn -->|backups| B2
  • 1+ Ubuntu 24.04 nodes (bare metal or VMs)
  • Minimum 2 CPU, 4GB RAM, 20GB disk per node
  • Nodes can reach each other over the network
  • Optional: GPU for transcoding (Intel iGPU or NVIDIA)

GitOps with ArgoCD

Declarative cluster management. Push to Git, ArgoCD deploys.

Ansible Automation

One-command node provisioning. Reproducible and version controlled.

Cilium CNI

eBPF networking with Gateway API via Envoy Gateway.

Tailscale Ingress

Secure ingress with split-horizon DNS and automatic certificates.

Vault Secrets

HashiCorp Vault with External Secrets Operator. No secrets in Git.

Longhorn Storage

Distributed block storage with S3 backups.

LayerComponents
Bootstrapkubeadm, Ansible playbooks
NetworkingCilium, Envoy Gateway, Tailscale Operator
GitOpsArgoCD, ApplicationSets, Image Updater
SecretsVault, External Secrets Operator
StorageLonghorn, Backblaze B2 backup
DNS/TLSExternalDNS, cert-manager, Cloudflare
MonitoringPrometheus, Grafana, Alertmanager, ntfy
SecurityKubescape scanning