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:
root
2026-02-05 13:09:09 +01:00
parent f0dae88639
commit 4277b10f55
21 changed files with 2636 additions and 159 deletions

View 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