راهنمای جامع نصب n8n بر روی Docker و VPS
مقدمه
ابزارهای خودکارسازی گردش کار قدرت فوقالعادهای دارند، اما اکثر پلتفرمها برای راحتی، کنترل را در مقابل سرویس میگذارند. وقتی از یک سرویس فقط‑ابری استفاده میکنید، دادهها، اعتبارنامهها و منطق اصلی کسبوکار شما روی سرورهای شخص دیگری قرار میگیرد. برای بسیاری این تعویض معقول است. اما برای کسانی که کنترل کامل، حریم خصوصی مطلق دادهها و مقیاسپذیری نامحدود میخواهند، مسیر بهتری وجود دارد: self-hosted n8n.
این راهنما کتابچهٔ کامل شما برای بازپسگیری کنترل stack خودکارسازی است. گام به گام نحوهٔ نصب n8n روی زیرساخت سرور اختصاصی را توضیح میدهد و یک سرور مجازی استاندارد را به یک موتور قدرتمند و خصوصی تبدیل میکند. فراتر از محدودیتها و هزینههای رو به افزایش سرویسهای ابری اختصاصی بروید. با اجرای یک نمونهٔ n8n بر روی سرور مجازی ، انعطافپذیری، امنیت و صرفهجویی در هزینهای که هیچ سرویس تجاری نمیتواند برابرش کند، بهدست میآورید. از انتخاب سرور مناسب تا ایمنسازی نمونه و آمادهسازی آن برای گردشهای با حجم بالا، این همه چیز برای ساخت یک مرکز قدرت خودکارسازی است.

چرا self-hosted n8n؟ درک مزایای کنترل کامل
قبل از ورود به جزئیات فنی، مهم است بدانید چرا self-hosted n8n را انتخاب میکنید. راحتی سرویسهای ابری جذاب است، اما هزینههای پنهان و سازشهایی به همراه دارد. self-hosted شما را بهطور کامل در کنترل میگذارد و سه مزیت اصلی برای کاربران جدی فراهم میکند.
- هزینهٔ n8n را بهطرز چشمگیری کاهش میدهد
این معمولاً واضحترین مزیت است. پلتفرمهای ابری معمولاً بر پایهٔ «task» یا «execution» هزینه میگیرند. برای استفادهٔ سبک ممکن است قابلقبول باشد، اما هزینهها بهسرعت با رشد کسبوکار و پیچیده شدن گردش کارها افزایش مییابد. یک گردش کار چند مرحلهای که هزاران بار در روز اجرا میشود میتواند بهسرعت شما را به برنامههای گرانقیمت هدایت کند.
وقتی self-hosted میکنید، این ارتباط بین استفاده و هزینه قطع میشود. هیچ محدودیتی از طرف نرمافزار برای تعداد گردش کار، گام یا اجرا وجود ندارد. هزینهٔ تکراری تنها هزینهٔ زیرساخت سرور است. به این ترتیب میتوانید مقیاسپذیری خودکارسازی را به میلیونها اجرا برای هزینهٔ یک سرور مجازی متوسط برسانید و بازده سرمایهگذاری فوقالعادهای داشته باشید.
- حریم خصوصی واقعی دادهها
در عصر قوانین سختگیرانهٔ داده، این مزیت جدی است. با سرویس ابری، دادههای حساس و اعتبارنامههای برنامه را به یک ارائهدهندهٔ شخص ثالث میفرستید. وقتی self-hosted میکنید، دادهها هرگز از کنترل شما خارج نمیشوند. تمام پردازشها روی سرور خصوصی شما انجام میشود. برای سازمانهای تحت قوانین نظیر HIPAA یا GDPR، این اغلب تنها راه قابلقبول است.
- سفارشیسازی نامحدود
پلتفرمهای ابری بهصورت ذاتی یک راهحل «یکاندازههمه» هستند. با یک نمونهٔ n8n خود‑میزبان، یک برنامهٔ متنباز را اجرا میکنید که میتوانید بههر دلخواه تغییر و گسترش دهید. میتوانید یکپارچهسازیهای سفارشی برای ابزارهای داخلی خود بسازید، کد منبع را برای نیازهای خاص تنظیم کنید و به منابع داخلی که پشت فایروال هستند متصل شوید. self-hosted n8n را از یک ابزار ساده به یک پلتفرم خودکارسازی کاملاً قابلتوسعه تبدیل میکند که دقیقاً با نیازهای شما منطبق است.

