n8n چیست؛ آموزش نصب و راه‌اندازی workflow روی سرور

n8n چیست؟ آموزش نصب و راه‌اندازی روی سرور

صورتحساب Zapier آخر ماه را باز کردی و عددش از بودجهٔ اتوماسیونت بالاتر رفته. یا صبح‌ها هنوز فایل اکسل را از جیمیل دانلود می‌کنی، در شیت کپی می‌کنی و یک پیام تلگرام برای تیم می‌فرستی. همین کارها را می‌شود با چند گره روی یک بوم کشید و رها کرد. این راهنما می‌گوید n8n چیست، کجا به کارت می‌آید، چطور با Zapier و Make فرق دارد و چطور روی سرور خودت یا روی برنامهٔ آمادهٔ چابکان بالا می‌آوری.

مسیر دو شاخه است. اگر می‌خواهی همهٔ لایه‌ها را خودت کنترل کنی، Docker Compose روی VPS را قدم‌به‌قدم می‌رویم. اگر فقط می‌خواهی در چند دقیقه ادیتور را باز کنی، مسیر «برنامه‌های آماده» در پنل چابکان را می‌بینی: ساخت سرویس، کاربر ادمین، دامنهٔ اختصاصی و چند نکتهٔ عملی مثل ریست رمز و تغییر ورژن. برای مقایسهٔ کلی PaaS و VPS هم PaaS یا VPS؟ را کنار دست نگه دار.

 

پایپ‌لاین اتوماسیون n8n از Trigger تا Nodes و Action

 

n8n چیست؟

n8n یک پلتفرم متن‌باز برای ساخت workflow است. به‌جای نوشتن اسکریپت جدا برای هر اتصال، روی یک بوم گرافیکی گره (node) می‌چینی: یک تریگر شروع می‌کند، چند گره وسط داده را عوض می‌کنند و یک یا چند اکشن آخر کار را تمام می‌کنند. هر گره معمولا به یک سرویس وصل می‌شود؛ HTTP Request، Google Sheets، Telegram، Gmail، دیتابیس، webhook و صدها ادغام دیگر.

سه مفهوم را از هم جدا نگه دار:

  • Workflow: کل جریان؛ مثلا «وقتی فرم پر شد، ردیف را در شیت بنویس و به کانال تلگرام بفرست».
  • Node: یک واحد کار داخل workflow؛ تریگر، تبدیل داده، یا فراخوانی API.
  • Credential: کلید API، توکن، یا یوزر/پسورد که در پنل ذخیره می‌شود و به گره وصل می‌گردد؛ نه داخل متن workflow روی گیت عمومی.

دو مدل استقرار رایج است. نسخهٔ ابری رسمی را شرکت سازنده میزبانی می‌کند و صورتحساب بر اساس اجرا و پلن است. نسخهٔ self-host را روی سرور خودت، Docker یا Kubernetes بالا می‌آوری و داده و کلیدها نزد خودت می‌ماند. روی چابکان، مسیر سوم هم هست: سرویس آمادهٔ n8n که نصب و دامنهٔ پیش‌فرض را پلتفرم انجام می‌دهد و تو از ادیتور شروع می‌کنی.

نام «n8n» از «nodemation» آمده؛ یعنی اتوماسیون با گره. روی بوم، جریان شبیه فلوچارت است: از چپ تریگر، وسط تبدیل و شاخه، راست خروجی. می‌توانی برای یک رویداد چند خروجی موازی بسازی؛ مثلا همزمان شیت را به‌روز کنی و به دو کانال پیام بفرستی. اجرای هر workflow در تاریخچه ثبت می‌شود؛ اگر گرهٔ سوم خطا بدهد، همان اجرا را باز می‌کنی و JSON ورودی و خروجی را می‌بینی.

