O co jde

Jednonodový Kubernetes (k3s) homelab na starém notebooku ze šuplíku. Slouží jako cvičiště na CKAD a CKA a jako platforma pro monitoring a vlastní MCP server. Každá stránka je runbook: co spustit, kde, jak ověřit výsledek a proč se to dělá takhle.

VrstvaTechnologie
HardwareLenovo G50-80 · i7-5500U · 8 GB RAM · SSD + SSHD
OSUbuntu Server 26.04 LTS (dual boot s Windows 11)
Kubernetesk3s v1.35, jeden node, ingress Traefik
NasazováníGitHub Actions → GHCR → Flux (GitOps)
Veřejný přístupCloudflare Tunnel → Traefik, bez otevřených portů
SprávaTailscale + SSH klíče, k9s na nodu
Tok nasazení: git push → GitHub Actions → GHCR → Flux → k3s → Cloudflare
Jak se změna dostane od git push na web, viz CI/CD a GitOps

Jak číst runbooky

Bloky kódu mají štítek, kde se příkaz spouští, a tlačítko copy:

ŠtítekKde
@ serverna nodu, přes ssh homelab
@ macna pracovní stanici
@ windowsve Windows, PowerShell nebo příkazový řádek jako správce
@ instalátorv shellu instalátoru Ubuntu
@ gitsoubor v repozitáři

$ stav

user@homelab — ssh — 120×40

user@homelab:~$ ./session-report --all

[✓] 2026-10-27 · 4h 25m (19:20 → 23:45) · NTB → Ubuntu + k3s

[✓] 2026-10-28 · ~1h (00:05 → 00:35, 13:05 → 13:25) · docs web + Cloudflare Tunnel

[✓] 2026-10-29 · ~1h30 (20:05 → 21:35) · Tailscale + k9s + GitOps (Flux)

$ kubectl get homelab -o wide

NAMESTATUSDETAIL
ntb-revivalDonedruhý život pro starý NTB ze šuplíku: čistá reinstalace z USB boot disku (Ventoy)
windows-11Readyaktivní, 146 GB, čas v UTC
ubuntu-26.04.1Ready/ 300 GB ext4 na sda5
grubReadymenu: Ubuntu / Windows
networkReadyWi-Fi, pevná IP přes DHCP rezervaci
sshdRunningjen klíč, port 22, heslo + root zakázané
ssh-macRunningssh homelab
ssh-ipadRunningTermius, vlastní ED25519 klíč
ufwActive22, 6443, 80, 443 + sítě k3s
server-modeReadyvíko ignorováno, swap off, baterie 60 %
maintenanceActiveunattended-upgrades, chrony, Europe/Prague
k3sRunningv1.35.9+k3s1, alias k, completion
nginx-testPassedDeployment + Service + Ingress (Traefik)
tailscaleRunningSSH odkudkoli (Mac, iPad), žádné otevřené porty
k9sReadyterminálové GUI clusteru na serveru
github-actionsPassedbuild → GHCR (soukromý) → commit tagu
fluxReadyGitOps: infra → apps, pull z gitu každou minutu
troubleshootFixedVentoy grub2 mode, sgdisk oddíl, rfkill Wi-Fi, Flux dependsOn
docs-siteRunningHugo → nginx (non-root) → GHCR → Flux
cloudflaredHealthyCloudflare Tunnel, 4 spojení (Praha + Vídeň), žádné otevřené porty
public-siteOnlinehttps://svejklab.dev (HTTPS od Cloudflare)
sanitizeDoneveřejný obsah bez IP adres, uživatele a topologie sítě
i18nDonečeština + angličtina s přepínačem jazyka
rpi-evalSkippedRaspberry Pi 5 zatím ne: drahá RAM, výkon jako NTB

$ kubectl get jobs -n backlog

NAMESTATUSTASK
monitoringPendingPrometheus + Grafana
mcp-serverPendingvlastní MCP server (GitOps, přes Tailscale)
backupsPendingzálohy k3s a dat na NAS
certificationPendingCKAD → CKA

$ logout # homelab běží dál

$ ls docs/

  1. 01 Hardware Node, jeho disky a omezení, která určila návrh
  2. 02 Instalační médium a Windows 11 USB médium s více ISO přes Ventoy, Windows 11 na nepodporovaném hardwaru a příprava dual bootu
  3. 03 Ubuntu Server Ubuntu Server 26.04.1 vedle Windows na sdíleném SSD
  4. 04 Dual boot a GRUB Řetězec bootování, GRUB menu s Windows a záchranné cesty
  5. 05 Síť Wi-Fi přes netplan, odblokování rfkill a pevná adresa přes DHCP rezervaci
  6. 06 SSH SSH jen s klíči z Macu a iPadu, hesla a root zakázané
  7. 07 Hardening a režim serveru Aktualizace, synchronizace času, firewall, víko, swap a ochrana baterie
  8. 08 k3s Jednonodový k3s v1.35, stejná verze jako na zkoušce CKAD
  9. 09 Vzdálený přístup (Tailscale, k9s) SSH na server odkudkoli bez otevřených portů a přehled clusteru v k9s
  10. 10 Tento web Hugo, dva jazyky, image s nginx bez root práv a zabezpečení podu
  11. 11 Veřejný web (Cloudflare Tunnel) Vyčištění obsahu, výběr domény, tunel z clusteru do Cloudflare a svejklab.dev online
  12. 12 CI/CD a GitOps git push → GitHub Actions → GHCR → Flux → k3s: nasazení bez přístupu do clusteru zvenku
  13. 13 Architektonická rozhodnutí ADR: klíčová rozhodnutí návrhu, jejich kontext a důsledky
  14. 14 Troubleshooting Technické problémy při stavbě homelabu: příznak, příčina a řešení
  15. 15 Changelog Co se změnilo v homelabu a na tomto webu, od nejnovějšího
  16. 16 Backlog Co je hotovo a co je na řadě: monitoring, MCP server, zálohy a certifikace