پیشنیازها: سختافزار و نرمافزار برای self-hosted n8n
سختافزار و توصیههای سرور مجازی
| حداقل | پیشنهادی برای Production |
| 1 vCPU, 1 GB RAM, 10 GB Disk | 2 vCPU, 4 GB RAM, 30 GB Disk |
سرورهای مجازی تعادل مناسبی بین هزینه، عملکرد و مقیاسپذیری فراهم میکنند. ذخیرهسازی سریع (NVMe SSD) بهویژه برای گردش کارهایی که داده زیاد میخوانند یا مینویسند، سرعت را بهطور قابلتوجهی افزایش میدهد. یک سرور مجازی ابردیجیتال به راحتی نیازهای پیشنهادی را برآورده میکند و فضای کافی برای گسترش آینده دارد. حتماً استراتژی پشتیبانگیری داشته باشید و فضای کافی برای اسنپشاتها یا پشتیبانهای خارج از سایت اختصاص دهید.
نرمافزار
نصب سادهترین روش با Docker است؛ این کار تنظیم، بهروزرسانی و مدیریت کلی را ساده میکند.
سیستمعامل: Ubuntu 24.04 LTS (یا Debian/CentOS)
Docker + Docker‑Compose – Docker container را اجرا میکند، Docker‑Compose تعریف سرویس و پیکربندی را در یک فایل YAML ساده میگذارد.
دامنه یا سابدامنه: برای نصب گواهی SSL ضروری است (اگرچه در مرحلهٔ اولیه میتوانید بدون آن کار کنید).
راهنمای گام به گام نصب n8n با Docker
گام 1 – آمادهسازی سرور و نصب Docker
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt install docker-compose-v2 -y
sudo usermod -aG docker ${USER}
بعد از خروج و ورود مجدد، با `docker –version` و `docker compose version` نسخهها را بررسی کنید.
گام 2 – ایجاد پیکربندی n8n
mkdir ~/n8n && cd ~/n8n
دو فایل docker-compose.yml و .env بسازید.
docker-compose.yml
version: '3.7'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
#.env
POSTGRES_DB=n8n POSTGRES_USER=n8nuser POSTGRES_PASSWORD=your_strong_password_here
گام 3 – راهاندازی n8n
docker compose up -d
این دستور ایمیجهای مورد نیاز را دانلود میکند و سرویسها را در پسزمینه اجرا مینماید. وضعیت را میتوانید با `docker compose ps` بررسی کنید و یکبار لاگها را با `docker compose logs -f n8n` ببینید تا از عدم وجود خطا اطمینان حاصل کنید. در این مرحله n8n در حالت محلی (localhost:5678) در حال اجراست و آمادهٔ ایمنسازی برای استفادهٔ تولیدی میباشد.
ایمنسازی نمونه n8n با SSL و NGINX Reverse Proxy
گام 1 – نصب و پیکربندی NGINX
sudo apt install nginx -y

یک فایل پیکربندی جدید برای دامنهٔ n8n خود بسازید (بهجای `n8n.yourdomain.com` نام دامنهٔ واقعی خود را بگذارید).
sudo nano /etc/nginx/sites-available/n8n
محتوا:
server {
listen 80;
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_set_header Host $host;
}
}
سپس آن را فعال کنید:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
گام 2 – فعالسازی HTTPS با Let’s Encrypt
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d n8n.yourdomain.com
در طول فرآیند، گزینهٔ «redirect all HTTP traffic to HTTPS» را انتخاب کنید. Certbot بهصورت خودکار گواهی را نصب میکند و بهروز رسانی خودکار آن را تنظیم مینماید. پس از اتمام، میتوانید n8n را از طریق `https://n8n.yourdomain.com` با اتصال امن دسترسی داشته باشید.
مدیریت نمونهٔ خود‑میزبان: بهروزرسانی، پشتیبانگیری و لاگها
بهروزرسانی n8n
Docker باعث میشود بهروزرسانی بسیار ساده باشد؛ فقط کافی است تصویر جدید را بکشید و سرویس را دوباره اجرا کنید:
docker compose pull n8n docker compose up -d
قبل از بهروزرسانی، نکات انتشار نسخهٔ جدید را در Release Notes مرور کنید، بهویژه برای تغییرات بزرگ (major).
استراتژی پشتیبانگیری
برای بازیابی در مواقع اضطراری، هر دو volume `n8n_data` (workflowها و اعتبارنامهها) و دیتابیس Postgres باید پشتیبانگیری شوند.
توقف موقت n8n برای اطمینان از سازگاری دادهها
docker compose stop n8n
بکاپ دیتابیس
docker exec -t $(docker ps -qf "name=postgres") pg_dump -U n8nuser n8n > /backup/n8n_$(date +%F).sql
بکاپ volume
docker run --rm -v n8n_n8n_data:/data -v /backup:/backup alpine \ tar czf /backup/n8n_data_$(date +%F).tar.gz -C /data .
راهاندازی مجدد
docker compose start n8n
فایلهای بکاپ را بهصورت دورهای (مثلاً با `cron`) به یک مکان خارج از سرور (مثلاً یک bucket S3 یا سرویس ذخیرهسازی ابری) منتقل کنید.
مشاهده لاگها
docker compose logs -f n8n
این خروجی اولین منبع برای عیبیابی است؛ وقتی یک workflow شکست میخورد یا رفتار غیرعادی مشاهده میکنید، لاگها را بررسی کنید. برای نسخهبندی workflowها میتوانید آنها را بهصورت JSON از UI دانلود کرده و در یک مخزن Git خصوصی ذخیره کنید؛ این کار امکان ردیابی تغییرات و بازگرداندن به نسخهٔ قبلی را فراهم میکند.
معماری Queue Mode
- Main Instance – یک (یا چند) n8n که UI، وبهوکها و تریگرهای زمانبندی را مدیریت میکند؛ خود اجرا نمیکند، بلکه کار را به صف میفرستد.
- Redis Queue – یک پیامبرندهٔ سریع (معمولاً Redis) که کارهای اجرا را نگه میدارد.
- Worker Instances – چندین n8n که در حالت worker اجرا میشوند؛ از صف میگیرند و workflowها را اجرا میکنند.
با افزودن workerهای بیشتر میتوانید توان پردازشی را بهصورت خطی افزایش دهید؛ برای مثال اگر ۱۰۰۰ وبهوک همزمان دریافت شود، pool workerها میتوانند آنها را بهصورت موازی پردازش کنند بدون اینکه Main Instance دچار overload شود.