اگر با ابزارهای سنگین‌تر پایپ‌لاین داده مثل Apache Airflow کار کرده‌ای، سطح انتزاع فرق دارد. Airflow برای DAGهای زمان‌بندی‌شدهٔ داده و MLOps طراحی شده؛ این ادیتور برای اتوماسیون کسب‌وکار و اتصال سرویس‌های SaaS با رابط بصری است. مقایسهٔ مفهومی را در Apache Airflow چیست؟ می‌توانی ببینی؛ این مقاله روی نصب و راه‌اندازی برای اتوماسیون روزمره تمرکز دارد.

اتوماسیون n8n برای چه کارهایی مناسب است؟

قبل از نصب، سه چهار سناریوی واقعی را بنویس. اگر نتوانستی مثال مشخص بدهی، احتمالا هنوز مسئله‌ات اتوماسیون نیست و فقط یک اسکریپت تکی لازم داری.

اعلان و هماهنگی تیم. فرم ثبت‌نام روی سایت پر می‌شود، webhook به سرویس تو می‌خورد، ردیف در Google Sheets ساخته می‌شود و پیام به گروه تلگرام یا اسلک می‌رود. برای فهم webhook و تفاوتش با API معمولی، Webhook چیست؟ را بخوان؛ همان مفهوم تریگر بسیاری از جریان‌های این ابزار است.

همگام‌سازی بین ابزارها. لید از CRM به شیت فروش کپی می‌شود، وضعیت فاکتور در پنل حسابداری عوض می‌شود، یا تیکت پشتیبانی با برچسب مشخص به کانال فنی فوروارد می‌گردد. هر کدام یک گره HTTP یا ادغام آماده است. اگر CRM وب‌هوک ندارد، با Schedule هر چند دقیقه یک‌بار API را پول می‌کنی.

زمان‌بندی گزارش. هر صبح ساعت ۹ به‌وقت تهران، یک گره Schedule چند منبع را می‌خواند، خلاصه می‌سازد و ایمیل یا پیام می‌فرستد. تایم‌زون را در تنظیمات workflow یا متغیر محیطی درست بگذار؛ وگرنه گزارش نیمه‌شب می‌آید و تیم فکر می‌کند سیستم خراب است.

ربات و پیام‌رسان. پیام ورودی تلگرام یا بله، دستور ساده، پاسخ خودکار، ذخیره در دیتابیس. اگر خود ربات را هم روی چابکان میزبانی می‌کنی، مسیر هاست ابری جدا از سرویس اتوماسیون است؛ اینجا فقط لایهٔ orchestration را می‌گیری.

پاکسازی و تبدیل داده. CSV را بخوان، ستون‌ها را عوض کن، تکراری‌ها را حذف کن، به API بعدی بفرست. برای کارهای خیلی سنگین ETL یا پایپ‌لاین ML، ابزار تخصصی‌تر مناسب‌تر است؛ نقش این پلتفرم چسب سرویس‌هاست نه موتور پردازش بزرگ.

حد را هم بشناس. اگر نیازت فقط یک کران جاب روی سرور با یک اسکریپت bash است، نصب کامل اضافه است. اگر صدها میلیون ردیف را هر شب باید جابه‌جا کنی، سراغ موتور داده برو. برای اتصال ده تا چهل سرویس روزمره با ویرایش بصری و self-host، اندازهٔ مناسبی است.

یک تست ساده قبل از خرید سرور: همان سناریوی صبحگاهی را روی کاغذ به صورت «تریگر → سه گره → دو خروجی» بنویس. اگر توانستی بدون ابهام بنویسی، آمادهٔ نصب هستی. اگر وسطش مدام «باید ببینم API چه می‌دهد» می‌آید، اول مستند API همان سرویس را بخوان بعد بوم را باز کن.

مقایسه با Zapier و Make

جدول زیر برای انتخاب اولیه است؛ عدد دقیق پلن‌های ابری هر سه سرویس عوض می‌شود، پس قبل از خرید از سایت خودشان چک کن.

