Przykładowe środowisko testowe
This commit is contained in:
152
testing.md
Normal file
152
testing.md
Normal 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.
|
||||
Reference in New Issue
Block a user