n8n Automation
FFmpeg Video
دليل عملي
دمج FFmpeg مع n8n
المرجع الكامل لإعداد سيرفر Linux جديد، تثبيت EasyPanel وn8n، وبناء Workflow يولّد فيديوهات تلقائياً من صور وصوت.
01
الاتصال بالسيرفر
تسجيل الدخول عبر SSH كـ root
Terminal — SSH
ssh root@YOUR_SERVER_IP
02
تثبيت Docker
تنزيل Docker وتفعيله تلقائياً مع كل إعادة تشغيل للسيرفر
تنزيل وتثبيت Docker
curl -fsSL https://get.docker.com | bash
sudo systemctl enable docker && sudo systemctl start docker
تحقق من التثبيت:
نفّذ
docker --version — المتوقع رؤية
Docker version 26.x.x
03
إعداد شبكات Docker
تحديد نطاقات IP الافتراضية لتجنب تعارض الشبكات
daemon.json — IP address pools
sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
"default-address-pools": [
{"base": "172.17.0.0/16", "size": 24},
{"base": "172.18.0.0/16", "size": 24},
{"base": "172.19.0.0/16", "size": 24},
{"base": "172.20.0.0/16", "size": 24}
]
}
EOF
sudo systemctl restart docker
04
تثبيت EasyPanel
لوحة تحكم لإدارة التطبيقات والحاويات بسهولة
تشغيل EasyPanel Setup
docker run --rm -it -v /etc/easypanel:/etc/easypanel -v /var/run/docker.sock:/var/run/docker.sock:ro easypanel/easypanel setup
فتح البورتات المطلوبة
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw allow 3000/tcp && sudo ufw reload
افتح لوحة تحكم EasyPanel عبر المتصفح على:
http://IP_السيرفر:3000
05
التحقق من وجود FFmpeg
تأكيد أن FFmpeg متاح داخل بيئة n8n قبل تشغيل أي Workflow
Terminal
ffmpeg -version
06
متغيرات البيئة لـ n8n
ضعها في إعدادات n8n داخل EasyPanel — Environment Variables
المتغير
القيمة
N8N_TRUSTED_PROXIES
loopback,linklocal,uniquelocal,172.16.0.0/12,192.168.0.0/16
DB_SQLITE_POOL_SIZE
5
N8N_RUNNERS_ENABLED
true
N8N_BLOCK_ENV_ACCESS_IN_NODE
false
N8N_GIT_NODE_DISABLE_BARE_REPOS
true
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
true
N8N_PORT
5678
N8N_PROTOCOL
https
N8N_SECURE_COOKIE
false
N8N_BASIC_AUTH_ACTIVE
true
N8N_BASIC_AUTH_USER
admin
N8N_BASIC_AUTH_PASSWORD
admin
N8N_DEFAULT_BINARY_DATA_MODE
filesystem
N8N_USER_FOLDER
/home/node/.n8n
N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES
false
EXECUTIONS_TIMEOUT
600
N8N_EXECUTIONS_PROCESS
main
N8N_EXEC_COMMAND_MAX_OUTPUT_SIZE
52428800
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS
false
NODE_FUNCTION_ALLOW_BUILTIN
*
NODE_FUNCTION_ALLOW_EXTERNAL
*
.env — نسخ الكل دفعة واحدة
N8N_TRUSTED_PROXIES=loopback,linklocal,uniquelocal,172.16.0.0/12,192.168.0.0/16
DB_SQLITE_POOL_SIZE=5
N8N_RUNNERS_ENABLED=true
N8N_BLOCK_ENV_ACCESS_IN_NODE=false
N8N_GIT_NODE_DISABLE_BARE_REPOS=true
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
N8N_PORT=5678
N8N_PROTOCOL=https
N8N_RESTRICT_FILE_ACCESS_TO=""
N8N_SECURE_COOKIE=false
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=admin
NODES_EXCLUDE="[]"
N8N_DEFAULT_BINARY_DATA_MODE=filesystem
N8N_USER_FOLDER=/home/node/.n8n
N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES=false
EXECUTIONS_TIMEOUT=600
N8N_EXECUTIONS_PROCESS=main
N8N_EXEC_COMMAND_MAX_OUTPUT_SIZE=52428800
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
NODE_FUNCTION_ALLOW_BUILTIN=*
NODE_FUNCTION_ALLOW_EXTERNAL=*
07
إنشاء مجلدات الوسائط
على Terminal السيرفر — ننشئ المجلدات ونضبط الصلاحيات
/home/node/.n8n/
└── media/
├── images/
├── audio/
└── videos/
└── media/
├── images/
├── audio/
└── videos/
Terminal — إنشاء المجلدات وإعداد الصلاحيات
# إنشاء المجلدات
mkdir -p /home/node/.n8n/media/images
mkdir -p /home/node/.n8n/media/audio
mkdir -p /home/node/.n8n/media/videos
# إعطاء الصلاحيات المناسبة
chown -R node:node /home/node/.n8n/media
chmod -R 755 /home/node/.n8n/media
# تأكيد الإنشاء
ls -lh /home/node/.n8n/media/
08
إعداد Workflow في n8n
ترتيب Nodes داخل n8n لحفظ الصور والصوت، وإنتاج الفيديو
حفظ الصور
Read/Write Files from Disk
Operation
Write File to Disk
File Path — مع اسم ديناميكي
/home/node/.n8n/media/image_{{ $json.image_index }}.jpg
أو باسم من المتغير
/home/node/.n8n/media/{{ $json.fileName }}
حفظ الصوت
Read/Write Files from Disk
Operation
Write File to Disk
File Path
/home/node/.n8n/media/audio.mp3
إنشاء قائمة الصور (images.txt)
Execute Command
bash script
#!/bin/bash
if ls /home/node/.n8n/media/image_*.jpg 1> /dev/null 2>&1; then
rm -f /home/node/.n8n/media/images.txt
for img in /home/node/.n8n/media/image_*.jpg; do
echo "file '$img'" >> /home/node/.n8n/media/images.txt
echo "duration 5" >> /home/node/.n8n/media/images.txt
done
echo "images.txt created with $(ls /home/node/.n8n/media/image_*.jpg | wc -l) images."
else
echo "No images found, skipping images.txt creation."
exit 1
fi
دمج الصور + الصوت → فيديو MP4
Execute Command — FFmpeg
ffmpeg command
ffmpeg -threads 2 -y -stream_loop -1 -f concat -safe 0 -i "/home/node/.n8n/media/images.txt" -i "/home/node/.n8n/media/audio.mp3" -filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[v]" -map "[v]" -map 1:a -c:v libx264 -preset ultrafast -crf 23 -r 30 -c:a aac -b:a 192k -af volume=1.2 -pix_fmt yuv420p -shortest "/home/node/.n8n/media/final_video.mp4"
قراءة الفيديو النهائي
Read/Write Files from Disk
Operation
Read File from Disk
File Path
/home/node/.n8n/media/final_video.mp4
تأكد أن المسار في Node قراءة الفيديو هو نفس مسار الإخراج في أمر FFmpeg
final_video.mp4
09
تنظيف الملفات المؤقتة
نفّذ هذا في نهاية كل Workflow لتحرير مساحة السيرفر
Execute Command — حذف سريع
rm -f /home/node/.n8n/media/*.jpg /home/node/.n8n/media/*.txt /home/node/.n8n/media/*.mp3 /home/node/.n8n/media/*.mp4
Execute Command — حذف شامل مع /tmp
#!/bin/bash
rm -f /home/node/.n8n/media/final_video.mp4
rm -f /home/node/.n8n/media/*.mp4
rm -rf /tmp/*.jpg /tmp/*.mp3 /tmp/*.mp4 /tmp/*.txt /tmp/*.png
echo "Old videos deleted."

.png)