Sora Yazılım
العربية
حلول برمجية مخصصة من تركيا

الاستضافة الذاتية لـ n8n: دليل الإعداد الكامل باستخدام Docker

Sora Yazılım Ekibi

n8n self-hosting Docker تشغيل n8n على بنيتك التحتية الخاصة يمنحك السيادة على البيانات وسير عمل غير محدودة وتكاليف يمكن التنبؤ بها. يتيح لك Docker Compose إنشاء بيئة معزولة وقابلة للتكرار في دقائق.

ما هي الاستضافة الذاتية لـ n8n ولماذا تختارها؟

الاستضافة الذاتية لـ n8n تعني تشغيل محرك سير العمل على خادمك الخاص أو على جهاز افتراضي في السحابة. لا تمر بياناتك أبداً عبر خوادم جهات خارجية؛ ولا توجد حدود شهرية للتنفيذ وتكاليف الترخيص ثابتة.

السيادة على البيانات متطلب صارم في البيئات المؤسسية. تُلزم الأطر التنظيمية في القطاع المالي والرعاية الصحية والقطاع العام بمعالجة بيانات العملاء على بنية تحتية محلية أو خاصة. عند استخدام n8n Cloud، تمر جميع بيانات سير العمل عبر خوادم شركة n8n GmbH. يلغي نموذج الاستضافة الذاتية هذا الخطر كلياً: تُعالَج البيانات فقط في الأنظمة الخاضعة لسيطرتك.

تبدو الصورة مختلفة من ناحية التكلفة. يُظهر استعراض مقارنة أسعار n8n Cloud والاستضافة الذاتية أن الرسوم الشهرية لخطة السحابة ترتفع بسرعة مع زيادة عدد سير العمل وحجم التنفيذ. على خادمك الخاص تدفع فقط تكاليف البنية التحتية؛ الإصدار المجتمعي من n8n مجاني تماماً ومفتوح المصدر. يمكنك التعرف على المزيد حول قدرات أتمتة سير العمل المؤسسية في n8n في الدليل المخصص.

سبب اللجوء إلى Docker واضح: يوفر بيئة تشغيل نظيفة ومعزولة، ويمنع تعارض التبعيات، ويتيح لك إصدار الحزمة بأكملها في ملف تكوين واحد. توصي n8n رسمياً بالنشر المعتمد على Docker، والصورة الرسمية على Docker Hub تُحدَّث باستمرار.

متطلبات النظام

للاستخدام في الشركات الصغيرة والمتوسطة، يكفي 2 وحدة معالجة مركزية افتراضية و4 جيجابايت ذاكرة وصول عشوائي و40 جيجابايت SSD. تتطلب أحمال العمل الكثيفة أو التزامن العالي مضاعفة هذه الأرقام.

يوضح الجدول أدناه الحد الأدنى الموصى به ومتطلبات الأجهزة للإنتاج لسيناريوهات استخدام مختلفة. مشتقة القيم من الوثائق الرسمية لـ n8n والخبرة الميدانية؛ تتفاوت المتطلبات الفعلية حسب حجم العمل.

السيناريوvCPUالذاكرةSSDملاحظات
مستخدم واحد / اختبار11 جيجابايت10 جيجابايتSQLite، حجم منخفض
شركة صغيرة / وكالة (موصى به)24 جيجابايت40 جيجابايتPostgreSQL، حمل معتدل
نطاق متوسط / وضع قائمة انتظار48 جيجابايت80 جيجابايتRedis + عمال، حجم عالٍ
نطاق كبير / توافر عالٍ8+16 جيجابايت+200 جيجابايت+عمال متعددون، موازن حمل

يُوصى باستخدام Ubuntu 22.04 LTS أو Debian 12 كنظام تشغيل. يجب تثبيت Docker Engine 24+ وDocker Compose v2.x. استخدم UFW لإدارة جدار الحماية وCertbot أو Caddy لإدارة شهادات SSL. تأكد من أن سجل A للنطاق يشير إلى الخادم؛ سجل A صالح ضروري لإصدار شهادة HTTPS.

الإعداد باستخدام Docker Compose

عرّف n8n وPostgreSQL وNginx وRedis الاختياري في ملف docker-compose.yml واحد لإنشاء بنية تحتية مُصدَّرة بإصدارات وقابلة للتكرار. تُدار جميع متغيرات البيئة من خلال ملف .env.

