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

3.6 KiB
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

wiki:
  expose:
    - "8080"  # Nur intern, nicht nach außen

Die Services kommunizieren automatisch über das Docker-Netzwerk.

Testing

Lokales Testen

  1. Services starten:
docker-compose up -d
  1. Wiki-Seite öffnen:
http://localhost:3001/wiki
  1. 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