From efecd0a5f5f356cffbba3ab9626e5f49da5a3a28 Mon Sep 17 00:00:00 2001 From: k0gen Date: Sun, 15 Feb 2026 15:05:57 +0100 Subject: [PATCH] =?UTF-8?q?Przyk=C5=82adowe=20=C5=9Brodowisko=20testowe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testing.md | 152 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 testing.md diff --git a/testing.md b/testing.md new file mode 100644 index 0000000..eacc63c --- /dev/null +++ b/testing.md @@ -0,0 +1,152 @@ +# Środowisko testowe: OpenZiti + Gitea + +## 1. Założenia testowe + +- 1x VPS (Linux) - kontroler + edge router OpenZiti. +- 1x NAS Synology z Dockerem - kontener Gitea, dostępny tylko przez Ziti. +- Laptopy: macOS (kilka sztuk) + 1x Ubuntu - klienci z Ziti tunnelerem. +- Cel MVP: po przyłączeniu klienta do sieci Ziti, pojawia się dostęp do Gitea pod prywatną nazwą DNS (np. `git.core`), brak publicznego dostępu z internetu. + +--- + +## 2. Rola poszczególnych elementów + +- **VPS** + - Uruchomiony Ziti Controller. + - Uruchomiony Ziti Edge Router (exposed do internetu jednym portem, np. 443). +- **NAS Synology** + - Kontener z Gitea. + - Ziti tunneler (np. w osobnym kontenerze lub jako binarka), który publikuje usługę Gitea do fabricu Ziti. +- **Laptopy (macOS / Ubuntu)** + - Ziti Desktop Edge / tunneler CLI. + - Po zalogowaniu i połączeniu z siecią: dostęp do `git.core` (Gitea). + +--- + +## 3. Konfiguracja na VPS (core OpenZiti) + +### 3.1. Instalacja i inicjalizacja + +- Zainstalować binaria OpenZiti (controller + router) wg quickstart „Community Self-Hosted”. +- Na VPS: + - wygenerować PKI (CA, certy dla controller / router), + - zainicjalizować **Ziti Controller** (konfiguracja bazy, adresu, portów), + - zainicjalizować **Ziti Edge Router** powiązany z tym controllerem. + +### 3.2. Dostęp z internetu + +- W firewallu VPS otworzyć tylko port używany przez router (np. 443/TCP). +- Skonfigurować DNS (opcjonalnie na tym etapie) np. `ziti.example.org` wskazujący na VPS, z certem TLS (LE). +- Controller może słuchać na porcie wewnętrznym, router na porcie publicznym. + +--- + +## 4. Konfiguracja tożsamości testowych + +### 4.1. Identity „router NAS” (dla Gitea) + +- Utworzyć identity w OpenZiti, np. `nas-gitea`. +- Nadać mu rolę/atrybut, np. `gitea-host`. +- Wygenerować plik identity (JSON/JWT) dla użycia przez tunneler na Synology. + +### 4.2. Identity „user-laptop-*” + +- Dla każdego testowego laptopa utworzyć identity: + - `user-laptop-macos-1`, + - `user-laptop-macos-2`, + - `user-laptop-ubuntu-1` itd. +- Nadać im rolę `member` (na tym etapie to jedyny atrybut). + +--- + +## 5. Usługa Gitea na NAS + +### 5.1. Kontener Gitea + +- Na Synology uruchomić kontener: + - Gitea (lub Forgejo) nasłuchujący lokalnie, np. na `127.0.0.1:3000` albo `nas-lan-ip:3000`. +- Nie wystawiać Gitea na WAN (brak port forward na routerze domowym). + +### 5.2. Ziti tunneler na NAS + +- Uruchomić Ziti tunneler: + - jako kontener, który ma dostęp do sieci, w której działa Gitea, + - lub jako binarka na NAS (jeżeli możliwe). +- Użyć identity `nas-gitea`, aby połączyć tunneler z controllerem/edge routerem. +- Zdefiniować **service hosting**: + - service name: `git-core`, + - typ: TCP host service, + - target: adres Gitea w LAN NAS (np. `nas-lan-ip:3000`). + +--- + +## 6. Definicja usługi i polityk w OpenZiti + +### 6.1. Service `git-core` + +- Utworzyć service w OpenZiti: + - name: `git-core`, + - protocol: `tcp`, + - intercept/dial options, aby klienci widzieli `git.core` na porcie 80/443 (lub 3000). + +### 6.2. Service Policy + +- Service Policy „`git-core-access`”: + - service roles: `@git-core`, + - identity roles: `@member`. +- Dzięki temu każdy klient z rolą `member` po zalogowaniu do sieci widzi usługę `git-core`. + +### 6.3. Private DNS + +- Skonfigurować w Ziti/klientach nazwę `git.core` jako alias dla `git-core` service. +- Laptopy po uruchomieniu tunnelera będą mogły używać adresu URL: + - `http://git.core:3000` (proste MVP), + - lub `https://git.core` (jeśli w późniejszych etapach dołożymy TLS na poziomie Gitea). + +--- + +## 7. Konfiguracja klientów (laptopy) + +### 7.1. macOS + +- Zainstalować Ziti Desktop Edge / tunneler CLI dla macOS. +- Zaimportować plik identity dla danego laptopa (`user-laptop-macos-*`). +- Po połączeniu klient: + - ustanawia sesję z edge routerem na VPS, + - uzyskuje dostęp do service `git-core`, + - dostaje wpis DNS `git.core` -> tunel overlay. + +### 7.2. Ubuntu + +- Zainstalować tunneler CLI dla Linuxa. +- Zaimportować identity `user-laptop-ubuntu-1`. +- Analogicznie: po połączeniu, dostęp do `git.core`. + +--- + +## 8. Scenariusz testowy „od zera do Gitea” + +1. Uruchom controller + edge router na VPS. +2. Uruchom Gitea w kontenerze na NAS (tylko LAN). +3. Uruchom Ziti tunneler na NAS z identity `nas-gitea` i skonfiguruj hosting service `git-core`. +4. Utwórz identity `user-laptop-*` z rolą `member` i przekaż je użytkownikom testowym. +5. Użytkownik: + - instaluje Ziti tunneler, + - importuje identity, + - łączy się z siecią Ziti. +6. Użytkownik otwiera przeglądarkę i przechodzi pod `http://git.core:3000` - powinien zobaczyć Gitea, mimo że Gitea nie ma żadnego portu otwartego na zewnątrz. + +--- + +## 9. Co mierzymy w MVP + +- Czy każdy laptop po połączeniu z siecią widzi **tylko** Gitea (1 usługa, 1 polityka). +- Stabilność połączeń przy: + - zmianie sieci (Wi-Fi domowe → hotspot → inne Wi-Fi), + - usypianiu i wybudzaniu laptopów. +- Zachowanie przy restarcie: + - VPS (controller/router), + - NAS (Gitea + tunneler), + - klientów. + +Po pozytywnych testach tego modelu można dokładać kolejne usługi (docs/chat/voting) korzystając z dokładnie tego samego wzorca.