معیار self-host / هاست آماده Zapier Make (Integromat)
مدل اصلی متن‌باز؛ روی سرور خودت یا هاست آماده ابری SaaS ابری SaaS
رابط بوم گره و اتصال زاپ خطی و چندمسیره سناریو با ماژول
کنترل داده و کلید روی زیرساخت تو روی زیرساخت Zapier روی زیرساخت Make
هزینهٔ رایج منابع سرور یا پلن هاست بر اساس task / پلن بر اساس operation / پلن
کدنویسی بیشتر کارها بدون کد؛ گره Code برای JS عمدتا بدون کد بدون کد + ابزار پیشرفته
مناسب برای داده نزد خودت؛ اجتناب از سقف task اتصال سریع SaaS بدون سرور سناریوهای بصری پیچیده در کلود

اگر همین حالا روی Zapier چند زاپ ساده داری و ماهانه task تمام می‌کنی، مهاجرت یعنی یک‌بار نصب و بعد ساخت دوبارهٔ جریان‌ها. زاپ‌های خطی معمولا یک‌به‌یک به زنجیرهٔ گره ترجمه می‌شوند؛ شاخه‌ها و فیلترها را باید در بوم دوباره بچینی. اگر هیچ سروری نمی‌خواهی لمس کنی و فقط سه اتصال Gmail به Sheets لازم داری، Zapier یا Make ممکن است زودتر راهت بیندازد. اگر می‌خواهی روی ایران یا دیتاسنتر مشخص داده را نگه داری و با Docker یا برنامهٔ آماده چابکان کار کنی، مسیر self-host منطقی‌تر است.

نکتهٔ مجوز: نرم‌افزار بالادستی متن‌باز است و برای میزبانی خودت مناسب است؛ قبل از فروش سرویس میزبانی به دیگران یا استفاده از ویژگی‌های خاص سازمانی، متن مجوز نسخهٔ فعلی را از مستند رسمی بخوان. این مقاله روی نصب برای استفادهٔ خود تیم تمرکز دارد.

دو مسیر نصب روی سرور: Docker یا برنامه آماده چابکان

برای راه‌اندازی، یا تصویر رسمی را با Docker Compose روی VPS بالا می‌آوری یا از برنامهٔ آماده در پنل چابکان استفاده می‌کنی. هر دو به ادیتور می‌رسند؛ فرق در نگهداری سیستم‌عامل، پروکسی و بکاپ است.

 

مقایسه نصب n8n با Docker و برنامه آماده چابکان

 

مسیر ۱: Docker Compose روی VPS

فرض: یک سرور لینوکس با Docker و Docker Compose نصب است، دامنه به IP سرور اشاره می‌کند و برای HTTPS از reverse proxy (مثلا Nginx Proxy Manager یا Traefik یا Nginx + Certbot) استفاده می‌کنی. اگر Compose را هنوز درست یاد نگرفته‌ای، Docker Compose چیست؟ را اول بخوان.

یک پوشه بساز و فایل docker-compose.yml را با محتوای انگلیسی زیر بگذار. این نمونه برای شروع است؛ برای پروداکشن Persistent volume، پسورد قوی و محدودیت منابع را جدی بگیر.

services:
  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Asia/Tehran
      - TZ=Asia/Tehran
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:

بعد در همان پوشه:

docker compose up -d
docker compose logs -f n8n

ادیتور روی پورت 5678 بالا می‌آید. آن را پشت HTTPS با دامنهٔ واقعی بگذار؛ webhookهای تلگرام و بسیاری از سرویس‌ها HTTP ساده را رد می‌کنند. متغیر WEBHOOK_URL و در نسخه‌های جدیدتر تنظیمات مربوط به URL عمومی را با دامنهٔ نهایی یکی نگه دار تا لینک تریگرها اشتباه ساخته نشود. داده در volume به نام n8n_data می‌ماند؛ قبل از docker compose down -v از پاک شدن volume مطمئن شو.

آپدیت تصویر:

docker compose pull
docker compose up -d

