Blog post https://merox.dev/blog/homelab-tour/
Device | CPU | RAM | Storage | Role | Status |
---|---|---|---|---|---|
Dell PowerEdge R720 | 2x Intel Xeon E5-2697 v2 (24 cores / 48 threads) |
192GB DDR3 | 4x Intel D3-S4510 960GB SSD | Proxmox Backup Server | π’ Active |
Dell OptiPlex 3050 #1 | Intel i5-6500T (4 cores / 4 threads) |
16GB DDR4 | 128GB NVMe + 512GB SSD | Kubernetes Node (Proxmox VM) |
π’ Active |
Dell OptiPlex 3050 #2 | Intel i5-6500T (4 cores / 4 threads) |
16GB DDR4 | 128GB NVMe + 512GB SSD | Kubernetes Node (Proxmox VM) |
π’ Active |
Beelink GTi 13 Pro | Intel i9-13900H (14 cores / 20 threads) |
64GB DDR5 | 2x 2TB NVMe | Kubernetes Node (Proxmox VM) |
π’ Active |
Synology DS223+ | ARM Realtek RTD1619B | 2GB DDR4 | 2x 2TB HDD (RAID 1) |
NAS / Media Server Backup Target |
π’ Active |
XCY X44 | Intel N100 (4 cores / 4 threads) |
8GB DDR4 | 128GB SSD | pfSense Firewall | π’ Active |
Hetzner CX32 | 4 vCPU | 8GB | 80GB SSD | Remote VPS Off-site Backup |
βοΈ Cloud |
Device | Model | Protected Equipment | Capacity |
---|---|---|---|
UPS #1 | CyberPower | Dell R720 | 1500VA |
UPS #2 | CyberPower | Mini PCs + Network | 1000VA |
Device | Model | Ports | Role |
---|---|---|---|
Switch | TP-Link | 24x 1Gb | Core Network Switch |
A streamlined Kubernetes cluster deployment using Talos Linux and Flux. Based on onedr0p/cluster-template.
- Knowledge of: Containers, YAML, Git
- Cloudflare account with a domain
- Hardware: 4 cores, 16GB RAM, 256GB SSD per node (3+ nodes recommended)
- OS: Talos Linux
- GitOps: Flux (GitHub provider)
- Secrets: SOPS
- Networking: Cilium, Cloudflared
- Core Apps: cert-manager, spegel, reloader, external-dns
- Automation: Renovate, GitHub Actions
- Dev Tools: Mise
- Create Talos image at factory.talos.dev (note the schematic ID)
- Flash ISO/RAW to USB and boot nodes
- Verify nodes:
nmap -Pn -n -p 50000 192.168.1.0/24 -vv | grep 'Discovered'
# Create repo from template
export REPONAME="home-ops"
gh repo create $REPONAME --template onedr0p/cluster-template --public --clone && cd $REPONAME
# Install tools
mise trust && pip install pipx && mise install
# Logout registries
docker logout ghcr.io && helm registry logout ghcr.io
- Create API token with permissions:
Zone - DNS - Edit
Account - Cloudflare Tunnel - Read
- Create tunnel:
cloudflared tunnel login cloudflared tunnel create --credentials-file cloudflare-tunnel.json kubernetes
task init # Generate config files
# Edit cluster.yaml and nodes.yaml
task configure # Template configurations
git add -A && git commit -m "chore: initial commit" && git push
task bootstrap:talos # Install Talos (10+ min)
git add -A && git commit -m "chore: add secrets" && git push
task bootstrap:apps # Deploy Cilium, Flux, etc.
kubectl get pods --all-namespaces --watch
cilium status # Check Cilium
flux check # Check Flux
flux get sources git flux-system # Git sync status
nmap -Pn -n -p 443 ${gateway_addrs} -vv # Gateway connectivity
dig @${dns_gateway} echo.${domain} # DNS resolution
kubectl -n kube-system describe certificates # SSL certs
task talos:generate-config
task talos:apply-node IP=10.10.10.10 MODE=auto
# Update talenv.yaml first
task talos:upgrade-node IP=10.10.10.10 # Talos upgrade
task talos:upgrade-k8s # Kubernetes upgrade
task talos:reset
- External: Use
external
gateway in HTTPRoutes for public access - Internal: Configure home DNS to forward
${domain}
β${cluster_dns_gateway}
- Get webhook path:
kubectl -n flux-system get receiver github-webhook --output=jsonpath='{.status.webhookPath}'
- Add to GitHub:
https://flux-webhook.${domain}${webhook_path}
task reconcile # Force Flux sync
flux get sources git -A # Check sources
kubectl -n <namespace> logs <pod> -f # Pod logs
kubectl -n <namespace> describe <resource> # Resource details
kubectl -n <namespace> get events --sort-by='.metadata.creationTimestamp'
task template:tidy # Remove template files
git add -A && git commit -m "chore: cleanup" && git push
- Alternative DNS: Consider external-dns providers
- Secret Management: Explore External Secrets
- Storage Options: rook-ceph, longhorn, openebs, democratic-csi
- GitHub Discussions
- Home Operations Discord (#support, #cluster-template)
For detailed documentation, refer to the original template