# 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