Files
doing-it-website/WIKI-PROXY-SETUP.md
2025-11-29 03:01:04 +01:00

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