تثبيت n8n: أتمتة سير العمل المستضافة ذاتياً
تثبيت n8n عبر Docker، تكاملات webhook، إنشاء سير العمل، ربط 400+ تطبيق، المهام المجدولة، إدارة بيانات الاعتماد والنشر في بيئة الإنتاج.
جدول المحتويات
تثبيت n8n: أتمتة سير العمل المستضافة ذاتياً
n8n هي منصة أتمتة سير العمل مفتوحة المصدر بواجهة مرئية يمكنها ربط 400+ تطبيق وخدمة. يمكنك تشغيلها على خادمك الخاص كبديل مستضاف ذاتياً لخدمات مثل Zapier وMake (Integromat). يمكنك إنشاء أتمتة معقدة دون كتابة كود، أو إضافة منطق مخصص باستخدام JavaScript/Python.
ما هو n8n؟
n8n (اختصار لـ "nodemation") يتيح لك بناء سير عمل باستخدام البرمجة المرئية القائمة على العقد. الميزات الرئيسية:
- 400+ تكامل: Slack، GitHub، Google Sheets، Notion، Airtable والمزيد
- دعم Webhook: استخدام طلبات HTTP كمحفزات
- المهام المجدولة: جدولة قائمة على Cron
- دعم الكود: عقد JavaScript وPython
- معالجة الأخطاء: آلية إعادة المحاولة وتدفقات الأخطاء
- بيانات اعتماد مشفرة: مفاتيح API مخزنة بأمان
متطلبات النظام
- خادم مثبت عليه Docker وDocker Compose
- 1 غيغابايت من الذاكرة العشوائية كحد أدنى (يُنصح بـ 2 غيغابايت)
- PostgreSQL (موصى به للإنتاج) أو SQLite
التثبيت الأساسي باستخدام Docker
بداية سريعة مع SQLite
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Asia/Riyadh
- N8N_ENCRYPTION_KEY=مفتاح-تشفير-قوي
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
# تشغيل الحاوية
docker compose up -d
# فحص السجلات
docker logs n8n -f
يُستخدم N8N_ENCRYPTION_KEY لتشفير بيانات الاعتماد. إذا فقدت هذه القيمة، ستصبح جميع بيانات اعتمادك غير قابلة للوصول. احتفظ بها في مكان آمن.
إعداد الإنتاج مع PostgreSQL
version: '3.8'
services:
postgres:
image: postgres:15
container_name: n8n-postgres
restart: unless-stopped
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: كلمة-مرور-قوية
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=كلمة-مرور-قوية
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Asia/Riyadh
- N8N_ENCRYPTION_KEY=مفتاح-تشفير-قوي
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=كلمة-مرور-المشرف
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
volumes:
postgres-data:
Nginx Reverse Proxy
server {
listen 80;
server_name n8n.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
}
}
إنشاء سير عمل أساسي
سير العمل الأول: Webhook → إشعار Slack
- انقر على New Workflow
- أضف عقدة بـ + → اختر Webhook
- HTTP Method: POST
- Path:
/slack-notify
- أضف عقدة جديدة بـ + → اختر Slack
- Operation: Send Message
- Channel: #general
- Message:
{{ $json.message }}
- احفظ وفعّل
# اختبار webhook
curl -X POST https://n8n.example.com/webhook/slack-notify \
-H "Content-Type: application/json" \
-d '{"message": "مرحباً n8n!"}'
أنواع المحفزات
محفز Cron (الجدولة)
# تعبيرات Cron
0 9 * * 1-5 # أيام الأسبوع الساعة 09:00
*/15 * * * * # كل 15 دقيقة
0 0 * * * # كل منتصف ليل
0 8 * * 1 # كل اثنين الساعة 08:00
إدارة بيانات الاعتماد
الإعدادات → بيانات الاعتماد → إضافة بيانات اعتماد
مثال: GitHub API
- نوع بيانات الاعتماد: GitHub API
- Access Token: ghp_xxxxxxxxxxxx
- اختبار الاتصال
أمثلة سير العمل الشائعة
GitHub → إشعار Slack
GitHub Trigger (حدث push)
→ IF (branch == 'main')
→ Slack ("نشر جديد: {{ $json.commits[0].message }}")
→ Email (إشعار الفريق)
التقرير اليومي
Cron Trigger (كل صباح الساعة 09:00)
→ PostgreSQL (جلب مبيعات الأمس)
→ Code (تنسيق البيانات)
→ Google Sheets (إضافة إلى التقرير)
→ Slack (إرسال الملخص)
وضع قائمة الانتظار (الحمل العالي)
environment:
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
redis:
image: redis:7-alpine
container_name: n8n-redis
restart: unless-stopped
النسخ الاحتياطي
# نسخ احتياطي لبيانات n8n
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ./n8n-data/
# نسخ احتياطي لـ PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-$(date +%Y%m%d).sql
مع n8n على خوادم REXE VPS، يمكنك أتمتة جميع عمليات أعمالك. بـ 2 غيغابايت من الذاكرة يمكنك تشغيل مئات من سير العمل.
مقالات ذات صلة
تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Nextcloud: التخزين السحابي المستضاف ذاتياً والتعاون
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
إدارة Docker مع Portainer: التحكم في الحاويات عبر واجهة الويب
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.