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.
| Vrstva | Technologie |
|---|---|
| Hardware | Lenovo G50-80 · i7-5500U · 8 GB RAM · SSD + SSHD |
| OS | Ubuntu Server 26.04 LTS (dual boot s Windows 11) |
| Kubernetes | k3s v1.35, jeden node, ingress Traefik |
| Nasazování | GitHub Actions → GHCR → Flux (GitOps) |
| Veřejný přístup | Cloudflare Tunnel → Traefik, bez otevřených portů |
| Správa | Tailscale + SSH klíče, k9s na nodu |
Jak číst runbooky
Bloky kódu mají štítek, kde se příkaz spouští, a tlačítko copy:
| Štítek | Kde |
|---|---|
@ server | na nodu, přes ssh homelab |
@ mac | na pracovní stanici |
@ windows | ve Windows, PowerShell nebo příkazový řádek jako správce |
@ instalátor | v shellu instalátoru Ubuntu |
@ git | soubor v repozitáři |
$ stav
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
| NAME | STATUS | DETAIL |
|---|---|---|
| ntb-revival | Done | druhý život pro starý NTB ze šuplíku: čistá reinstalace z USB boot disku (Ventoy) |
| windows-11 | Ready | aktivní, 146 GB, čas v UTC |
| ubuntu-26.04.1 | Ready | / 300 GB ext4 na sda5 |
| grub | Ready | menu: Ubuntu / Windows |
| network | Ready | Wi-Fi, pevná IP přes DHCP rezervaci |
| sshd | Running | jen klíč, port 22, heslo + root zakázané |
| ssh-mac | Running | ssh homelab |
| ssh-ipad | Running | Termius, vlastní ED25519 klíč |
| ufw | Active | 22, 6443, 80, 443 + sítě k3s |
| server-mode | Ready | víko ignorováno, swap off, baterie 60 % |
| maintenance | Active | unattended-upgrades, chrony, Europe/Prague |
| k3s | Running | v1.35.9+k3s1, alias k, completion |
| nginx-test | Passed | Deployment + Service + Ingress (Traefik) |
| tailscale | Running | SSH odkudkoli (Mac, iPad), žádné otevřené porty |
| k9s | Ready | terminálové GUI clusteru na serveru |
| github-actions | Passed | build → GHCR (soukromý) → commit tagu |
| flux | Ready | GitOps: infra → apps, pull z gitu každou minutu |
| troubleshoot | Fixed | Ventoy grub2 mode, sgdisk oddíl, rfkill Wi-Fi, Flux dependsOn |
| docs-site | Running | Hugo → nginx (non-root) → GHCR → Flux |
| cloudflared | Healthy | Cloudflare Tunnel, 4 spojení (Praha + Vídeň), žádné otevřené porty |
| public-site | Online | https://svejklab.dev (HTTPS od Cloudflare) |
| sanitize | Done | veřejný obsah bez IP adres, uživatele a topologie sítě |
| i18n | Done | čeština + angličtina s přepínačem jazyka |
| rpi-eval | Skipped | Raspberry Pi 5 zatím ne: drahá RAM, výkon jako NTB |
$ kubectl get jobs -n backlog
| NAME | STATUS | TASK |
|---|---|---|
| monitoring | Pending | Prometheus + Grafana |
| mcp-server | Pending | vlastní MCP server (GitOps, přes Tailscale) |
| backups | Pending | zálohy k3s a dat na NAS |
| certification | Pending | CKAD → CKA |
$ logout # homelab běží dál
$ ls docs/
- 01 Hardware Node, jeho disky a omezení, která určila návrh
- 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
- 03 Ubuntu Server Ubuntu Server 26.04.1 vedle Windows na sdíleném SSD
- 04 Dual boot a GRUB Řetězec bootování, GRUB menu s Windows a záchranné cesty
- 05 Síť Wi-Fi přes netplan, odblokování rfkill a pevná adresa přes DHCP rezervaci
- 06 SSH SSH jen s klíči z Macu a iPadu, hesla a root zakázané
- 07 Hardening a režim serveru Aktualizace, synchronizace času, firewall, víko, swap a ochrana baterie
- 08 k3s Jednonodový k3s v1.35, stejná verze jako na zkoušce CKAD
- 09 Vzdálený přístup (Tailscale, k9s) SSH na server odkudkoli bez otevřených portů a přehled clusteru v k9s
- 10 Tento web Hugo, dva jazyky, image s nginx bez root práv a zabezpečení podu
- 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 CI/CD a GitOps git push → GitHub Actions → GHCR → Flux → k3s: nasazení bez přístupu do clusteru zvenku
- 13 Architektonická rozhodnutí ADR: klíčová rozhodnutí návrhu, jejich kontext a důsledky
- 14 Troubleshooting Technické problémy při stavbě homelabu: příznak, příčina a řešení
- 15 Changelog Co se změnilo v homelabu a na tomto webu, od nejnovějšího
- 16 Backlog Co je hotovo a co je na řadě: monitoring, MCP server, zálohy a certifikace