HOME LAB / NOTATKI TECHNICZNE
Jak działa moje laboratorium
Od routera do lokalnego agenta AI: sprzęt, usługi, integracje i granice działania mojego domowego środowiska.
Stan wdrożenia: 11 września 2026. Przykłady korzystają z danych poglądowych.
Trzy warstwy jednego środowiska
Podzieliłem domową infrastrukturę według zadań. Router zapewnia łączność, NAS utrzymuje codzienne usługi, a komputer dostarcza moc dla AI. Ta strona również działa na NAS.
| Warstwa | Sprzęt | Rola |
|---|---|---|
| Sieć | MikroTik hEX S · RouterOS 7 | Routing, NAT, DNS, DHCP, WireGuard |
| Usługi | Synology DS220+ · ok. 6 GB RAM | DSM, Container Manager, storage, monitoring, HTTPS |
| Obliczenia | Windows PC · 64 GB RAM · RTX 5070 Ti 16 GB | Docker Desktop / WSL, Ollama, agent, ComfyUI |
To schemat logiczny. Przykłady publiczne nie zawierają prywatnych adresów, kluczy ani danych logowania do urządzeń.
Sieć, zdalny dostęp i HTTPS
Po wykonaniu kopii i eksportów konfiguracji przeszedłem z RouterOS 6 na 7. Zaktualizowałem też firmware RouterBOARD, sprawdziłem łączność i DNS, a nieużywaną usługę PPTP zastąpiłem WireGuardem.
- WireGuard daje dostęp do prywatnych usług z telefonu. Wariant full tunnel kieruje przez dom również ruch internetowy telefonu.
- Osobne reguły input i forward obsługują zestawienie VPN, DNS, dostęp do LAN oraz wyjście do Internetu.
- MikroTik IP Cloud zapewnia DDNS. Strefa publicznego DNS jest w OVH, a rekordy pocztowe pozostają niezależne od hostingu WWW.
- Publiczny HTTP/HTTPS trafia przez NAT do Caddy na NAS. Caddy serwuje strony statyczne i przekazuje ruch do muzyki; czat i panele administracyjne pozostają prywatne.
Dla nazw używanych w domu uwzględniam split DNS i hairpin NAT. Rozwiązanie nazwy i odpowiedź na ping potwierdzają tylko część połączenia: port docelowy nadal musi obsługiwać właściwy HTTP lub TLS.
Usługi na NAS
| Usługa | Zastosowanie | Konfiguracja |
|---|---|---|
| Homepage | Portal wejściowy do usług, statusów i historii pomiarów. | Konfiguracja YAML, odnośniki i widgety Uptime Kuma oraz MySpeed; dostęp prywatny. |
| Uptime Kuma | Historia dostępności Internetu i wybranych urządzeń, m.in. kamer oraz drukarek. | Monitory ping/HTTP, zapis historii w trwałym katalogu kontenera; podstawowy ping Internetu co 60 sekund. |
| MySpeed | Pomiary przepustowości łącza i ich historia. | Osobny kontener z trwałym katalogiem danych, wyniki dostępne również przez Homepage. |
| Vaultwarden | Własny sejf haseł używany z klientami Bitwarden. | HTTPS, trwałe dane na NAS, dostęp z sieci domowej i przez WireGuard. |
| Navidrome | Własna biblioteka muzyki dostępna także z telefonu. | Osobny udział muzyczny montowany tylko do odczytu; baza w /data, skan co 15 minut, publiczny HTTPS przez Caddy. |
| Caddy | Publiczne strony i reverse proxy biblioteki muzyki. | Automatyczne certyfikaty TLS, trwałe katalogi certyfikatów, witryny statyczne montowane tylko do odczytu. |
| Synology Photos / Drive / Surveillance Station | Pakiety DSM do zdjęć, plików i obsługi monitoringu wizyjnego. | Usługi NAS, niezależne od kontenerów. Nie każda z nich jest wystawiona publicznie. |
| Mały Bielik | Eksperymentalny, lekki polski model na CPU NAS. | llama.cpp w kontenerze; prototyp pozostawiony do testów, główny agent korzysta z GPU komputera. |
Dane usług przechowuję w trwałych katalogach, niezależnych od życia kontenera. Compose definiuje polityki restartu i limity zasobów. Na tym NAS limit CPU spowodował błąd zgodności CFS, dlatego pozostawiłem ograniczenia RAM bez tej kwoty CPU.
Monitoring dostarcza danych do diagnozy, ale nie jest certyfikowanym pomiarem operatora. Na przepustowość wpływają też ruch innych urządzeń, NAS i serwer testowy. Urządzenia usypiane wymagają monitorów dopasowanych do ich normalnego działania.
Docker i AI na PC
Główny czat działa na PC. Open WebUI łączy się z Ollamą przez host.docker.internal; Ollama działa w Windows i wykorzystuje GPU. Sieć Dockera łączy WebUI z wyszukiwaniem, modułem Google, SSH Operatorem i ComfyUI.
| Komponent | Uruchomienie | Połączenie |
|---|---|---|
| Open WebUI | Docker | Ollama + narzędzia agenta |
| Ollama / Qwen3 14B | Windows | GPU inference |
| SearXNG | Docker | Wewnętrzna sieć Dockera |
| Google bridge | Docker / Python | OAuth + Gmail API + Calendar API |
| PC Observer | Windows / PowerShell | Wybrane endpointy API tylko do odczytu |
| SSH Operator | Docker / Python | Klucze SSH + audyt |
| ComfyUI | Docker / CUDA | Workflow API + trwały katalog wyników |
Skrypt logowania Windows uruchamia Docker Desktop, Ollamę i obserwator PC, czeka na gotowość Dockera i podnosi usługi Compose. Jest to start po zalogowaniu, a nie gwarantowane uruchomienie bez użytkownika po włączeniu zasilania. Start usług nie ładuje od razu dużego modelu do VRAM.
Co potrafi agent
Model wybiera funkcję i jej argumenty. Narzędzia w Pythonie wykonują żądanie, zwracają dane, a model opisuje wynik. W Open WebUI jawnie przypisuję narzędzia do modelu i włączam natywne wywoływanie funkcji.
| Możliwość | Przykładowe polecenie | Co dzieje się dalej |
|---|---|---|
| Wyszukiwanie | „Znajdź aktualności o druku 3D.” | Narzędzie tworzy zapytanie do SearXNG, odbiera wyniki i przekazuje je modelowi do podsumowania. Wyszukiwanie korzysta z Internetu, więc nie jest operacją offline. |
| Odczyt PC | „Wylistuj zainstalowane aplikacje.” | PC Observer udostępnia wybrane dane Windows przez API: aplikacje z rejestru, usługi, sieć i podsumowanie systemu. Model nie dostaje ogólnej powłoki Windows. |
| Pliki i skrypty | „Przeczytaj konfigurację i przygotuj skrypt.” | Wybrane pliki umieszczam w Context montowanym :ro. Propozycje trafiają do Do-przejrzenia z prawem zapisu; narzędzie samo ich nie wykonuje. |
| SSH | „Sprawdź stan urządzenia.” | Osobny SSH Operator łączy się kluczem z zadeklarowanym urządzeniem i zapisuje audyt. Może wykonywać rzeczywiste operacje administracyjne; uprawnienia zależą od konta na urządzeniu. |
| Gmail | „Podsumuj najnowsze wiadomości.” | Lokalny moduł Google korzysta z OAuth i Gmail API. Przekazuje ograniczone podglądy oraz liczbę pobranych wiadomości; nie utożsamiam podglądu z przeczytaniem całego maila. |
| Odpowiedzi na mail | „Przygotuj odpowiedź; pokaż mi ją.” | Najpierw powstaje szkic. Reguła pracy agenta wymaga mojego zatwierdzenia konkretnego szkicu przed wywołaniem wysyłki. |
| Kalendarz i ICS | „Sprawdź termin w załączniku i zaproponuj wydarzenie.” | Moduł odczytuje dane wydarzenia z ICS, a agent pokazuje propozycję. Dodanie następuje na moje polecenie; data otrzymania wiadomości nie jest datą spotkania. |
| Generowanie obrazów | „Przygotuj ilustrację do opowiadania.” | Narzędzie przygotowuje opis, wyładowuje model rozmowy, zleca workflow do ComfyUI, czeka na wynik i zwraca odnośnik do obrazu. Po zakończeniu żąda zwolnienia modeli. |
Udane wywołanie API i poprawna odpowiedź to dwie różne rzeczy. Sprawdzam daty źródłowe, liczbę odczytanych elementów i wygenerowane wyniki. Reguły zatwierdzania sterują zachowaniem agenta; nie zastępują autoryzacji po stronie usługi.
Współdzielenie GPU
Komputer służy mi również do grania, więc trzymanie wszystkich modeli w VRAM nie ma sensu. Ollama ma ustawiony jeden załadowany model i pięć minut keep-alive. Przed generowaniem obrazu narzędzie żąda wyładowania modeli językowych. Zleca workflow do ComfyUI, a po zapisaniu wyniku żąda zwolnienia pamięci.
Question → Ollama → tool call
Image request → unload LLM → ComfyUI → save result → unload image model
Next question → load LLM againTo sekwencyjne zarządzanie zasobami, a nie gwarancja dostępności pełnych 16 GB. Windows, ekran i inne aplikacje GPU także zajmują pamięć. RAM komputera i RAM przydzielony WSL to osobne limity; cache plików może przyspieszać ponowne ładowanie, lecz nie gwarantuje stałej obecności modelu w RAM.
Prywatność i praktyczne granice
- Wnioskowanie modeli jest lokalne, ale wyszukiwanie i integracje Google komunikują się z usługami zewnętrznymi.
- Wybrane dane PC są tylko do odczytu. Szkice mają osobny katalog zapisu. Uprawnienia SSH są odrębne i mogą pozwalać na rzeczywiste zmiany konfiguracji.
- Sekrety znajdują się poza plikami strony publicznej. Certyfikaty i dane aplikacji wymagają własnej chronionej kopii.
- Strony i maile traktuję jako niezaufane dane wejściowe. Model nadal może źle zinterpretować treść, pominąć szczegóły lub odpowiedzieć błędnie.
Laboratorium jest rozwijanym projektem prywatnym. Głos, rodzinna baza dokumentów, automatyczne wybudzanie PC i szersze generowanie mediów są planami, a nie deklaracją ukończonych funkcji.