بکاپ یعنی کپی منظم همان volume یا export کردن workflowها از داخل UI. بدون بکاپ، یک دیسک خراب یعنی از دست رفتن credentialها و تاریخچهٔ اجرا. روی سرورهای جدی، volume را روی دیسک جدا یا مسیر بکاپ‌شونده بگذار و هفته‌ای یک‌بار restore را روی محیط تست امتحان کن؛ فایلی که هیچ‌وقت restore نشده بکاپ حساب نمی‌شود.

اگر کنار ادیتور به دیتابیس خارجی مثل PostgreSQL هم نیاز داری، سرویس دیتابیس را در همان Compose اضافه کن و اتصال را از متغیرهای محیطی رسمی تصویر بخوان. برای شروع آموزشی، SQLite داخل volume پیش‌فرض کافی است؛ وقتی چند نفر همزمان روی UI کار می‌کنند یا اجرای همزمان زیاد می‌شود، مهاجرت به Postgres را در برنامه بگذار.

مسیر ۲: برنامه آماده در چابکان

اگر نمی‌خواهی Docker و پروکسی را خودت نگه داری، از مستند نصب روی چابکان این مسیر را برو:

  1. وارد پنل چابکان شو و ساخت سرویس جدید را باز کن.
  2. از برنامه‌های آماده گزینهٔ N8N را انتخاب کن. فهرست کامل برنامه‌های آماده در مستندات ready-application و صفحهٔ برنامه‌های آماده آمده است.
  3. پلن منابع و موقعیت دیتاسنتر را انتخاب کن و سرویس را بساز. چند دقیقه صبر کن تا وضعیت سرویس آماده شود.
  4. از داشبورد سرویس دامنهٔ پیش‌فرض را باز کن. صفحهٔ ساخت کاربر ادمین می‌آید؛ ایمیل و رمز قوی بگذار.
  5. اگر دامنهٔ اختصاصی می‌خواهی، از تنظیمات دامنهٔ سرویس همان دامنه را وصل کن. سرویس n8n چابکان آدرس ادیتور و وب‌هوک‌ها (N8N_EDITOR_BASE_URL و WEBHOOK_URL) را خودش روی دامنهٔ سرویس تنظیم می‌کند و لازم نیست چیزی دستی بگذاری.

اگر بعد از وصل دامنه، لینک‌های ادیتور یا Production URL وب‌هوک‌ها هنوز با localhost یا دامنهٔ قبلی شروع شد، مقدار این دو متغیر را در متغیرهای سرویس با دامنهٔ نهایی مقایسه کن و یک‌بار سرویس را ری‌استارت بزن. جزئیات در نکات تکمیلی آمده است.

پلن‌های اشتراکی و اختصاصی روی صفحهٔ محصول آمده‌اند و سرویس n8n را می‌توانی با اعتبار هدیهٔ ۱۰۰ هزار تومانی تست کنی. برای تست اولیه پلن کوچک کافی است؛ وقتی ده‌ها workflow منتشرشده و webhook همزمان داری، منابع سرویس را بالا ببر.

در عمل این مسیر همان self-host است، فقط لایهٔ سیستم‌عامل، تصویر و پروکسی را چابکان نگه می‌دارد. لاگ سرویس، ری‌استارت و تغییر منابع از داشبورد در دسترس است؛ برای جزئیات عمومی سرویس‌ها مستند امکانات پلتفرم را بخوان.

اولین workflow ساده بعد از نصب n8n

بعد از ورود به ادیتور، یک workflow خالی بساز. هدف آموزشی: با یک Webhook داده بگیر، یک فیلد را عوض کن، نتیجه را در پاسخ برگردان. لازم نیست همان لحظه به تلگرام وصل شوی.

  1. گرهٔ Webhook را اضافه کن. Method را POST بگذار و یک path ساده مثل lead-test انتخاب کن. سیستم یک Production URL و یک Test URL می‌سازد.
  2. یک گرهٔ Set یا Edit Fields بعد از Webhook بگذار و مثلا فیلد status را با مقدار received اضافه کن.
  3. اگر می‌خواهی جواب HTTP به فراخوان‌کننده برگردد، از گرهٔ Respond to Webhook استفاده کن و همان JSON را برگردان.
  4. workflow را با دکمهٔ Publish بالای ادیتور منتشر کن (در نسخه‌های قدیمی 1.x همان کلید Active). تا Publish نکنی، Production URL کار نمی‌کند و فقط تست دستی از ادیتور جواب می‌دهد. تغییرهای بعدی هم تا دوباره Publish نکنی روی Production URL نمی‌روند.