خطاهای رایج در self-hosted n8n با Docker و راهحلهای پیشنهادی
1. Permission denied on Docker volume
علت محتمل: مالکیت نادرست پوشهای که بهعنوان volume به container متصل شده است.
راهحل: مالکیت پوشه را به کاربری که داخل container اجرا میشود (معمولاً UID 1000) تغییر دهید؛ برای مثال:
sudo chown -R 1000:1000 /path/to/volume
2. Container restart loop
علت محتمل: مقادیر نادرست یا ناقص در فایل `.env`، بهویژه اطلاعات مربوط به دیتابیس (نام، کاربر، رمز عبور).
راهحل: لاگهای container را بررسی کنید تا پیام خطا را ببینید:
docker compose logs n8n
سپس مقادیر اشتباه را در `.env` اصلاح کنید و سرویس را دوباره راهاندازی کنید.
3. Network connectivity issue
علت محتمل: قوانین فایروال سرور که پورتهای مورد نیاز (مثلاً 5432 برای PostgreSQL یا 6379 برای Redis) را مسدود میکند، یا استفاده از `localhost` بهجای نام سرویس داخل `docker‑compose.yml`.
راهحل: پورتهای لازم را در فایروال باز کنید (مثلاً `sudo ufw allow 5432/tcp`). برای ارتباط بین container ها، بهجای `localhost` از نام سرویس تعریفشده در فایل compose استفاده کنید؛ برای مثال بهجای `DB_HOST=localhost` بنویسید `DB_HOST=postgres`.
4. Redis connection refused
علت محتمل: سرویس Redis اجرا نشده یا آدرس/پورت اشتباه در متغیرهای محیطی تنظیم شده است.
راهحل: اطمینان حاصل کنید container Redis در حال اجراست (`docker compose ps` یا `docker ps`). متغیر `QUEUE_BULL_REDIS_HOST` را به نام سرویس Redis (معمولاً `redis`) تنظیم کنید و در صورت نیاز پورت پیشفرض 6379 را باز کنید. پس از اصلاح، n8n را مجدداً راهاندازی کنید.
تنظیم Queue Mode
- Redis
– اجرا کنید: `docker run -d –name redis -p 6379:6379 redis:7-alpine`
- Main n8n
– در فایل `.env` یا در بخش `environment` docker‑compose مقدارهای زیر را تنظیم کنید:
`EXECUTIONS_PROCESS=main` `QUEUE_BULL_REDIS_HOST=redis`
- Worker n8n
– برای هر worker یک سرویس جداگانه تعریف کنید (میتوانید چندین بار این سرویس را تکرار کنید). در تنظیمات همان متغیرها را قرار دهید:
`EXECUTIONS_PROCESS=worker` `QUEUE_BULL_REDIS_HOST=redis`
در `docker‑compose.yml` میتوانید سرویسهای `redis`, `main` و یک یا چند سرویس `worker` را بهصورت زیر تعریف کنید و سپس با `docker compose up -d` همه را اجرا کنید. برای جزئیات کامل به بخش Queue Mode در مستندات n8n مراجعه کنید.
مقیاسپذیری برای گردش کارهای با حجم بالا: Queue Mode با Redis
یک سرور ابری قدرتمند میتواند تعداد زیادی workflow را پردازش کند، اما وقتی به هزاران اجرا همزمان یا پردازشهای سنگین میرسید، به مقیاسپذیری افقی نیاز دارید. در این حالت Queue Mode راهحل است. تمام لایسنسهای n8n (از جمله Sustainable User License رایگان) این حالت را پشتیبانی میکنند.
مزایای عمیق حریم خصوصی و سفارشیسازی با Self‑Hosting
کنترل کامل دادهها
– Data sovereignty: با قرار دادن سرور مجازی در دیتاسنتر داخل منطقهٔ جغرافیایی مورد نیاز (مثلاً EU) میتوانید مطابقت با GDPR را تضمین کنید.
– Zero third‑party credential exposure: تمام کلیدها و رمزها در دیتابیس شما ذخیره میشوند؛ هیچکسی جز شما به آنها دسترسی ندارد.
– Air‑gapped automation: میتوانید n8n را در شبکهای کاملاً جدا از اینترنت (مثلاً داخل یک DMZ یا شبکه داخلی) مستقر کنید و فقط بین سیستمهای داخلی خود اتصالات برقرار کنید.
سفارشیسازی نامحدود
– ساخت Nodeهای سفارشی: با استفاده از n8n Node Development Kit میتوانید یکپارچهسازی کامل برای ERP داخلی یا ابزارهای خاص صنعت بسازید؛ این Nodeها در ویرایشگر n8n همانند Nodeهای رسمی ظاهر میشوند.
– استفاده از کتابخانههای npm / Python در Code Node: میتوانید `pandas`, `pdf-lib`, `axios` و سایر کتابخانههای قدرتمند را مستقیماً داخل workflowها وارد کنید و پردازشهای پیشرفتهٔ داده
– سرور مجازی دسترسی به متغیرهای محیطی و پیکربندیهای سفارشی:سرور مجازی میتوانید مقادیر دلخواه (مانند کلیدهای API، مسیرهای فایل یا تنظیمات سرویس) را در فایل `.env` یا متغیرهای Docker تعریف کنید و سپس در Code Node یا در تنظیمات Nodeهای سفارشی از آنها استفاده کنید. این کار باعث میشود اطلاعات حساس بهصورت مرکزی مدیریت شوند و نیازی به سختکد کردن آنها در هر workflow نباشد.
– سرور مجازی یکپارچهسازی با سیستمهای داخلی (مانند دیتابیسهای داخل شبکه، سرویسهای پیامرسانی یا سرویسهای میکروسرویس):سرور مجازی با تنظیمات شبکه Docker (مانند `network_mode: bridge` یا تعریف یک شبکهٔ سفارشی) میتوانید n8n را بهصورت مستقیم به سرویسهای داخلی متصل کنید؛ نیازی به عبور از اینترنت عمومی یا پیکربندی VPN نیست.
– سرور مجازی توسعه و تغییر در کد منبع n8n:سرور مجازی چون n8n بهصورت متنباز منتشر شده است، میتوانید سورس آن را کلون کنید، تغییرات دلخواه (مثلاً افزودن لاگهای سفارشی، تغییر رفتار پیشفرض یا افزودن قابلیتهای جدید) را اعمال کنید و سپس یک ایمیج Docker سفارشی بسازید. این امکان بهویژه برای سازمانهایی که نیاز به انطباق دقیق با سیاستهای امنیتی یا عملکردی دارند، بسیار ارزشمند است.
– سرور مجازی ایجاد قالبهای workflow و ذخیرهسازی در مخزن Git:سرور مجازی میتوانید workflowهای مهم را بهصورت فایلهای JSON استخراج کنید و در یک مخزن Git خصوصی نگهداری کنید. با این کار میتوانید تغییرات را ردیابی کنید، نسخههای قبلی را بازگردانید و حتی با استفاده از CI/CD بهصورت خودکار workflowهای جدید را به سرور n8n مستقر کنید.
– سرور مجازی سفارشیسازی UI/UX:سرور مجازی با تغییر فایلهای استاتیک (CSS/JS) میتوانید ظاهر و تجربه کاربری ویرایشگر n8n را مطابق برند یا نیازهای داخلی خود تنظیم کنید؛ برای مثال میتوانید لوگوی شرکت را جایگزین کنید یا رنگهای رابط کاربری را تغییر دهید.
این امکانات باعث میشوند n8n نه تنها یک ابزار خودکارسازی باشد، بلکه یک پلتفرم قابلتوسعه و یکپارچهسازی کامل برای تمام نیازهای فنی و تجاری شما تبدیل شود.





قوانین ارسال دیدگاه
لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.