120 lines
3.6 KiB
Markdown
Executable File
120 lines
3.6 KiB
Markdown
Executable File
# Wiki Proxy Setup - Dokumentation
|
|
|
|
## Übersicht
|
|
|
|
Das Wiki ist jetzt so konfiguriert, dass es über die Domain `doing-it.de/wiki` erreichbar ist, ohne dass Port 8080 nach außen exponiert werden muss. Dies wird durch einen Next.js API-Route-Proxy erreicht.
|
|
|
|
## Architektur
|
|
|
|
```
|
|
Browser → doing-it.de/wiki → Next.js (/wiki page) → iframe → /api/wiki/* → Wiki-Service (intern)
|
|
```
|
|
|
|
1. **Browser** greift auf `doing-it.de/wiki` zu
|
|
2. **Next.js Wiki-Seite** (`app/wiki/page.tsx`) zeigt das Wiki als iframe
|
|
3. **iframe** lädt `/api/wiki/*` (Next.js API-Route)
|
|
4. **API-Route** (`app/api/wiki/[...path]/route.ts`) leitet Requests an den internen Wiki-Service weiter
|
|
5. **Wiki-Service** läuft nur im Docker-Netzwerk, Port 8080 ist nicht nach außen exponiert
|
|
|
|
## Änderungen
|
|
|
|
### 1. Docker Compose (`docker-compose.yml`)
|
|
- Wiki-Service verwendet jetzt `expose` statt `ports`
|
|
- Port 8080 ist nur im Docker-Netzwerk erreichbar, nicht von außen
|
|
- Kommunikation zwischen Services erfolgt über Service-Namen (`wiki:8080`)
|
|
|
|
### 2. Next.js API-Route (`app/api/wiki/[...path]/route.ts`)
|
|
- Proxied alle Requests an den Wiki-Service
|
|
- Unterstützt alle HTTP-Methoden (GET, POST, PUT, DELETE)
|
|
- Weiterleitung von Headers und Query-Parametern
|
|
|
|
### 3. Wiki-Seite (`app/wiki/page.tsx`)
|
|
- Zeigt das Wiki als iframe
|
|
- Lädt über `/api/wiki` (API-Route)
|
|
- Enthält Navigation zurück zur Website
|
|
|
|
### 4. Navigation
|
|
- Link zu `/wiki` wurde bereits hinzugefügt
|
|
- Führt direkt zur Wiki-Seite mit eingebettetem Wiki
|
|
|
|
## Vorteile
|
|
|
|
✅ **Sicherheit**: Port 8080 ist nicht nach außen exponiert
|
|
✅ **Einheitliche Domain**: Alles über `doing-it.de`
|
|
✅ **Einfache Integration**: Wiki ist nahtlos in die Website eingebettet
|
|
✅ **Proxy-Funktionalität**: Alle Wiki-Ressourcen (CSS, JS, Bilder) werden korrekt weitergeleitet
|
|
|
|
## Konfiguration
|
|
|
|
### Environment Variables
|
|
|
|
Die API-Route verwendet die Umgebungsvariable `WIKI_SERVICE_URL`:
|
|
- **Standard**: `http://wiki:8080` (Docker-Service-Name)
|
|
- **Anpassung**: Kann in `docker-compose.yml` gesetzt werden
|
|
|
|
### Docker Compose
|
|
|
|
```yaml
|
|
wiki:
|
|
expose:
|
|
- "8080" # Nur intern, nicht nach außen
|
|
```
|
|
|
|
Die Services kommunizieren automatisch über das Docker-Netzwerk.
|
|
|
|
## Testing
|
|
|
|
### Lokales Testen
|
|
|
|
1. Services starten:
|
|
```powershell
|
|
docker-compose up -d
|
|
```
|
|
|
|
2. Wiki-Seite öffnen:
|
|
```
|
|
http://localhost:3001/wiki
|
|
```
|
|
|
|
3. API-Route direkt testen:
|
|
```
|
|
http://localhost:3001/api/wiki
|
|
```
|
|
|
|
### Produktion
|
|
|
|
Nach dem Deployment hinter einem Reverse Proxy (z.B. Nginx):
|
|
- Wiki ist erreichbar über `https://doing-it.de/wiki`
|
|
- Kein direkter Zugriff auf Port 8080 erforderlich
|
|
- Alle Requests gehen über die Next.js-Anwendung
|
|
|
|
## Troubleshooting
|
|
|
|
### Problem: Wiki lädt nicht im iframe
|
|
|
|
**Lösung**:
|
|
- Prüfen Sie die Browser-Konsole auf Fehler
|
|
- Überprüfen Sie, ob der Wiki-Service läuft: `docker-compose ps`
|
|
- Prüfen Sie die API-Route-Logs: `docker-compose logs web`
|
|
|
|
### Problem: CORS-Fehler
|
|
|
|
**Lösung**:
|
|
- Die API-Route setzt bereits `Access-Control-Allow-Origin: *`
|
|
- Falls weitere CORS-Header benötigt werden, in `route.ts` hinzufügen
|
|
|
|
### Problem: Wiki-Service nicht erreichbar
|
|
|
|
**Lösung**:
|
|
- Überprüfen Sie, ob beide Services im gleichen Docker-Netzwerk sind
|
|
- Prüfen Sie die Service-Namen in `docker-compose.yml`
|
|
- Testen Sie die interne Kommunikation: `docker-compose exec web ping wiki`
|
|
|
|
## Nächste Schritte
|
|
|
|
1. ✅ Wiki über Proxy erreichbar
|
|
2. ✅ Port 8080 nicht mehr exponiert
|
|
3. ✅ Einheitliche Domain (`doing-it.de/wiki`)
|
|
4. Optional: Reverse Proxy (Nginx/Traefik) für HTTPS und Domain-Routing konfigurieren
|
|
|