Kanbanize Kartenerstellung dokumentiert: Arrival-Rule-Workaround, Board-Struktur
- Neuer Abschnitt "Karten erstellen (Aufgaben-Workflow)" mit Workflow A/B - Bekannte Struktur erweitert: Workflows, Columns, Lanes für Board 1 - Pitfalls ergänzt: Arrival Rule, Parent-Link API, linkedCards read-only - Settings und Plans aktualisiert Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
173
plans/serialized-swimming-corbato.md
Normal file
173
plans/serialized-swimming-corbato.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# Fix: OAuth Callback 403 Forbidden - WEBHOOK_URL und BASE_URL fehlen Prefix
|
||||
|
||||
## Aktuelle Situation (Stand 2026-02-05)
|
||||
|
||||
**Problem:** OAuth-Callback zu `flow.wvits.de/rest/oauth2-credential/callback` schlägt mit **403 Forbidden** fehl.
|
||||
|
||||
**Screenshot zeigt:** Callback-URL hat **KEINEN Prefix** → nginx blockt mit 403.
|
||||
|
||||
## Root Cause Analyse
|
||||
|
||||
### Gefundene Probleme:
|
||||
|
||||
1. ✅ **WEBHOOK_URL ohne Prefix** (Hauptursache)
|
||||
```yaml
|
||||
# docker-compose.yml auf srv-docker02
|
||||
# WEBHOOK_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/ # ← Auskommentiert!
|
||||
WEBHOOK_URL=https://flow.wvits.de/ # ← Aktiv, OHNE Prefix
|
||||
```
|
||||
→ OAuth-Callbacks gehen zu `/rest/oauth2-credential/callback` statt `/PREFIX/rest/oauth2-credential/callback`
|
||||
|
||||
2. ✅ **N8N_EDITOR_BASE_URL fehlt**
|
||||
```yaml
|
||||
# N8N_EDITOR_BASE_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/ # ← Auskommentiert
|
||||
```
|
||||
→ n8n nutzt Fallback (`N8N_PROTOCOL + N8N_HOST`), aber ohne Prefix
|
||||
→ UI-Redirects, WebSocket-URLs, Asset-Loading könnten fehlschlagen
|
||||
|
||||
3. ⚠️ **nginx blockt alles ohne Prefix**
|
||||
```nginx
|
||||
# /home/vinosadmin/n8n-reverse-proxy/nginx.conf auf srv-revproxy01
|
||||
location / { return 403; } # ← Catch-All blockt
|
||||
```
|
||||
→ Nur Requests unter `/77ba0b14e9ccd5521a0ec1867332378c/` werden weitergeleitet
|
||||
|
||||
4. ℹ️ **NPM Asset-Cache existiert** (kein direktes Problem, aber Pitfall)
|
||||
- Cache-Key: `$host$request_uri` (ohne Client-IP)
|
||||
- Könnte 403-Responses cachen wenn externer Client Assets abruft
|
||||
- Aktuell: Cache leer, kein Problem
|
||||
|
||||
5. ℹ️ **Custom Certificates Mount-Error** (kein Problem für OAuth)
|
||||
- `/opt/custom-certificates` Access denied
|
||||
- Betrifft nur HTTPS zu internen Services mit Custom CA
|
||||
- SMTP ist unverschlüsselt (SSL=false), kein Impact
|
||||
|
||||
## Fix-Plan
|
||||
|
||||
### Schritt 1: n8n docker-compose.yml korrigieren (srv-docker02)
|
||||
|
||||
**SSH:** `ssh vinosadmin@srv-docker02`
|
||||
|
||||
**Datei:** `/home/vinosadmin/n8n/docker-compose.yml`
|
||||
|
||||
**Änderungen:**
|
||||
|
||||
```yaml
|
||||
# 1. WEBHOOK_URL mit Prefix aktivieren (Zeile ~31)
|
||||
# WEBHOOK_URL=https://flow.wvits.de/
|
||||
WEBHOOK_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
|
||||
|
||||
# 2. N8N_EDITOR_BASE_URL mit Prefix hinzufügen (nach N8N_PROXY_HOPS)
|
||||
N8N_EDITOR_BASE_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
|
||||
```
|
||||
|
||||
**Begründung:**
|
||||
- `WEBHOOK_URL`: n8n nutzt diese für OAuth-Callback-URLs und Webhook-Generierung
|
||||
- `N8N_EDITOR_BASE_URL`: n8n nutzt diese für UI-Redirects, WebSocket-URLs, Asset-Pfade
|
||||
|
||||
### Schritt 2: Container neu starten
|
||||
|
||||
```bash
|
||||
cd /home/vinosadmin/n8n
|
||||
docker compose down
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
**Warum `down` statt `restart`?**
|
||||
- Environment-Variablen werden nur beim `up` neu eingelesen
|
||||
- `restart` behält alte Env-Vars bei
|
||||
|
||||
### Schritt 3: Verifikation
|
||||
|
||||
**A) Container-Status prüfen:**
|
||||
```bash
|
||||
docker compose ps
|
||||
docker compose logs -f n8n-main | head -20
|
||||
```
|
||||
|
||||
**B) Environment-Variablen verifizieren:**
|
||||
```bash
|
||||
docker exec n8n-n8n-main-1 env | grep -E "(WEBHOOK_URL|EDITOR_BASE_URL)"
|
||||
```
|
||||
|
||||
Erwartete Ausgabe:
|
||||
```
|
||||
WEBHOOK_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
|
||||
N8N_EDITOR_BASE_URL=https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/
|
||||
```
|
||||
|
||||
**C) OAuth-Flow testen:**
|
||||
1. n8n UI öffnen: `https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/`
|
||||
2. Credentials → Microsoft Teams account 2 → "Connect my account"
|
||||
3. Microsoft-Login → Callback sollte zu `/PREFIX/rest/oauth2-credential/callback` gehen
|
||||
4. Erfolgreich: "Connected" - Credential ist authorisiert
|
||||
|
||||
**D) Nginx-Logs prüfen (falls 403):**
|
||||
```bash
|
||||
# Auf srv-revproxy01
|
||||
ssh -J sshtest@10.10.254.201 vinosadmin@srv-revproxy01
|
||||
docker logs --tail 50 n8n-reverse-proxy-nginx-1 2>&1 | grep oauth
|
||||
```
|
||||
|
||||
### Schritt 4 (Optional): NPM-Cache leeren
|
||||
|
||||
Falls nach dem Fix immer noch Probleme auftreten:
|
||||
```bash
|
||||
# Auf srv-revproxy01
|
||||
ssh -J sshtest@10.10.254.201 vinosadmin@srv-revproxy01
|
||||
docker exec npm sh -c 'rm -rf /var/lib/nginx/cache/public/*'
|
||||
docker exec npm nginx -s reload
|
||||
```
|
||||
|
||||
## Geänderte Dateien
|
||||
|
||||
| Datei | Host | Änderung |
|
||||
|-------|------|----------|
|
||||
| `/home/vinosadmin/n8n/docker-compose.yml` | srv-docker02 | WEBHOOK_URL + N8N_EDITOR_BASE_URL mit Prefix |
|
||||
|
||||
## Sicherheit & Impact
|
||||
|
||||
**Was ändert sich:**
|
||||
- OAuth-Callbacks gehen nun zu `/PREFIX/rest/oauth2-credential/callback` (mit Prefix)
|
||||
- nginx leitet alle `/PREFIX/*` Requests weiter (bestehende IP-Kontrolle bleibt)
|
||||
- Keine Änderungen an Firewall-Regeln oder nginx-Config
|
||||
|
||||
**Keine Regression:**
|
||||
- Bestehende Webhooks (UPS-Workflow) unverändert: `/PREFIX/webhook/*`
|
||||
- Interner Zugang via n8n.vinos.de weiterhin funktional
|
||||
- Externe Webhooks weiterhin erlaubt (`allow all` in Webhook-Block)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Falls OAuth immer noch 403:
|
||||
|
||||
**A) Callback-URL prüfen:**
|
||||
```bash
|
||||
# Browser DevTools → Network Tab → OAuth-Redirect URL ansehen
|
||||
# Sollte sein: flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/rest/oauth2-credential/callback
|
||||
# NICHT: flow.wvits.de/rest/oauth2-credential/callback
|
||||
```
|
||||
|
||||
**B) Container-Logs prüfen:**
|
||||
```bash
|
||||
docker compose logs n8n-main | grep -i webhook
|
||||
```
|
||||
|
||||
**C) nginx-Logs prüfen:**
|
||||
```bash
|
||||
# Auf srv-revproxy01
|
||||
docker logs --tail 100 n8n-reverse-proxy-nginx-1 2>&1 | grep "403\|oauth"
|
||||
```
|
||||
|
||||
### Falls SPA nicht lädt (weiße Seite):
|
||||
|
||||
**NPM-Cache leeren** (gecachte 403-Responses):
|
||||
```bash
|
||||
# Auf srv-revproxy01
|
||||
docker exec npm sh -c 'rm -rf /var/lib/nginx/cache/public/*'
|
||||
docker exec npm nginx -s reload
|
||||
```
|
||||
|
||||
**Browser-Cache leeren:**
|
||||
- Ctrl+Shift+R (Hard Reload)
|
||||
- Oder Incognito-Fenster
|
||||
Reference in New Issue
Block a user