تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت n8n عبر Docker، تكاملات webhook، إنشاء سير العمل، ربط 400+ تطبيق، المهام المجدولة، إدارة بيانات الاعتماد والنشر في بيئة الإنتاج.
n8n هي منصة أتمتة سير العمل مفتوحة المصدر بواجهة مرئية يمكنها ربط 400+ تطبيق وخدمة. يمكنك تشغيلها على خادمك الخاص كبديل مستضاف ذاتياً لخدمات مثل Zapier وMake (Integromat). يمكنك إنشاء أتمتة معقدة دون كتابة كود، أو إضافة منطق مخصص باستخدام JavaScript/Python.
n8n (اختصار لـ "nodemation") يتيح لك بناء سير عمل باستخدام البرمجة المرئية القائمة على العقد. الميزات الرئيسية:
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 لتشفير بيانات الاعتماد. إذا فقدت هذه القيمة، ستصبح جميع بيانات اعتمادك غير قابلة للوصول. احتفظ بها في مكان آمن.
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:
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;
}
}
/slack-notify{{ $json.message }}# اختبار webhook
curl -X POST https://n8n.example.com/webhook/slack-notify \
-H "Content-Type: application/json" \
-d '{"message": "مرحباً n8n!"}'
# تعبيرات 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 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 غيغابايت من الذاكرة يمكنك تشغيل مئات من سير العمل.
n8n مستضاف ذاتياً ومفتوح المصدر؛ Zapier قائم على السحابة ومدفوع. مع n8n، تبقى بياناتك على خادمك الخاص ويمكنك إنشاء سير عمل وتنفيذات غير محدودة. قد يكون Zapier أكثر سهولة في الاستخدام لكن له حدود تنفيذ شهرية وتكاليف عالية. يتيح n8n أيضاً كتابة كود مخصص بـ JavaScript/Python.
تأكد من أن متغير البيئة WEBHOOK_URL مضبوط بشكل صحيح (https://n8n.example.com/). تحقق من أن وكيل Nginx يدعم اتصالات WebSocket (رؤوس Upgrade وConnection). تحقق من أن المنفذ 443 مفتوح في جدار الحماية. تأكد من أن سير العمل في n8n في حالة 'Active'.
إذا تغيّر N8N_ENCRYPTION_KEY، لا يمكن فك تشفير بيانات الاعتماد الموجودة. في هذه الحالة، تحتاج إلى إعادة إنشاء جميع بيانات الاعتماد. لهذا السبب، تخزين مفتاح التشفير في مكان آمن (مدير كلمات المرور، vault) أمر بالغ الأهمية. انسخ هذا المفتاح احتياطياً عند إجراء النسخ الاحتياطية.
حدّد سجل التنفيذ: EXECUTIONS_DATA_MAX_AGE=168 (7 أيام). لمجموعات البيانات الكبيرة، احفظ البيانات الثنائية في نظام الملفات: N8N_DEFAULT_BINARY_DATA_MODE=filesystem. تحكم في عدد العمال باستخدام وضع قائمة الانتظار. عطّل سير العمل غير الضرورية.
يمكنك رؤية مخرجات كل عقدة في محرر سير العمل. اختبر العقد الفردية بـ 'Execute Node'. راجع التشغيلات السابقة من قائمة التنفيذ. أضف عقدة خطأ لالتقاط الأخطاء وتلقي إشعارات Slack/email. تحقق من سجلات النظام بـ docker logs n8n.
عند استخدام PostgreSQL، التحديث آمن. خذ نسخة احتياطية من قاعدة البيانات قبل التحديث: docker exec n8n-postgres pg_dump -U n8n n8n > backup.sql. ثم حدّث بـ docker compose pull && docker compose up -d. يُجري n8n ترحيلات تلقائية. عند استخدام SQLite، انسخ دليل ./n8n-data/ احتياطياً.
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.