نمونهٔ بدنهٔ درخواست برای تست با curl (همهٔ متن انگلیسی):

curl -X POST "https://YOUR-HOST/webhook/lead-test" \
  -H "Content-Type: application/json" \
  -d '{"name":"Sara","email":"sara@example.com"}'

برای اتصال واقعی به Google Sheets یا Telegram، از بخش Credentials یک credential بساز، اسکوپ‌ها را بده، بعد در گره همان credential را انتخاب کن. توکن را داخل گرهٔ Code یا یادداشت workflow نگذار.

اگر بعدا خواستی از Code node استفاده کنی، جاوااسکریپت داخلش هم انگلیسی بماند:

// normalize email and mark source
const items = $input.all();
for (const item of items) {
  const email = String(item.json.email || "").trim().toLowerCase();
  item.json.email = email;
  item.json.source = "webhook";
}
return items;

بعد از تست وب‌هوک، یک جریان دوم با Schedule بساز که فقط یک پیام تست به خودت بفرستد. اگر هر دو کار کردند، زیرساخت و تایم‌زون درست است و می‌توانی اتصال‌های واقعی را یکی‌یکی اضافه کنی؛ نه همه را یک‌جا.

نکات عملی: webhook، تایم‌زون، credential و بکاپ

آدرس webhook. URL باید از اینترنت دیده شود و با HTTPS باشد. اگر در لاگ سرویس‌هایی مثل تلگرام خطای SSL یا timeout می‌بینی، اول دامنه و گواهی را چک کن؛ راهنمای خطاهای reverse proxy مثل Nginx 502 گاهی همان لایه را نشان می‌دهد.

تایم‌زون. در Docker نمونه، GENERIC_TIMEZONE و TZ را Asia/Tehran گذاشتیم. در workflowهای Schedule، تایم‌زون را صریح انتخاب کن تا کران جاب با ساعت ایران یکی باشد.

Credentialها. برای هر سرویس یک credential جدا. دسترسی را حداقل لازم بده. اگر کسی به ادیتور دسترسی دارد، به همهٔ کلیدهای ذخیره‌شده دسترسی دارد؛ کاربر ادمین را محدود نگه دار و رمز قوی بگذار. برای تیم بزرگ‌تر، حساب‌های جدا و تفکیک محیط تست از پروداکشن جلوی خرابکاری تصادفی را می‌گیرد.

ریست رمز ادمین روی چابکان. اگر رمز را فراموش کردی، طبق مستند نکات تکمیلی در کنسول سرویس این دستور را بزن و بعد سرویس را ری‌استارت کن:

n8n user-management:reset

تغییر ورژن. در سرویس آمادهٔ چابکان از تنظیمات سرویس می‌توانی ورژن را عوض کنی و ذخیره کنی. فهرست ورژن‌های پشتیبانی‌شده در همان مستند نکات تکمیلی آمده است. قبل از پرش نسخهٔ عمده، workflowهای حیاتی را export بگیر.

بکاپ. از UI، workflowها را export کن و فایل JSON را جای امن نگه دار. روی VPS، volume داکر را هم در برنامهٔ بکاپ دیسک بگذار. روی چابکان از امکانات عمومی سرویس (بکاپ و لاگ) استفاده کن.

منابع. ادیتور و اجراهای همزمان به RAM حساس‌اند. اگر UI کند شد یا پروسه به OOM خورد، پلن را بالا ببر یا جریان‌های سنگین را به صف و تأخیر بچین. اجرای تستی با دادهٔ واقعی روی پلن خیلی کوچک گاهی فقط به‌خاطر کمبود حافظه شکست می‌خورد، نه به‌خاطر منطق گره.