أنشئ مجلد المشروع وجهّز الهيكل التالي. استخدم ملف .env لكلمات المرور والقيم الحساسة؛ لا تُدرج هذا الملف أبداً في مستودع Git.

  1. mkdir -p ~/n8n-stack && cd ~/n8n-stack — أنشئ مجلد المشروع.
  2. أضف N8N_ENCRYPTION_KEY وPOSTGRES_PASSWORD وN8N_HOST إلى ملف .env.
  3. أنشئ docker-compose.yml: عرّف خدمة n8n (image: n8nio/n8n)، وخدمة postgres، وخدمة nginx (وكيل عكسي)، وخدمة redis الاختيارية.
  4. استخدم وحدات تخزين مسماة للبيانات الدائمة: n8n_data وpostgres_data.
  5. شغّل الحزمة في الخلفية بأمر docker compose up -d.
  6. راقب بدء التشغيل بـ docker compose logs -f n8n وأكمل معالج الإعداد الأولي.

المتغيرات البيئية الحرجة لخدمة n8n في docker-compose.yml: DB_TYPE=postgresdb وDB_POSTGRESDB_HOST=postgres وN8N_ENCRYPTION_KEY (عشوائي، 32+ حرف) وWEBHOOK_URL (النطاق الكامل) وN8N_BASIC_AUTH_ACTIVE=false (عند استخدام المصادقة المدمجة). لخدمة PostgreSQL، عيّن POSTGRES_DB وPOSTGRES_USER وPOSTGRES_PASSWORD. يجب أن تتواصل جميع الخدمات عبر شبكة Docker مخصصة واحدة حتى تتمكن الحاويات من تحليل أسماء بعضها دون الكشف عن المنافذ الداخلية.

بعد اكتمال الإعداد، انتقل إلى https://n8n.شركتك.com في متصفحك. سيظهر معالج التشغيل الأول لإنشاء حساب المسؤول. فعّل المصادقة الثنائية من قائمة الإعدادات فور إنشاء الحساب.

قاعدة البيانات: SQLite أم PostgreSQL؟

SQLite مناسبة فقط لبيئات الاختبار ذات المستخدم الواحد. يجب استخدام PostgreSQL في الإنتاج: تُحفظ البيانات عند إعادة التشغيل، وأدوات النسخ الاحتياطي ناضجة، ووضع قائمة الانتظار يتطلب PostgreSQL.

يستخدم n8n SQLite افتراضياً. رغم جاذبية ذلك لسهولة البدء السريع، قد تُسبب SQLite تعارضات قفل الكتابة عند الوصول المتزامن وتتباطأ مع سجلات التنفيذ الكبيرة. قد يُؤدي ربط وحدة التخزين بشكل خاطئ أيضاً إلى فقدان البيانات عند إعادة تشغيل حاوية Docker.

الميزةSQLitePostgreSQL
سهولة الإعدادعالية (مدمجة)متوسطة (خدمة منفصلة)
استقرار الإنتاجمنخفضعالٍ
الوصول المتزامنمحدوددعم كامل
أدوات النسخ الاحتياطيأساسيةpg_dump، WAL، Barman
دعم وضع قائمة الانتظارلانعم
قابلية التوسعخادم واحدتوسع أفقي

للترحيل إلى PostgreSQL، صدّر سير عملك بتنسيق JSON من الإعدادات > التصدير في نسخة n8n الحالية، ثم استوردها في النسخة الجديدة المدعومة بـ PostgreSQL. لا يمكن ترحيل سجل التنفيذ؛ تُنقل تعريفات سير العمل فقط. لذا فإن اختيار PostgreSQL من البداية هو النهج الصحيح.

الوكيل العكسي وHTTPS وإعداد النطاق

لنشر n8n على الإنترنت، قم بإعداد وكيل عكسي باستخدام Nginx أو Caddy والحصول على شهادة SSL صالحة. يدير Caddy الشهادات تلقائياً؛ Nginx أكثر انتشاراً ومرونة.

تكوين الوكيل العكسي الأساسي لـ Nginx: استمع على المنفذ 5678 لحاوية n8n كـ upstream، وأعد توجيه حركة مرور HTTP على المنفذ 80 إلى 443، وعرّف مسارات شهادات SSL على المنفذ 443، وأضف رؤوس proxy_http_version 1.1 وUpgrade وConnection لدعم WebSocket. دعم WebSocket ضروري لمحرر سير العمل الفوري في n8n.

