مرحبا بالجميع،
أقوم بتشغيل n8n محليًا عبر Docker Compose خلف Plesk (Ubuntu 20.04،
Plesk Obsidian 18.0.78)، مع nginx كخادم وكيل عكسي أمام Docker.
الإعداد:
- صورة n8n الرسمية على Docker (n8nio/n8n)
- الخادم الوكيل العكسي: nginx من Plesk (يتوسط إلى Apache، ثم إلى حاوية Docker
على المنفذ 5678) - النطاق: نطاق فرعي مع شهادة SSL خاصة به (Let’s Encrypt عبر Plesk)
متغيرات البيئة المعينة بالفعل:
N8N_HOST=bot.publicides.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://bot.publicides.com/
N8N_SECURE_COOKIE=false
N8N_TRUST_PROXY=true
N8N_PROXY_HOPS=2
N8N_PUSH_BACKEND=sse
N8N_EDITOR_BASE_URL=https://bot.publicides.com/
توجيهات nginx الإضافية المضافة بالفعل:
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_set_header Host $host;
proxy_pass_request_headers on;
المشكلة:
أي إجراء محرر مباشر (Execute previous nodes، Test this trigger، حتى
فقط فتح علامة التبويب Executions) يفشل مع “Problem running workflow —
Lost connection to the server” في واجهة المستخدم.
سجلات Docker تعرض هذا الخطأ المتكرر:
Origin header does NOT match the expected origin. (Origin: “undefined”
→ “N/A”, Expected: “undefined” → “undefined”, Protocol: “undefined”)
ResponseError: Invalid origin!
at Push.handleRequest (/usr/local/lib/node_modules/n8n/src/push/index.ts:157:10)
at /usr/local/lib/node_modules/n8n/src/push/index.ts:112:17
at Layer.handleRequest (…router/lib/layer.js:152:17)
…
at /usr/local/lib/node_modules/n8n/src/auth/auth.service.ts:158:18
ما استبعدته بالفعل:
- موارد الخادم جيدة (RAM ~72% مستخدم لكن هناك مساحة كبيرة، CPU منخفض،
استخدام قرص منخفض) - ليست مشكلة المتصفح/الذاكرة المؤقتة — نفس الخطأ في وضع التصفح المتخفي، متصفح مختلف،
جهاز مختلف، وبيانات الهاتف المحمول بدلاً من WiFi - حاوية Docker تعمل وسليمة (docker ps يؤكد “Up”)
- Webhooks تعمل بشكل جيد — POST curl يدوي إلى عنوان URL webhook الإنتاج
يعيد {“message”:“Webhook call received”} وسير العمل ينفذ
بشكل صحيح من البداية إلى النهاية (تم التأكد من تحديث جدول Google Sheet الهدف) - النطاق NOT من خلال Cloudflare (DNS فقط / grey cloud)
لذلك تنفيذ سير العمل الفعلي عبر webhook يعمل بشكل مثالي — فقط
اتصال WebSocket/SSE push المحرر المباشر يفشل، يبدو أنه مرفوض
بسبب عدم تطابق رأس Origin في مكان ما بين nginx وخدمة auth من n8n.
هل واجه أي شخص هذا الخطأ “Invalid origin” push المحدد مع
إعداد nginx من Plesk؟ هل هناك متغير env أو توجيه nginx إضافي
مطلوب لإعادة توجيه/تعيين رأس Origin بشكل صحيح لنقطة النهاية push؟
شكرا مقدما!