Przykładowe środowisko testowe

This commit is contained in:
2026-02-15 15:05:57 +01:00
parent 9be3104f92
commit efecd0a5f5

152
testing.md Normal file
View File

@@ -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.