Homelab.
Laboratorium na dwóch maszynach z Proxmoxem w domu, w którym uczę się infrastruktury na usługach, których naprawdę używam. Jest dostępne z zewnątrz bez ani jednego otwartego portu.
Panel Proxmoxa i prawdziwe wyniki komend z mojego klastra, 5 listopada 2026. Celowo ukryte: jeden prywatny kontener, adresy węzłów, nazwa klastra, zalogowane konto i historia zadań.
0 otwartych portów na routerze
2 węzły Proxmoxa w jednym klastrze
9 kontenerów LXC, z czego 6 działa
Dlaczego go prowadzę.
Chciałem uczyć się infrastruktury na usługach, których naprawdę używam. Działa w domu na dwóch maszynach z Proxmoxem, a router nie przekierowuje żadnych portów: wszystko wychodzi przez Cloudflare Tunnel.
Każda decyzja jest spisana razem z uzasadnieniem i tym, co mogłoby ją zmienić. Gdy coś się psuje, objaw, przyczyna i naprawa trafiają do dziennika, sprawdzane na działających maszynach, a nie z pamięci.
Co tam działa.
Odczytane z klastra 5 listopada 2026. Zatrzymanych kontenerów tu nie ma.
Sprzęt
- Węzeł 1
- Intel i3-4130T, 8 GB RAM i dysk SSD 238 GB. Dziś działa tu wszystko.
- Węzeł 2
- Dell OptiPlex 7050, w klastrze od 1 października 2026. Nie ma na nim jeszcze kontenerów.
- Proxmox VE 9.2
- Łączy obie maszyny w jeden klaster.
Usługi
- Testowa strona Clickwill
- Strona Clickwill, testowana tu przed publikacją.
- Panel Clickwill
- Pobrania, ruch na stronie i wyszukiwane hasła.
- Serwer podglądów
- Caddy. Szkice moich stron pod publicznym linkiem, niewidoczne dla wyszukiwarek.
- Pliki
- Nextcloud na dysku 80 GB.
- Docker i Portainer
- Mniejsze narzędzia, w tym panel benchmarków lokalnych modeli AI.
- Moja najbardziej wrażliwa aplikacja
- Prywatna, z ostrzejszymi zasadami niż reszta laboratorium.
Dostęp
- Cloudflare Tunnel
- Jedyna droga z zewnątrz, przez połączenia wychodzące z moich maszyn.
- Cloudflare Access
- Prywatne hosty proszą o jednorazowy kod wysyłany e-mailem.
- WARP i Gateway
- Wrażliwa aplikacja otwiera się tylko z zarejestrowanego urządzenia.
Jak pracuję tu z agentami AI.
Agenci wykonują dużą część prac, a ich dostęp jest szeroki. To kompromis, który mam na swojej liście.
Co robią agenci.
Hosty i kontenery
Wdrożenia, konfiguracja i diagnoza, przez SSH.
Cloudflare
DNS, tunele i reguły Access, przez API.
Co robię ja.
Decyzje
Co działa, co jest wystawione i jakie ryzyko przyjmuję.
Panele i instalatory
Wszystko w panelu w przeglądarce albo wymagające sudo na moim Macu.
Klucze prywatne
Zostają u mnie.
Decyzje, które spisałem.
Żadnych otwartych portów.
Skan mojego publicznego adresu niczego nie znajduje, a żaden port nie zostanie otwarty przez przypadek. Zmieniłaby to tylko usługa, której nie da się puścić przez tunel.
Ochrona domyślna.
Reguła wildcard obejmuje każdy nowy host od chwili jego powstania. Wyjątek wymaga świadomego kroku, a nie odwrotnie.
Klucze idą do kopii.
Kopia bez kluczy jest bezużyteczna po utracie kontenera. Archiwum jest szyfrowane kluczem publicznym, którego prywatnej połowy nie ma na serwerze, więc serwer może zrobić kopię, ale nie może jej odczytać.
Kopia poza serwerem.
Nocne kopie leżą na tym samym dysku co aplikacja. Awaria dysku jest bardziej prawdopodobna niż pożar, więc najnowsza kopia trafia na mojego Maca.
Co się zepsuło i co zmieniłem.
18 sie 2026
Połowa żądań zwracała 502.
Wyglądało to na problem z siecią. Tunel miał dwa connectory, jeden na serwerze, drugi na moim Macu, a Mac wyszedł z domu. Kosztowało mnie to godzinę i dziś sprawdzam to w pierwszej kolejności.
29 sie
Zabezpieczenia, które istniały tylko na papierze.
Bez nesting=1 w nieuprzywilejowanym kontenerze systemd nie mógł zbudować piaskownicy i jednostki padały. Plan bezpieczeństwa opierał się właśnie na tych ustawieniach. Bez zauważenia tego istniałyby tylko w pliku konfiguracyjnym.
5 wrz
Lockfile z Maca położył usługę.
package-lock.json z macOS wymusił kompilację w kontenerze, który celowo nie ma kompilatora. Lockfile nie trafia już do paczki wdrożeniowej.
5 wrz
Nagłówek, który omijał limit.
Express czytał adres klienta ze skrajnie lewego wpisu X-Forwarded-For, więc zalogowany użytkownik mógł go zmieniać i omijać limit prób PIN-u. Adres pochodzi teraz z Cf-Connecting-IP.
6 wrz
Audyt bezpieczeństwa tylko do odczytu.
Całej konfiguracji, z zapisanymi dowodami. Prywatna aplikacja wypadła znacznie lepiej niż host wokół niej.
1 paź
Drugi węzeł.
Dell dołączył do pierwszej maszyny w jednym klastrze, a obie przeszły na Proxmoxa 9.2. Usługi wróciły bez szkód.
19 paź
Kod 302 niczego nie dowodził.
W czasie awarii każdy host nadal odpowiadał 302 na curl, a przeglądarka pokazywała Error 1033. Access odpowiada, zanim żądanie dotrze do tunelu, więc dziś testuję przez jedyny publiczny host.
Co jest jeszcze otwarte.
Laboratorium nie jest skończone, a to jest lista.
Kopie dla reszty
Kopię ma tylko wrażliwa aplikacja, ze snapshotem co noc. Reszta laboratorium nie ma jeszcze kopii.
Kontenery na węźle 2
Druga maszyna jest w klastrze, ale wciąż pusta.
Dostęp agentów
Ograniczenie go oznacza więcej ręcznej pracy dla mnie. Ta decyzja jest wciąż otwarta.
Sieci i Kubernetes
Tego chcę się nauczyć w następnej kolejności.
- Działa na
- Proxmox VE 9.2, dwa węzły
- Dostęp
- Cloudflare Tunnel, Cloudflare Access, WARP
- Zbudowany z
- LXC, Docker, Caddy, Nextcloud