عند استخدام Caddy، يبسط التكوين بشكل ملحوظ. ما عليك سوى كتابة نطاقك وعنوان الواجهة الخلفية في Caddyfile؛ يحصل Caddy تلقائياً على شهادة SSL من Let's Encrypt ويجددها. يدعم Caddy v2 أيضاً التكوين الديناميكي عبر JSON API.

  • Nginx: احصل على شهادة Let's Encrypt بأمر certbot --nginx -d n8n.شركتك.com وأعدد مهمة cron للتجديد التلقائي.
  • Caddy: فعّل الوكيل العكسي بتوجيه reverse_proxy n8n:5678؛ إدارة الشهادات تلقائية.
  • في كلتا الحالتين، عيّن متغير البيئة WEBHOOK_URL في n8n ليساوي عنوان HTTPS الكامل.
  • إعداد مؤقت Nginx: proxy_read_timeout 300s؛ ارفع قيمة المهلة الزمنية لتنفيذ سير العمل طويلة الأمد.

وضع قائمة الانتظار والتوسع الأفقي

يوزّع وضع قائمة انتظار n8n تنفيذ سير العمل على عدة عمليات عاملة عبر قوائم انتظار Redis. يتولى نسخة n8n الرئيسية إدارة webhooks وواجهة المستخدم بينما يعالج العمال التنفيذ في الخلفية.

في التكوين الافتراضي، تُنفَّذ جميع المهام بالتسلسل في عملية n8n واحدة. عند ارتفاع عدد سير العمل المتزامنة أو عرقلة المهام طويلة الأمد لتنفيذات أخرى، ينبغي تفعيل وضع قائمة الانتظار. مقارنةً بـ Zapier وMake، تُعدّ المرونة التي يوفرها n8n عبر وضع قائمة الانتظار أحد أبرز مزاياه.

لتفعيل وضع قائمة الانتظار، أضف خدمة Redis إلى docker-compose.yml وعيّن متغيرات البيئة التالية لخدمة n8n: EXECUTIONS_MODE=queue وQUEUE_BULL_REDIS_HOST=redis وQUEUE_BULL_REDIS_PORT=6379. ثم عرّف خدمة عامل منفصلة: استخدم نفس صورة n8n لكن عيّن الأمر إلى n8n worker --concurrency=5. يجب أن تشترك خدمة العامل في نفس وحدات التخزين والشبكة مع خدمة n8n الرئيسية.

  • وسّع العمال ديناميكياً بأمر docker compose up -d --scale n8n-worker=3.
  • اضبط قيمة --concurrency لكل عامل وفقاً لعدد وحدات المعالجة المركزية في الخادم.
  • عيّن Redis maxmemory-policy إلى noeviction؛ يجب ألا تُزاح بيانات قائمة الانتظار.
  • استخدم Bull Dashboard أو عرض قائمة انتظار التنفيذ المدمج في n8n للمراقبة.

الأمان والنسخ الاحتياطي والتحديثات

يتطلب نشر n8n الإنتاجي جدار حماية UFW والمصادقة بمفتاح SSH وfail2ban والمصادقة الثنائية المدمجة وN8N_ENCRYPTION_KEY مشفراً. استخدم pg_dump لـ PostgreSQL وأتمتة مجلد بيانات n8n للنسخ الاحتياطي.

دليل شامل متاح حول أمان n8n وحوكمة المؤسسات. خطوات الأمان الأساسية: فعّل UFW وأتح المنافذ 22 (SSH، منفذ غير افتراضي) و80 (HTTP) و443 (HTTPS) فقط. قصّر SSH على المصادقة بالمفتاح وعطّل تسجيل الدخول بكلمة المرور. ثبّت fail2ban للحماية من هجمات القوة الغاشمة.

خصوصيات أمان n8n: عيّن متغير البيئة N8N_ENCRYPTION_KEY بقيمة عشوائية قوية؛ إذا فُقد هذا المفتاح، لا يمكن استرداد بيانات الاعتماد المشفرة. فعّل المصادقة الثنائية المدمجة في n8n فور أول تسجيل دخول. اعتمد على نظام إدارة المستخدمين الخاص بـ n8n بدلاً من N8N_BASIC_AUTH_ACTIVE.

  • النسخ الاحتياطي: خذ نسخاً احتياطية يومية لـ PostgreSQL باستخدام pg_dump وأرسلها إلى مخزن كائنات متوافق مع S3 (MinIO أو AWS S3).
  • نسخ احتياطي لمجلد بيانات n8n: انسخ مجلد وحدة تخزين n8n_data باستخدام rsync أو tar.
  • التحديثات: اسحب صورة n8n الجديدة بـ docker compose pull وأعد تشغيل الخدمات بـ docker compose up -d --force-recreate. دائماً خذ نسخة احتياطية قبل التحديث.
  • تثبيت الإصدار: استخدم في docker-compose.yml علامة محددة مثل n8nio/n8n:1.x.x بدلاً من n8nio/n8n:latest للحماية من التغييرات العطيرة غير المتوقعة.
  • إدارة السجلات: استخدم مشغّل سجلات Docker من نوع json-file وعيّن حدود max-size/max-file.

