شروحات تعليمية March 31, 2026 6 مشاهدة

تشغيل n8n محلياً في دقائق: دليل عملي لبناء بيئة أتمتة كاملة بـ Docker Compose

هل تريد تشغيل n8n على جهازك المحلي مع قاعدة بيانات PostgreSQL ونفق Ngrok للـ Webhooks — كل ذلك بأمر واحد فقط؟ في هذا الدليل العملي، نشرح كيف تبني بيئة أتمتة متكاملة باستخدام Docker Compose.

لماذا تحتاج بيئة n8n محلية؟

منصة n8n هي أداة أتمتة مفتوحة المصدر تتيح لك بناء سير عمل ذكي يربط بين مئات التطبيقات والخدمات. النسخة السحابية (n8n Cloud) ممتازة للبدء السريع، لكن التشغيل المحلي يمنحك تحكماً كاملاً في بياناتك، ولا حدود على عدد التنفيذات، وإمكانية التخصيص الكامل — وكل ذلك مجاناً.

المشكلة؟ التشغيل المحلي يحتاج إعداد قاعدة بيانات منفصلة، وحل مشكلة الـ Webhooks (لأن الخدمات الخارجية مثل Telegram لا تستطيع الوصول لـ localhost). هنا يأتي دور Docker Compose — حزمة واحدة تحل كل شيء.

ما الذي يحتويه هذا الـ Stack؟

الحزمة تحتوي على ثلاثة مكونات تعمل معاً بتناغم داخل Docker:

1. n8n — محرك الأتمتة الأساسي. يعمل على المنفذ 5678 ويوفر واجهة مرئية لبناء سير العمل بالسحب والإفلات. يستخدم PostgreSQL كقاعدة بيانات بدلاً من SQLite الافتراضي.

2. PostgreSQL 16 — قاعدة بيانات قوية تخزن كل سير العمل والتنفيذات. تعمل بنسخة Alpine خفيفة مع Health Check تلقائي.

3. Ngrok — ينشئ نفقاً آمناً يربط جهازك المحلي بالإنترنت. هذا يعني أن Telegram وأي خدمة خارجية تستطيع إرسال Webhooks لـ n8n على جهازك.

ملف Docker Compose الكامل

yaml
version: '3.8'

services:
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=n8n_password
      - POSTGRES_DB=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U n8n -d n8n']
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=n8n_password
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - NODE_ENV=production
      - GENERIC_TIMEZONE=Asia/Amman
    ports:
      - "5678:5678"
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      - n8n_data:/home/node/.n8n

  ngrok:
    image: ngrok/ngrok:latest
    restart: unless-stopped
    command:
      - "http"
      - "http://n8n:5678"
      - "--log"
      - "stdout"
    environment:
      - NGROK_AUTHTOKEN=${NGROK_AUTHTOKEN}
    ports:
      - "4040:4040"
    depends_on:
      - n8n

volumes:
  postgres_data:
  n8n_data:

خطوات التشغيل

1. ثبّت Docker Desktop من docker.com وتأكد أنه يعمل.

2. سجّل حساب Ngrok مجاني على ngrok.com واحصل على الـ Authtoken.

3. أنشئ ملف .env في نفس المجلد:

bash
NGROK_AUTHTOKEN=your_token_here

4. شغّل الحزمة:

bash
docker compose up -d

5. افتح n8n على http://localhost:5678 وأنشئ حساب المدير.

6. اعرف رابط Ngrok من http://localhost:4040/api/tunnels — استخدمه لربط Webhooks.

ربط Telegram Bot مع n8n المحلي

أنشئ بوت عبر @BotFather على Telegram واحصل على Bot Token. في n8n، أضف عقدة Telegram Trigger واربطها بالـ Token. Ngrok يتكفل بتحويل الرابط العام إلى localhost تلقائياً. فعّل الـ Workflow وجرّب!

نصيحة: احصل على Static Domain مجاني من Ngrok حتى لا يتغير الرابط كل مرة:

yaml
command:
  - "http"
  - "--url=your-domain.ngrok-free.app"
  - "http://n8n:5678"

لماذا PostgreSQL وليس SQLite؟

n8n افتراضياً يستخدم SQLite — ممتازة للتجربة لكن قد تسبب مشاكل مع التنفيذات المتزامنة. PostgreSQL يوفر أداءً أفضل بكثير ودعم للعمليات المتزامنة — والانتقال لا يكلفك شيئاً إضافياً في Docker Compose.

حالات استخدام عملية

مع هذا الـ Stack يمكنك بناء: بوت Telegram ذكي يرد بالذكاء الاصطناعي، نظام طلبات إجازة آلي، مراقب أسعار منتجات، محلل سير ذاتية، ومساعد HR ذكي يعرف بيانات الموظفين ويتذكر المحادثات السابقة.

ابدأ الآن

كل ما تحتاجه: جهاز مع Docker وحساب Ngrok مجاني. في أقل من 5 دقائق، ستمتلك بيئة أتمتة كاملة تعمل محلياً — بدون اشتراكات، بدون قيود، وبدون القلق على خصوصية بياناتك.

شارك المقال
شبّك

أعجبك المقال؟ اكتشف المزيد!

تصفح مكتبتنا الشاملة من الأوامر الجاهزة والمقالات المتخصصة في الذكاء الاصطناعي