شروع سریع با برنامه آماده n8n روی چابکان

اگر هدف این مقاله برای تو «امروز ادیتور را باز کنم و یک webhook تست کنم» است، مسیر برنامهٔ آماده کوتاه‌تر است: از راه‌اندازی روی چابکان پلن را بساز، کاربر ادمین را تعریف کن و دامنه را وصل کن. آدرس ادیتور و وب‌هوک‌ها را خود سرویس تنظیم می‌کند. نصب سیستم‌عامل، تصویر داکر و پروکسی را پلتفرم نگه می‌دارد؛ تو روی بوم گره می‌چینی.

اگر به root، شبکهٔ سفارشی یا ساید‌کارهای اضافه کنار سرویس نیاز داری، همان Docker روی سرور ابری / VPS را انتخاب کن و از Compose بالا بیاور. هر دو مسیر به یک ادیتور می‌رسند؛ فرق در این است که لایهٔ زیرساخت را چه کسی نگه می‌دارد.

سوالات پرتکرار درباره n8n

n8n چیست و با یک اسکریپت cron چه فرقی دارد؟

یک پلتفرم workflow با ادیتور بصری، مدیریت credential، تاریخچهٔ اجرا و صدها ادغام است. cron فقط زمان‌بندی اجرای یک فرمان است. اگر چند سرویس را به هم وصل می‌کنی و می‌خواهی خطا را در UI ببینی، این ابزار مناسب‌تری است؛ اگر یک اسکریپت شبانه کافی است، cron سبک‌تر است.

آیا برای ساخت اتوماسیون باید برنامه‌نویس باشم؟

برای بیشتر اتصال‌های آماده، خیر. گره را می‌کشی، فیلدها را پر می‌کنی و workflow را Publish می‌کنی. وقتی API بدون ادغام آماده داری یا باید داده را پیچیده عوض کنی، گره HTTP Request و گره Code به کار می‌آید و کمی Familiarity با JSON لازم است.

نصب روی سرور بهتر است یا برنامه آماده چابکان؟

اگر می‌خواهی تصویر، حجم‌ها و شبکه را خودت تعریف کنی، Docker روی سرور را انتخاب کن. اگر می‌خواهی بدون نگهداری روزانهٔ OS و پروکسی شروع کنی، برنامه آماده n8n را از پنل بساز. از نظر خود نرم‌افزار هر دو self-host محسوب می‌شوند؛ داده روی زیرساختی است که انتخاب کرده‌ای، نه روی کلود اجباری Zapier.

چطور رمز عبور ادمین را روی چابکان بازیابی کنم؟

در کنسول سرویس دستور n8n user-management:reset را اجرا کن و سرویس را ری‌استارت کن. جزئیات در نکات تکمیلی آمده است. بعد از ریست، دوباره کاربر ادمین را می‌سازی.

آیا این نرم‌افزار رایگان است؟

نسخهٔ متن‌باز n8n را می‌توانی خودت میزبانی کنی و برای استفادهٔ معمولی هزینهٔ لایسنس ابری نمی‌دهی؛ هزینهٔ تو می‌شود سرور، بکاپ و زمان نگهداری. نسخهٔ ابری رسمی و پلن‌های هاست آماده‌ای مثل چابکان جدا قیمت‌گذاری می‌شوند. قبل از انتشار تجاری ویژگی‌های خاص، مجوز نسخهٔ فعلی را از مستند بالادستی بخوان.

بعد از نصب اولین کاری که باید بکنم چیست؟

کاربر ادمین را با رمز قوی بساز، تایم‌زون را درست کن، یک workflow وب‌هوک تستی Publish کن، یک credential واقعی اضافه کن و از workflowهای مهم export بگیر. دامنهٔ HTTPS را قبل از اتصال تلگرام یا درگاه پرداخت نهایی کن تا webhookها پایدار بمانند.

دیدگاه خود را بنویسید:

آدرس ایمیل شما نمایش داده نخواهد شد.

فوتر سایت