للتدقيق الأمني المنتظم، استرشد بمعايير CIS Benchmarks وأتمت تحديثات نظام التشغيل (unattended-upgrades). تابع ملاحظات إصدارات مجتمع n8n وطبّق تصحيحات الأمان الحرجة في أقرب وقت. فريق Sora DevOps يساعد العملاء على بناء بنية تحتية صحيحة لاستضافة n8n ذاتياً من البداية — تواصل معنا لتحديد موعد استشارة مجانية لتخطيط مشروعك.

الأسئلة الشائعة

هل Docker ضروري للاستضافة الذاتية لـ n8n؟

Docker ليس إلزامياً؛ يمكن تثبيت n8n مباشرة في بيئة Node.js. غير أن n8n توصي رسمياً بـ Docker لبيئة التشغيل المعزولة وسهولة التحديثات وإدارة التبعيات. Docker Compose هو الخيار الأكثر عملية.

ماذا أختار: SQLite أم PostgreSQL؟

SQLite كافية للاختبار وسيناريوهات المستخدم الواحد. في الإنتاج استخدم PostgreSQL دائماً: تضمن سلامة البيانات عند إعادة التشغيل، وتوفر أدوات نسخ احتياطي قوية، وتُطلبها وضع قائمة الانتظار.

كم من موارد الخادم تحتاج الاستضافة الذاتية لـ n8n؟

للشركات الصغيرة والوكالات، يناسب 2 vCPU و4 جيجابايت ذاكرة و40 جيجابايت SSD. للأحمال الثقيلة أو التزامن العالي، يُوصى بـ 4 vCPU و8 جيجابايت ذاكرة؛ وضع قائمة الانتظار يتيح التوسع الأفقي.

كيف أُعدّ HTTPS؟

قم بإعداد وكيل عكسي باستخدام Nginx أو Caddy. مع Nginx، استخدم Certbot للحصول على شهادة Let's Encrypt وإعداد التجديد التلقائي. مع Caddy، إدارة الشهادات تلقائية؛ ما عليك سوى كتابة النطاق وعنوان الواجهة الخلفية في Caddyfile.

كيف أوسّع n8n أفقياً؟

فعّل وضع قائمة الانتظار: أضف Redis إلى docker-compose.yml وعيّن EXECUTIONS_MODE=queue وعرّف خدمة عامل. استخدم docker compose up --scale n8n-worker=N لزيادة عدد العمال.

كيف أحدّث n8n في Docker؟

خذ نسخة احتياطية لـ PostgreSQL أولاً. ثم اسحب الصورة الجديدة بـ docker compose pull وأعد تشغيل الخدمات بـ docker compose up -d --force-recreate. تثبيت علامة الإصدار يحمي من التغييرات العطيرة.

كيف أجري نسخاً احتياطياً لـ n8n؟

استخدم pg_dump لنسخ احتياطية يومية مؤتمتة لـ PostgreSQL وأرسلها إلى مخزن كائنات متوافق مع S3. انسخ مجلد بيانات n8n (وحدة التخزين: n8n_data) بالمثل. احتفظ بـ N8N_ENCRYPTION_KEY المشفر في خزنة آمنة.

الخلاصة

الاستضافة الذاتية لـ n8n بثلاثي Docker Compose وPostgreSQL وNginx تمنحك بنية تحتية للأتمتة على مستوى المؤسسات. السيادة على البيانات والتكاليف المتوقعة وسعة سير العمل غير المحدودة تجعل نموذج الاستضافة الذاتية متفوقاً بوضوح على البديل السحابي. إضافة وضع قائمة الانتظار مع دعم Redis يجعل النظام قابلاً للتوسع أفقياً ويقلل من خطر نقطة الفشل الواحدة.

التكوين الصحيح للأمان والنسخ الاحتياطي منذ البداية هو أساس الصحة التشغيلية على المدى الطويل. يُقلّص الجمع بين UFW وfail2ban والمصادقة بمفتاح SSH والمصادقة الثنائية المدمجة في n8n سطح الهجوم بشكل ملحوظ. فريق Sora DevOps جاهز لمساعدتك في التخطيط والنشر وتحسين بنيتك التحتية لاستضافة n8n ذاتياً — تواصل معنا لجلسة استكشاف مجانية.

هل تحتاج مساعدة في مواضيع هذا المقال؟

احجز مكالمة استكشاف مجانية مع Sora Yazılım — سنقترح خارطة طريق واضحة.