وبلاگ
ساخت اولین جریان کاری خودکار با n8n: راهنمای گام به گام
فهرست مطالب
“تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”
"تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"
"با شرکت در این دوره جامع و کاربردی، به راحتی مهارتهای برنامهنویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر میسازد تا به سرعت الگوریتمهای پیچیده را درک کرده و اپلیکیشنهای هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفهای و امکان دانلود و تماشای آنلاین."
ویژگیهای کلیدی:
بدون نیاز به تجربه قبلی برنامهنویسی
زیرنویس فارسی با ترجمه حرفهای
۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان
0 تا 100 عطرسازی + (30 فرمولاسیون اختصاصی حامی صنعت)
دوره آموزش Flutter و برنامه نویسی Dart [پروژه محور]
دوره جامع آموزش برنامهنویسی پایتون + هک اخلاقی [با همکاری شاهک]
دوره جامع آموزش فرمولاسیون لوازم آرایشی
دوره جامع علم داده، یادگیری ماشین، یادگیری عمیق و NLP
دوره فوق فشرده مکالمه زبان انگلیسی (ویژه بزرگسالان)
شمع سازی و عودسازی با محوریت رایحه درمانی
صابون سازی (دستساز و صنعتی)
صفر تا صد طراحی دارو
متخصص طب سنتی و گیاهان دارویی
متخصص کنترل کیفی شرکت دارویی
ساخت اولین جریان کاری خودکار با n8n: راهنمای گام به گام
در دنیای دیجیتال پرشتاب امروز، اتوماسیون جریانهای کاری دیگر یک امتیاز لوکس نیست، بلکه ضرورتی برای افزایش بهرهوری، کاهش خطای انسانی و آزادسازی زمان برای تمرکز بر وظایف استراتژیکتر است. ابزارهای اتوماسیون متعددی در بازار وجود دارند، اما n8n به عنوان یک ابزار قدرتمند، متنباز و قابل خودمیزبانی (self-hosted)، جایگاه ویژهای در میان توسعهدهندگان، مهندسین DevOps و حتی کاربران پیشرفته کسبوکارهای کوچک و متوسط پیدا کرده است. این مقاله یک راهنمای جامع و گام به گام برای ساخت اولین جریان کاری خودکار با n8n است که با هدف توانمندسازی شما برای ورود به دنیای اتوماسیون بدون محدودیتهای پلتفرمهای ابری بسته، تدوین شده است. هدف ما از این مقاله ارائه یک دید عمیق و تخصصی است که شما را قادر سازد تا نه تنها یک جریان کاری ساده را پیادهسازی کنید، بلکه با مفاهیم بنیادی و بهترین شیوهها آشنا شوید تا بتوانید راهکارهای اتوماسیون پیچیدهتری را برای نیازهای خاص خود طراحی و اجرا کنید.
ما از یک سناریوی عملیاتی واقعی به عنوان مثال استفاده خواهیم کرد: دریافت ایمیلهای جدید حاوی پیوستهای مشخص، ذخیره این پیوستها در Google Drive و سپس ارسال یک اطلاعیه به کانال Slack. این سناریو، تقریباً تمام چالشهای رایجی که در اتوماسیون روزمره با آنها مواجه میشوید – از اتصال به سیستمهای خارجی گرفته تا پردازش دادهها و مدیریت خطا – را پوشش میدهد. با ما همراه باشید تا اولین قدمهای محکم خود را در مسیر تبدیل شدن به یک متخصص اتوماسیون با n8n بردارید.
مقدمه: چرا n8n و اتوماسیون جریانهای کاری؟
اتوماسیون، ستون فقرات کارایی و مقیاسپذیری در عصر دیجیتال است. تصور کنید وظایفی که به طور مداوم و با دقت تکرار میشوند را بدون دخالت دستی، به صورت خودکار انجام دهید. از جمعآوری دادهها از منابع مختلف گرفته تا همگامسازی اطلاعات بین سیستمها، از ارسال اعلانهای خودکار گرفته تا اجرای فرآیندهای پیچیده تجاری، اتوماسیون در هر صنعتی انقلابی به پا کرده است. این امر نه تنها بهرهوری را افزایش میدهد، بلکه خطاهای ناشی از دخالت انسان را به حداقل میرساند و به نیروی انسانی اجازه میدهد تا بر وظایف خلاقانه و استراتژیکتر تمرکز کنند. در این میان، انتخاب ابزار مناسب برای اتوماسیون از اهمیت بالایی برخوردار است.
n8n چیست و چه مزیتی دارد؟
n8n (به معنای “node-to-node” یا “نود به نود”) یک ابزار اتوماسیون متنباز و سرویس ادغام (integration service) است که به شما امکان میدهد سیستمهای مختلف را به یکدیگر متصل کرده و جریانهای کاری پیچیده را طراحی کنید. برخلاف بسیاری از رقبای خود که صرفاً بر روی یک مدل SaaS (Software as a Service) تکیه دارند، n8n یک رویکرد منحصر به فرد ارائه میدهد: کد باز بودن و قابلیت خودمیزبانی. این ویژگیها n8n را به گزینهای بسیار جذاب برای توسعهدهندگان، شرکتهایی با الزامات امنیتی بالا، یا هر کسی که به دنبال کنترل کامل بر دادهها و زیرساختهای اتوماسیون خود است، تبدیل میکند.
مزایای کلیدی n8n:
- متنباز بودن (Open-Source): به شما اجازه میدهد تا کد منبع را بررسی، تغییر و حتی بهبود ببخشید. این شفافیت، اعتماد را افزایش میدهد و امکان سفارشیسازی بینهایت را فراهم میآورد.
- قابلیت خودمیزبانی (Self-Hosted): میتوانید n8n را بر روی سرورهای خود، در زیرساختهای ابری خصوصی یا حتی در محیط توسعه محلی خود مستقر کنید. این امر کنترل کامل بر دادهها، امنیت و هزینهها را به ارمغان میآورد.
- انعطافپذیری بینظیر: n8n از بیش از 350 ادغام از پیشساخته (pre-built integrations) با سرویسهای محبوب مانند Google Sheets، Slack، Salesforce، HubSpot و بسیاری دیگر پشتیبانی میکند. علاوه بر این، با استفاده از نودهای HTTP Request، Webhook و Code، میتوانید به تقریباً هر API دیگری متصل شوید و منطق سفارشی خود را با جاوا اسکریپت پیادهسازی کنید.
- رابط کاربری بصری (Visual Workflow Editor): با استفاده از یک رابط کاربری Drag & Drop، میتوانید به راحتی نودها را به هم متصل کرده و جریانهای کاری را با دید بصری طراحی کنید.
- مدل دادهای قدرتمند (JSON-based Data Handling): n8n دادهها را به صورت JSON پردازش میکند که امکان دستکاری و تبدیل پیچیده دادهها را فراهم میآورد و آن را برای سناریوهای پیشرفته بسیار مناسب میسازد.
- هزینه کمتر در مقیاس بالا: با خودمیزبانی، شما فقط هزینه زیرساخت را پرداخت میکنید و نیازی به پرداخت هزینههای ماهانه بر اساس تعداد وظایف (tasks) یا نودها نیستید، که میتواند در مقیاس بالا صرفهجویی قابل توجهی داشته باشد.
n8n در مقابل سایر پلتفرمها (Zapier، Make):
در حالی که پلتفرمهایی مانند Zapier و Make (Integramat سابق) راهکارهای عالی برای اتوماسیون ارائه میدهند و شروع کار با آنها ممکن است کمی سادهتر به نظر برسد، n8n برای کاربرانی که به دنبال کنترل بیشتر، انعطافپذیری عمیقتر و پتانسیل مقیاسپذیری بدون محدودیت هزینهای هستند، گزینهای بیرقیب است. تفاوتهای اصلی در مدل قیمتگذاری (بر اساس استفاده در SaaS در مقابل هزینه زیرساخت در خودمیزبانی)، قابلیت دسترسی به کد منبع و امکان توسعه سفارشی، n8n را از رقبایش متمایز میکند. اگر تیم توسعه دارید یا دانش فنی کافی برای مدیریت سرور را دارا هستید، n8n میتواند ابزاری به مراتب قدرتمندتر و مقرونبهصرفهتر در بلندمدت باشد.
با این مقدمه، اکنون آمادهایم تا به مفاهیم کلیدی n8n بپردازیم که درک آنها برای ساخت جریانهای کاری موثر ضروری است.
آشنایی با مفاهیم کلیدی n8n
برای شروع به کار با n8n، درک چند مفهوم اساسی ضروری است. این مفاهیم، ساختار و منطق کاری n8n را تشکیل میدهند و تسلط بر آنها به شما کمک میکند تا جریانهای کاری پیچیده و کارآمدی را طراحی کنید.
Nodes (نودها): بلوکهای سازنده جریان کاری
نودها، بلوکهای سازنده هر جریان کاری در n8n هستند. هر نود یک وظیفه خاص را انجام میدهد، مانند دریافت داده از یک سرویس، انجام عملیات بر روی دادهها، ارسال داده به سرویس دیگر، یا اجرای منطق شرطی. n8n دارای صدها نود از پیشساخته برای سرویسهای مختلف، ابزارهای عمومی و عملیات منطقی است. نودها را میتوان به سه دسته اصلی تقسیم کرد:
- Trigger Nodes (نودهای راهانداز): این نودها اولین نود در هر جریان کاری هستند و مسئول آغاز یک گردش کار محسوب میشوند. آنها منتظر یک رویداد خاص میمانند تا گردش کار را فعال کنند. مثالها شامل:
- Webhook: انتظار برای دریافت درخواست HTTP (POST, GET و غیره).
- Schedule: فعالسازی در فواصل زمانی مشخص (هر ساعت، هر روز).
- Email: مانیتورینگ صندوق ورودی ایمیل برای پیامهای جدید.
- Service-specific triggers: مانند New Trello Card یا New GitHub Event.
- Regular Nodes (نودهای عادی): این نودها پس از یک نود راهانداز میآیند و عملیاتهای مختلفی را بر روی دادههای دریافتی انجام میدهند. آنها میتوانند دادهها را تغییر دهند، به سرویسهای دیگر ارسال کنند، یا منطقهای پیچیده را اجرا کنند. مثالها شامل:
- HTTP Request: ارسال درخواستهای HTTP به هر API.
- Set: افزودن، ویرایش یا حذف فیلدها از دادهها.
- If: اجرای منطق شرطی (مثلاً اگر مقدار X برابر Y باشد).
- Code: اجرای کد جاوا اسکریپت سفارشی برای عملیات پیچیده.
- Service-specific nodes: مانند Google Drive (Upload File)، Slack (Send Message).
- Webhooks: در حالی که Webhook میتواند یک نود راهانداز باشد، به طور کلی یک مفهوم مهم در n8n است. Webhooks به n8n اجازه میدهند تا با دریافت یک درخواست HTTP از یک سرویس خارجی (مانند یک فرم وب یا یک API دیگر)، جریان کاری را فعال کند. این یک روش قدرتمند برای ایجاد ارتباطات Real-time است.
- Sub-workflows: این قابلیت به شما اجازه میدهد تا بخشهای خاصی از یک جریان کاری را به عنوان یک جریان کاری مستقل تعریف کرده و سپس آن را در جریانهای کاری دیگر فراخوانی کنید. این کار به ماژولار کردن، افزایش خوانایی و قابلیت استفاده مجدد کمک میکند.
Workflows (جریانهای کاری): زنجیره نودها
یک جریان کاری در n8n مجموعهای از نودهای متصل به هم است که یک فرآیند اتوماسیون کامل را از ابتدا تا انتها تعریف میکند. دادهها به صورت سلسلهمراتبی از یک نود به نود بعدی منتقل میشوند. هر جریان کاری دارای یک نود راهانداز است که نقطه شروع آن را مشخص میکند و سپس میتواند شامل هر تعداد نود عادی باشد که به صورت متوالی یا موازی با هم کار میکنند.
- Execution (اجرا): زمانی که یک نود راهانداز فعال میشود، یک “اجرا” (execution) از جریان کاری آغاز میشود. n8n سابقه تمام اجراها را نگهداری میکند که برای دیباگینگ و مانیتورینگ بسیار مفید است.
- Data Flow (جریان داده): دادهها در n8n به صورت آیتم (item) بین نودها منتقل میشوند. هر آیتم یک شیء JSON است که حاوی دادههای مورد نیاز برای پردازش توسط نود بعدی است. درک نحوه جریان دادهها و ساختار JSON خروجی هر نود برای طراحی صحیح جریانهای کاری حیاتی است.
Credentials (اعتبارسنجی): نگهداری امن کلیدهای API
برای اتصال به سرویسهای خارجی (مانند Google Drive، Slack، ایمیل سرور)، n8n نیاز به اطلاعات اعتبارسنجی (مانند کلیدهای API، توکنهای OAuth، نام کاربری و رمز عبور) دارد. n8n این امکان را فراهم میکند که این اطلاعات حساس را به صورت امن و متمرکز ذخیره کنید. هنگام استفاده از نودی که نیاز به احراز هویت دارد، شما یک “credential” ایجاد کرده و آن را به نود مربوطه اختصاص میدهید. این روش باعث میشود که اطلاعات حساس مستقیماً در داخل جریان کاری قرار نگیرند و مدیریت آنها آسانتر و امنتر باشد.
Expressions (عبارات): دستکاری پویای دادهها
عبارات (Expressions) یکی از قدرتمندترین ویژگیهای n8n هستند. آنها به شما امکان میدهند تا دادهها را به صورت پویا بین نودها انتقال داده، ترکیب کرده و دستکاری کنید. عبارات از گرامر خاصی استفاده میکنند که بر پایه جاوا اسکریپت است و با دو براکت فرفری {{ }} مشخص میشوند. شما میتوانید با استفاده از عبارات به خروجی نودهای قبلی، متغیرهای محیطی، یا توابع کمکی دسترسی پیدا کنید. مثالها:
{{ $json.subject }}: دسترسی به فیلدsubjectاز خروجی نود قبلی.{{ $('Google Drive').item.json.fileId }}: دسترسی بهfileIdاز خروجی نود “Google Drive”.{{ $env.N8N_HOST }}: دسترسی به یک متغیر محیطی.{{ $now }}: استفاده از یک تابع کمکی برای دریافت زمان فعلی.
تسلط بر عبارات برای ساخت جریانهای کاری انعطافپذیر و داینامیک ضروری است.
Data Structure (ساختار داده): کار با JSON
همانطور که قبلاً ذکر شد، n8n دادهها را به صورت اشیاء JSON بین نودها منتقل میکند. درک ساختار دادههای ورودی و خروجی هر نود برای انجام عملیات صحیح بسیار مهم است. هر نود ورودی دریافت میکند (که میتواند یک آرایه از اشیاء JSON باشد) و خروجی تولید میکند (که نیز یک آرایه از اشیاء JSON است). شما باید بتوانید تشخیص دهید که کدام فیلدها در کدام سطح از JSON قرار دارند و چگونه به آنها با استفاده از عبارات دسترسی پیدا کنید. نودهایی مانند “Set” و “Code” به شما امکان میدهند تا این ساختارها را دستکاری کرده و دادهها را به فرمت دلخواه تبدیل کنید.
Execution Modes (حالتهای اجرا):
جریانهای کاری در n8n میتوانند به روشهای مختلفی اجرا شوند:
- Manual Execution: با کلیک روی دکمه “Execute Workflow” در ویرایشگر. مفید برای تست و دیباگینگ.
- Scheduled Execution: با استفاده از نودهای راهانداز “Schedule” که در فواصل زمانی مشخص (مثلاً هر 5 دقیقه یا هر روز ساعت 9 صبح) اجرا میشوند.
- Webhook-triggered Execution: با استفاده از نود راهانداز “Webhook” که منتظر درخواستهای HTTP از منابع خارجی است.
درک این مفاهیم پایهای، شما را برای نصب n8n و شروع به ساخت اولین جریان کاری خود آماده میکند.
نصب و راهاندازی n8n: گزینهها و ملاحظات فنی
قبل از اینکه بتوانیم جریانهای کاری خودکار را ایجاد کنیم، باید n8n را نصب و راهاندازی کنیم. n8n به دلیل متنباز بودن، گزینههای انعطافپذیری برای نصب ارائه میدهد که هر کدام مزایا و ملاحظات فنی خاص خود را دارند. رایجترین و توصیهشدهترین روش استفاده از Docker است، اما گزینههای دیگری نیز وجود دارند.
Docker: روش توصیهشده و قدرتمند
Docker بهترین راه برای نصب n8n است، زیرا محیطی ایزوله و قابل حمل فراهم میکند که مدیریت وابستگیها و استقرار را بسیار ساده میکند. شما به یک سرور (VPS یا ماشین مجازی) با سیستم عامل لینوکس (مانند Ubuntu) نیاز دارید که Docker و Docker Compose روی آن نصب باشد.
پیشنیازها:
- سرور: حداقل 2GB رم و 2 هسته CPU (برای بارهای کاری سبک). برای بارهای سنگینتر، منابع بیشتری لازم است.
- Docker و Docker Compose: اطمینان حاصل کنید که این دو ابزار بر روی سرور شما نصب شدهاند.
- پورتهای آزاد: n8n به طور پیشفرض روی پورت 5678 اجرا میشود. اطمینان حاصل کنید که این پورت در فایروال سرور شما آزاد است و در صورت نیاز، پورت 80 و 443 نیز برای Reverse Proxy.
- نام دامنه (اختیاری اما توصیه شده): برای دسترسی به n8n از طریق یک نام دامنه با SSL.
مراحل نصب با Docker Compose:
- ایجاد دایرکتوری برای n8n:
mkdir n8n-data cd n8n-data - ایجاد فایل
docker-compose.yml: این فایل پیکربندی سرویس n8n و هر سرویس کمکی دیگر (مانند پایگاه داده PostgreSQL) را تعریف میکند.version: '3.8' services: n8n: image: n8n:latest restart: always ports: - "5678:5678" environment: # تنظیمات اصلی n8n - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} # نام دامنه شما، مثلاً n8n.example.com - N8N_PORT=5678 - N8N_PROTOCOL=https # اگر از Reverse Proxy و SSL استفاده میکنید - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ # URL کامل برای Webhook ها - GENERIC_TIMEZONE=Asia/Tehran # منطقه زمانی - TZ=Asia/Tehran # منطقه زمانی برای Docker - N8N_DATA_FOLDER=/home/node/.n8n/ # مسیر ذخیره دادهها - N8N_LOG_LEVEL=info # سطح لاگ (debug, info, warn, error) - N8N_EMAIL_MODE=smtp # اگر میخواهید ایمیل ارسال کنید # ... سایر متغیرهای محیطی برای پایگاه داده، Redis و SMTP # متغیرهای مربوط به احراز هویت (مهم برای امنیت) - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=${N8N_USER} - N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD} volumes: - ./.n8n:/home/node/.n8n # نگهداری دادههای n8n به صورت پایدار # اگر از Postgres به جای SQLite استفاده میکنید، آن را به عنوان یک سرویس دیگر اضافه کنید # depends_on: # - postgres # command: n8n start --tunnel # postgres: # image: postgres:13 # restart: always # environment: # - POSTGRES_DB=n8n # - POSTGRES_USER=n8n # - POSTGRES_PASSWORD=n8n # volumes: # - ./postgres_data:/var/lib/postgresql/data # healthcheck: # test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"] # interval: 5s # timeout: 5s # retries: 5 - ایجاد فایل
.envبرای متغیرهای محیطی:touch .env nano .envمحتویات
.envرا با مقادیر واقعی خود پر کنید:DOMAIN_NAME=yourdomain.com SUBDOMAIN=n8n N8N_USER=admin N8N_PASSWORD=YourStrongPasswordHere # اگر از Postgres استفاده میکنید: # DB_TYPE=postgresdb # DB_POSTGRESDB_HOST=postgres # DB_POSTGRESDB_DATABASE=n8n # DB_POSTGRESDB_USER=n8n # DB_POSTGRESDB_PASSWORD=n8nتوجه:
N8N_BASIC_AUTH_USERوN8N_BASIC_AUTH_PASSWORDبرای اولین بار ورود به n8n استفاده میشوند. پس از ورود، میتوانید کاربران جدید را از داخل رابط کاربری n8n مدیریت کنید. - اجرای Docker Compose:
docker compose up -dاین دستور n8n را در پسزمینه راهاندازی میکند.
- پیکربندی Reverse Proxy (اختیاری اما توصیه شده برای SSL):
برای دسترسی به n8n از طریق HTTPS و یک نام دامنه زیبا (مثلاً
n8n.yourdomain.com)، باید یک Reverse Proxy (مانند Nginx یا Caddy) را پیکربندی کنید. این کار به شما امکان میدهد تا ترافیک را از پورت 80/443 به پورت 5678 n8n هدایت کنید و از Lets Encrypt برای SSL استفاده کنید.
مثال پیکربندی Nginx:server { listen 80; server_name n8n.yourdomain.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name n8n.yourdomain.com; ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/n8n.yourdomain.com/chain.pem; location / { proxy_pass http://localhost:5678; # یا IP سرور Docker 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; # WebSockets proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400s; # برای اتصالات طولانی مدت Webhook } }پس از پیکربندی Nginx، Certbot را برای دریافت گواهی SSL اجرا کنید:
sudo certbot --nginx -d n8n.yourdomain.com
npm: نصب جایگزین
برای توسعه محلی یا محیطهایی که Docker مناسب نیست، میتوانید n8n را با npm (Node Package Manager) نصب کنید. شما به Node.js و npm نصب شده بر روی سیستم خود نیاز دارید.
npm install n8n -g
سپس برای اجرای آن:
n8n
این روش به دلیل مشکلات احتمالی در مدیریت وابستگیها و ایزولهسازی، برای محیطهای تولیدی توصیه نمیشود. همچنین، با این روش مدیریت دیتابیس و سایر سرویسها پیچیدهتر است.
Cloud n8n (n8n.cloud):
n8n یک سرویس ابری رسمی نیز به نام n8n.cloud ارائه میدهد که به شما امکان میدهد بدون دردسر نصب و نگهداری، از n8n استفاده کنید. این گزینه برای کسانی که نمیخواهند با جزئیات فنی زیرساخت درگیر شوند، مناسب است، اما با محدودیتهای پلتفرم SaaS (هزینه بر اساس استفاده، عدم کنترل کامل بر سرور) همراه است. این مقاله بر روی خودمیزبانی تمرکز دارد.
ملاحظات امنیتی و اولیه:
- رمز عبور قوی: همیشه از رمزهای عبور قوی و منحصر به فرد برای کاربر ادمین n8n و دیتابیس خود استفاده کنید.
- بروزرسانی منظم: n8n را به طور منظم بروزرسانی کنید تا از آخرین ویژگیها و پچهای امنیتی بهرهمند شوید:
docker compose pull && docker compose up -d. - پایگاه داده: برای محیطهای تولیدی، به شدت توصیه میشود از یک پایگاه داده قویتر مانند PostgreSQL به جای SQLite پیشفرض استفاده کنید. این کار در فایل
docker-compose.ymlقابل تنظیم است. - متغیرهای محیطی: تمام متغیرهای محیطی حساس (مانند کلیدهای API، رمز عبور) را در فایل
.envیا به عنوان secrets در Docker Swarm/Kubernetes ذخیره کنید.
پس از اتمام نصب و راهاندازی، میتوانید با مرورگر خود به آدرس https://n8n.yourdomain.com (یا http://localhost:5678 اگر Reverse Proxy ندارید) رفته و با نام کاربری و رمز عبور خود وارد شوید. تبریک میگوییم! اکنون n8n شما آماده است تا اولین جریان کاری خود را طراحی کنید.
طراحی اولین جریان کاری: از ایده تا اجرا
اکنون که n8n را نصب و راهاندازی کردهایم، زمان آن فرا رسیده است که اولین جریان کاری خود را طراحی و اجرا کنیم. همانطور که در مقدمه اشاره شد، سناریوی عملیاتی ما به شرح زیر است: “دریافت ایمیلهای جدید با پیوست مشخص، ذخیره آنها در Google Drive و اطلاعرسانی در Slack.” این سناریو یک مثال جامع برای آشنایی با بسیاری از قابلیتهای کلیدی n8n است.
سناریو عملیاتی: اتوماسیون پردازش پیوستهای ایمیل
فرض کنید شما به طور منظم گزارشها یا فاکتورهای خاصی را از طریق ایمیل دریافت میکنید که دارای یک کلمه کلیدی در عنوان (مثلاً “Report_Monthly” یا “Invoice_”) و یک پیوست با فرمت PDF هستند. شما میخواهید این پیوستها به طور خودکار در یک پوشه خاص در Google Drive ذخیره شوند و سپس تیم مربوطه در Slack از دریافت و ذخیره فایل مطلع شوند.
مراحل طراحی و پیادهسازی:
مرحله 1: انتخاب Trigger Node (نود راهانداز) – IMAP Email Trigger
اولین گام، انتخاب یک نود راهانداز است که جریان کاری را با دریافت یک ایمیل جدید فعال کند. نود “IMAP Email Trigger” برای این منظور ایدهآل است.
- اضافه کردن نود: در ویرایشگر n8n، روی دکمه “+” کلیک کرده و “IMAP Email Trigger” را جستجو و انتخاب کنید.
- پیکربندی Credential:
- در قسمت “Credentials”، روی “Create new” کلیک کنید.
- نامی برای Credential خود انتخاب کنید (مثلاً “My IMAP Mailbox”).
- Host: آدرس سرور IMAP ایمیل شما (مثلاً
imap.gmail.comبرای Gmail یاoutlook.office365.comبرای Outlook). - Port: پورت IMAP (معمولاً
993برای SSL). - Authentication: نوع احراز هویت را انتخاب کنید. برای اکثر سرویسها، “Password” کافی است. برای Gmail، ممکن است نیاز به “App Password” یا “OAuth2” باشد.
- Username: آدرس ایمیل کامل شما.
- Password: رمز عبور ایمیل یا رمز عبور اپلیکیشن.
- SSL/TLS: “Enable” را انتخاب کنید.
- روی “Save” کلیک کنید.
- پیکربندی نود IMAP Email Trigger:
- Folder: پوشهای که میخواهید برای ایمیلهای جدید نظارت کنید (معمولاً “INBOX”).
- Check Interval: فواصل زمانی که n8n صندوق ورودی را بررسی میکند (مثلاً “Every 5 Minutes”).
- Only Unread: “True” را انتخاب کنید تا فقط ایمیلهای خوانده نشده پردازش شوند.
- Download Attachments: “True” را انتخاب کنید تا پیوستها دانلود شوند.
- Mark as Read: “True” را انتخاب کنید تا پس از پردازش، ایمیلها به عنوان خوانده شده علامتگذاری شوند.
- تست نود Trigger:
- روی “Execute Workflow” کلیک کنید.
- اگر هیچ ایمیل جدیدی وجود ندارد، یک ایمیل تست حاوی یک پیوست به صندوق ورودی خود ارسال کنید.
- دوباره “Execute Workflow” را بزنید. باید خروجی JSON نود را ببینید که شامل جزئیات ایمیل و اطلاعات پیوست است.
مرحله 2: فیلتر کردن ایمیلهای مرتبط – If Node
پس از دریافت ایمیل، باید مطمئن شویم که فقط ایمیلهای مرتبط با سناریوی ما پردازش میشوند. برای این کار از نود “If” استفاده میکنیم.
- اضافه کردن نود “If”: نود “If” را به نود “IMAP Email Trigger” متصل کنید.
- پیکربندی شرایط:
- در قسمت “Conditions”، یک شرط اضافه کنید:
- Value 1: با استفاده از Expression، موضوع ایمیل را انتخاب کنید:
{{ $json.subject }} - Operation: “Contains” را انتخاب کنید.
- Value 2: کلمه کلیدی مورد نظر (مثلاً
Report_Monthly).
- Value 1: با استفاده از Expression، موضوع ایمیل را انتخاب کنید:
- یک شرط دیگر برای اطمینان از وجود پیوست اضافه کنید:
- Value 1:
{{ $json.attachments.length }}(این یک عدد را برمیگرداند که تعداد پیوستهاست). - Operation: “Greater than” را انتخاب کنید.
- Value 2:
0.
- Value 1:
- میتوانید شرایط دیگری نیز اضافه کنید، مثلاً برای فیلتر بر اساس نام فرستنده یا نوع فایل پیوست (با بررسی
$json.attachments[0].mimeType).
- در قسمت “Conditions”، یک شرط اضافه کنید:
- تست نود “If”: نود را اجرا کنید. ایمیلهای منطبق باید از خروجی “True” و ایمیلهای نامنطبق از خروجی “False” خارج شوند.
مرحله 3: استخراج و پردازش پیوستها – Split In Batches و Set Node
اگر ایمیل دارای چندین پیوست باشد، میخواهیم هر پیوست را به صورت جداگانه پردازش کنیم. نود “Split In Batches” برای این کار مناسب است. سپس از نود “Set” برای آمادهسازی دادههای هر پیوست استفاده میکنیم.
- اضافه کردن نود “Split In Batches”: نود “Split In Batches” را به خروجی “True” نود “If” متصل کنید.
- Mode: “Split Into Items” را انتخاب کنید.
- Path: مسیر آرایه پیوستها را مشخص کنید:
attachments.
این نود هر پیوست را به عنوان یک آیتم جداگانه برای پردازش بعدی ارسال میکند.
- اضافه کردن نود “Set”: نود “Set” را به نود “Split In Batches” متصل کنید.
- این نود برای ایجاد یا تغییر فیلدها استفاده میشود. میخواهیم یک فیلد برای نام فایل نهایی در Google Drive و دیگری برای محتوای باینری فایل (که از نود IMAP میآید) آماده کنیم.
- Add Value:
- Name:
fileName - Value:
{{ $json.fileName }}(نام فایل از پیوست فعلی)
- Name:
- Add Value:
- Name:
fileData - Value:
{{ $json.data }}(محتوای باینری فایل از پیوست فعلی) - Type: “Binary Data” (برای اطمینان از انتقال صحیح دادههای باینری)
- Name:
- میتوانید نام فایل را با استفاده از عبارات پیچیدهتر، داینامیکتر کنید. مثلاً
{{ $json.fileName.split('.')[0] }}_{{ $today.toFormat('yyyyMMdd') }}.{{ $json.fileName.split('.')[1] }}برای اضافه کردن تاریخ.
- تست نود “Set”: نود را اجرا کنید. خروجی باید برای هر پیوست یک آیتم جداگانه با فیلدهای
fileNameوfileDataباشد.
مرحله 4: ذخیره فایل در Google Drive – Google Drive Node
حالا که پیوستها را آماده کردهایم، میتوانیم آنها را در Google Drive ذخیره کنیم.
- اضافه کردن نود “Google Drive”: نود “Google Drive” را به نود “Set” متصل کنید.
- پیکربندی Credential:
- یک Credential جدید از نوع “Google Drive OAuth2 API” ایجاد کنید.
- این یک فرآیند OAuth2 است که شما را به صفحه گوگل هدایت میکند تا به n8n اجازه دسترسی به Google Drive خود را بدهید. مطمئن شوید که دسترسیهای لازم را اعطا میکنید (مانند “See, edit, create, and delete all of your Google Drive files”).
- پس از موفقیت، Credential را ذخیره کنید.
- پیکربندی نود Google Drive:
- Operation: “Upload File” را انتخاب کنید.
- Binary Property:
fileData(این نام فیلدی است که در نود “Set” برای دادههای باینری ایجاد کردیم). - File Name:
{{ $json.fileName }}(از نود “Set” میآید). - Parent Folder: اینجا میتوانید ID پوشه مقصد در Google Drive را وارد کنید. برای پیدا کردن ID یک پوشه، به Google Drive بروید، پوشه را باز کنید و ID در URL مرورگر شما خواهد بود (مثلاً
https://drive.google.com/drive/folders/1aBcDeFgHiJkLmNoPqRsTuvWxyz).- اگر میخواهید پوشه را به صورت داینامیک انتخاب کنید، میتوانید از عبارات استفاده کنید، اما برای شروع یک ID ثابت را وارد کنید.
- Mime Type: (اختیاری) میتوانید از
{{ $json.mimeType }}استفاده کنید اگر نود IMAP آن را فراهم کند.
- تست نود Google Drive: نود را اجرا کنید. فایل باید در پوشه مشخص شده در Google Drive شما ظاهر شود. خروجی نود شامل اطلاعات فایل آپلود شده (مانند
fileId) خواهد بود که میتواند در مراحل بعدی استفاده شود.
تا این مرحله، ما توانستهایم ایمیلها را فیلتر کنیم، پیوستها را استخراج و آماده کنیم و آنها را در Google Drive ذخیره کنیم. گام بعدی، اطلاعرسانی به Slack است.
اعلامیه و یکپارچهسازی با Slack
پس از موفقیتآمیز بودن ذخیره فایل در Google Drive، مرحله بعدی اطلاعرسانی به تیم مربوطه از طریق Slack است. این مرحله نشان میدهد که چگونه میتوان از دادههای تولید شده در نودهای قبلی برای ایجاد پیامهای معنیدار و ارسال آنها به سرویسهای ارتباطی استفاده کرد.
مرحله 5: ارسال پیام به Slack – Slack Node
نود “Slack” امکان ارسال پیام به کانالها، گروههای خصوصی یا کاربران در Slack را فراهم میکند.
- اضافه کردن نود “Slack”: نود “Slack” را به نود “Google Drive” متصل کنید (یا حتی بهتر، میتوانید یک نود “Merge” اضافه کنید و سپس یک نود “Slack” را به آن متصل کنید تا حتی اگر چندین پیوست وجود داشت، یک پیام کلی ارسال شود؛ اما برای سادگی در این مرحله، آن را مستقیم وصل میکنیم).
- پیکربندی Credential:
- یک Credential جدید از نوع “Slack OAuth2 API” ایجاد کنید.
- این شما را به صفحه Slack هدایت میکند تا به n8n اجازه دسترسی به Workspace Slack خود را بدهید. مطمئن شوید که دسترسیهای لازم (مانند
chat:write,channels:read) را اعطا میکنید. - پس از موفقیت، Credential را ذخیره کنید.
- پیکربندی نود Slack:
- Operation: “Send Message” را انتخاب کنید.
- Channel: کانال Slack که میخواهید پیام به آن ارسال شود (مثلاً
#generalیا#reports). میتوانید از گزینه “Select from list” استفاده کنید یا ID کانال را وارد کنید. - Text: اینجا جایی است که از عبارات برای ساخت یک پیام داینامیک استفاده میکنیم.
مثال:🎉 فایل جدید بارگذاری شد! نام فایل: {{ $('Set').item.json.fileName }} ارسال شده توسط: {{ $('IMAP Email Trigger').item.json.from.name }} ({{ $('IMAP Email Trigger').item.json.from.address }}) تاریخ دریافت ایمیل: {{ $('IMAP Email Trigger').item.json.date }} لینک در Google Drive: {{ $('Google Drive').item.json.webViewLink }}در اینجا،
$('Set').item.json.fileNameبه نام فایل که در نود “Set” آماده کرده بودیم، دسترسی پیدا میکند.$('IMAP Email Trigger').item.json.from.nameو.addressاطلاعات فرستنده ایمیل را از نود راهانداز میگیرند. و$('Google Drive').item.json.webViewLinkلینک قابل مشاهده فایل در Google Drive را از خروجی نود “Google Drive” دریافت میکند. این نشان میدهد که چگونه میتوان دادهها را از نودهای مختلف در یک پیام ترکیب کرد. - Username: نام کاربری ربات در Slack (مثلاً “n8n Bot”).
- Icon Emoji: یک ایموجی برای آواتار ربات (مثلاً
:robot_face:).
- تست نود Slack: نود را اجرا کنید. یک پیام باید در کانال Slack شما ظاهر شود.
مرحله 6: مدیریت خطا و گزارشدهی
یک جریان کاری قوی نه تنها وظایف را انجام میدهد، بلکه در صورت بروز مشکل نیز به درستی واکنش نشان میدهد. مدیریت خطا (Error Handling) برای جلوگیری از توقف جریان کاری و اطلاعرسانی به موقع در مورد مشکلات بسیار حیاتی است.
- استفاده از Try/Catch:
- نود “Try/Catch” یک روش استاندارد برای مدیریت خطا در n8n است. شما میتوانید بخشی از جریان کاری خود را در یک بلوک “Try” قرار دهید. اگر در آن بخش خطایی رخ دهد، اجرای به بلوک “Catch” منتقل میشود.
- اضافه کردن نود Try/Catch: نودهای “Split In Batches” تا “Slack” را به یک نود “Try” متصل کنید. سپس یک نود “Catch” به نود “Try” اضافه کنید.
- پیکربندی نود Catch: در نود “Catch”، میتوانید یک نود “Slack” یا “Email Sender” دیگر را برای ارسال اعلان خطا قرار دهید.
مثال پیام خطا در Slack:🚨 خطا در پردازش فایل! ایمیل: {{ $('IMAP Email Trigger').item.json.subject }} خطا: {{ $json.error.message }} زمان خطا: {{ $now }}این پیام اطلاعات ایمیل اصلی و جزئیات خطا را از نود “Catch” ارائه میدهد.
- On Error Workflows (جریانهای کاری در صورت خطا):
- n8n همچنین به شما اجازه میدهد تا یک “On Error Workflow” سراسری را برای کل اینستنس n8n پیکربندی کنید. این جریان کاری زمانی فعال میشود که هر یک از جریانهای کاری دیگر با خطا مواجه شود و هیچ بلوک “Catch” محلی آن را مدیریت نکند.
- شما میتوانید آن را از منوی “Settings” و سپس “On Error Workflow” در رابط کاربری n8n پیکربندی کنید.
- Logging Outputs:
- برای دیباگینگ و مانیتورینگ، مفید است که خروجی نودهای کلیدی را لاگ کنید. میتوانید از نودهایی مانند “Write Binary File” برای ذخیره خروجی JSON به یک فایل، یا نودهای ادغام با سرویسهای لاگینگ خارجی (مانند DataDog، New Relic) استفاده کنید.
- n8n به طور داخلی تاریخچه اجرای هر جریان کاری را نگه میدارد که شامل ورودیها و خروجیهای هر نود است. با کلیک بر روی “Executions” در نوار کناری، میتوانید این لاگها را مشاهده کنید.
با پیادهسازی مدیریت خطا، جریان کاری شما انعطافپذیرتر و قابل اعتمادتر خواهد بود. اکنون ما یک جریان کاری کامل داریم که از دریافت ایمیل تا اطلاعرسانی Slack را پوشش میدهد. گام بعدی، تست، دیباگینگ و بهینهسازی است.
تست، دیباگینگ و بهینهسازی جریان کاری
طراحی یک جریان کاری تنها نیمی از راه است؛ نیمی دیگر شامل تست دقیق، دیباگینگ خطاها و بهینهسازی عملکرد است. این مرحله برای اطمینان از کارکرد صحیح و کارآمد جریان کاری شما حیاتی است.
تست جریان کاری
- اجرای دستی و مشاهده خروجیها:
- پس از ساخت هر نود، آن را به صورت دستی اجرا (با کلیک بر روی “Execute Node” یا “Execute Workflow”) و خروجی آن را در پنل سمت راست مشاهده کنید. این به شما کمک میکند تا ساختار دادهها را درک کرده و مطمئن شوید که نود ورودیهای صحیح را دریافت و خروجیهای مورد انتظار را تولید میکند.
- برای نودهای راهانداز (Trigger Nodes)، یک بار روی “Execute Workflow” کلیک کنید تا منتظر رویداد شوند. سپس یک رویداد واقعی را ایجاد کنید (مثلاً ارسال ایمیل در سناریوی ما).
- تست گام به گام:
- n8n به شما اجازه میدهد تا هر نود را به صورت جداگانه یا یک زنجیره از نودها را اجرا کنید. این برای ایزوله کردن و تست بخشهای خاصی از جریان کاری بسیار مفید است.
- میتوانید دادههای تست را به صورت دستی به یک نود تزریق کنید تا بدون نیاز به فعالسازی نود راهانداز، عملکرد آن را بررسی کنید.
- پوشش موارد لبه (Edge Cases):
- فراتر از سناریوهای ایدهآل، موارد لبه را نیز تست کنید. مثلاً:
- ایمیلی بدون پیوست.
- ایمیلی با چندین پیوست.
- ایمیلی با نام فایلهای غیرمعمول.
- خطا در اتصال به Google Drive یا Slack.
- ارسال ایمیل از فرستندههای نامعتبر.
مطمئن شوید که منطق “If” و بلوکهای “Try/Catch” شما این موارد را به درستی مدیریت میکنند.
- فراتر از سناریوهای ایدهآل، موارد لبه را نیز تست کنید. مثلاً:
دیباگینگ جریان کاری
هنگام بروز مشکل، n8n ابزارهای قدرتمندی برای یافتن و رفع خطاها ارائه میدهد.
- بررسی Execution Logs (گزارشهای اجرا):
- پس از هر بار اجرا (چه موفق و چه ناموفق)، n8n یک ورودی در بخش “Executions” (در نوار کناری) ایجاد میکند. این لاگها بسیار ارزشمند هستند.
- روی یک اجرای خاص کلیک کنید تا نمودار جریان کاری و وضعیت هر نود در آن اجرا را ببینید.
- n8n ورودی و خروجی JSON هر نود را ذخیره میکند. با کلیک بر روی یک نود و سپس تب “Output” یا “Input”، میتوانید دادههایی که از آن نود عبور کردهاند را مشاهده کنید. این به شما کمک میکند تا دقیقاً ببینید در کدام مرحله دادهها تغییر کرده یا مشکلی ایجاد شده است.
- پیامهای خطا:
- هنگامی که یک نود با خطا مواجه میشود، n8n پیام خطا را به وضوح نمایش میدهد. این پیامها معمولاً اطلاعات کافی برای شناسایی ریشه مشکل را دارند (مثلاً “Authentication failed” یا “File not found”).
- اگر از بلوک “Try/Catch” استفاده کردهاید، اطلاعات خطا در نود “Catch” قابل دسترسی است و میتوانید آن را در یک پیام اعلان گزارش دهید.
- استفاده از نود “Code” برای دیباگینگ:
- نود “Code” یک ابزار قدرتمند برای دیباگینگ پیشرفته است. میتوانید قطعه کدهای جاوا اسکریپت را برای لاگ کردن متغیرها به کنسول (
console.log()) یا حتی تزریق دادههای دلخواه برای تست، اضافه کنید. - برای مشاهده خروجی
console.log، باید سطح لاگ n8n را بهdebugتغییر دهید (N8N_LOG_LEVEL=debugدر فایل.env) و لاگهای Docker را مشاهده کنید (docker compose logs -f n8n).
- نود “Code” یک ابزار قدرتمند برای دیباگینگ پیشرفته است. میتوانید قطعه کدهای جاوا اسکریپت را برای لاگ کردن متغیرها به کنسول (
- بررسی Credential:
- یکی از رایجترین منابع خطا، مشکل در Credentialها است. مطمئن شوید که Credentialهای شما صحیح و معتبر هستند و دسترسیهای لازم را دارند. گاهی اوقات توکنهای OAuth منقضی میشوند و نیاز به تجدید دارند.
بهینهسازی جریان کاری
پس از اینکه جریان کاری شما به درستی کار کرد، میتوانید به بهینهسازی آن برای عملکرد، مقیاسپذیری و خوانایی بپردازید.
- پردازش دستهای (Batch Processing):
- اگر جریان کاری شما مقادیر زیادی از دادهها را پردازش میکند، استفاده از نود “Split In Batches” و “Merge” میتواند عملکرد را بهبود بخشد. با پردازش دادهها در دستههای کوچکتر، میتوانید مصرف حافظه را کاهش دهید و از محدودیتهای API جلوگیری کنید.
- پس از پردازش هر دسته، میتوانید نتایج را با “Merge” (با حالت “Merge By Index” یا “Merge By Field”) دوباره ترکیب کنید.
- جلوگیری از فراخوانیهای API غیرضروری:
- سعی کنید تعداد فراخوانیهای API را به حداقل برسانید. اگر میتوانید دادهها را از یک نود قبلی بازیابی کنید، نیازی به فراخوانی مجدد API برای همان دادهها نیست.
- از نود “NoOp” (No Operation) برای مسیریابی شرطی در صورتی که نیازی به ادامه اجرای یک شاخه خاص از جریان کاری نیست، استفاده کنید.
- ماژولار کردن با Sub-workflows:
- برای جریانهای کاری پیچیده، بخشهای تکراری یا مستقل را میتوان به Sub-workflows تبدیل کرد. این کار به سازماندهی بهتر، خوانایی بیشتر و قابلیت استفاده مجدد کمک میکند.
- یک Sub-workflow مانند یک تابع در برنامهنویسی عمل میکند که میتواند ورودی دریافت کرده و خروجی تولید کند.
- نامگذاری واضح و توضیحات:
- نامهای معنیدار برای نودها، Credentialها و خود جریانهای کاری انتخاب کنید.
- از قابلیت “Description” در هر نود برای توضیح عملکرد آن استفاده کنید. این کار به شما و سایر اعضای تیم در درک سریعتر منطق جریان کاری کمک میکند.
- نسخهبندی جریان کاری (Workflow Versioning):
- n8n دارای سیستم نسخهبندی داخلی برای جریانهای کاری است. قبل از اعمال تغییرات بزرگ، همیشه یک نسخه جدید (یا پشتیبان) از جریان کاری خود ایجاد کنید. این به شما امکان میدهد تا در صورت بروز مشکل، به نسخه قبلی بازگردید.
- میتوانید با کلیک روی آیکون “Versions” در ویرایشگر جریان کاری، نسخهها را مدیریت کنید.
- Idempotency (همپایگی):
- در برخی سناریوها، ممکن است یک جریان کاری چندین بار اجرا شود (مثلاً به دلیل خطای شبکه یا تنظیمات Trigger). اطمینان حاصل کنید که اجرای مجدد یک جریان کاری، نتیجه نهایی را تغییر نمیدهد.
- مثلاً، قبل از ایجاد یک فایل جدید در Google Drive، بررسی کنید که آیا فایلی با همان نام از قبل وجود دارد یا خیر.
- زمانبندی مناسب (Scheduling):
- اگر از نود “Schedule Trigger” استفاده میکنید، زمانبندی را به گونهای تنظیم کنید که نه بیش از حد مکرر باشد (مصرف منابع زیاد) و نه بیش از حد نادر (تأخیر در پردازش).
با رعایت این نکات، نه تنها جریان کاری شما به درستی کار خواهد کرد، بلکه پایدار، قابل نگهداری و مقیاسپذیر نیز خواهد بود. این دانش شما را به سمت استفاده از قابلیتهای پیشرفتهتر n8n سوق میدهد.
ملاحظات پیشرفته و بهترین شیوهها
پس از ساخت و بهینهسازی اولین جریان کاری، اکنون زمان آن است که به قابلیتهای پیشرفته n8n بپردازیم و بهترین شیوهها را برای ساخت اتوماسیونهای قدرتمند، امن و مقیاسپذیر بررسی کنیم. این بخش برای کسانی است که میخواهند از n8n فراتر از حد یک ابزار ساده اتوماسیون استفاده کنند و آن را به بخش جداییناپذیری از زیرساختهای خود تبدیل کنند.
افزایش مقیاس و عملکرد (Scaling and Performance)
هنگامی که تعداد جریانهای کاری یا حجم دادههای پردازشی افزایش مییابد، بهینهسازی n8n برای مقیاسپذیری حیاتی میشود.
- حالت Queue Mode (با Redis یا PostgreSQL):
- به طور پیشفرض، n8n از یک صف داخلی برای پردازش اجراها استفاده میکند. اما برای محیطهای تولیدی با حجم بالا، توصیه میشود از یک صف پیام خارجی مانند Redis یا یک پایگاه داده قویتر مانند PostgreSQL (به همراه صف داخلی آن) استفاده کنید.
- Redis: با تنظیم متغیرهای محیطی
N8N_QUEUE_HEALTH_CHECK_ACTIVE=true,N8N_QUEUE_REDIS_HOST=redisوN8N_QUEUE_REDIS_PORT=6379در فایل.envو اضافه کردن سرویس Redis بهdocker-compose.yml، میتوانید از Redis به عنوان صف استفاده کنید. Redis به n8n اجازه میدهد تا اجراها را به صورت نامتقارن پردازش کند و از bottleneck جلوگیری کند. - PostgreSQL: با تنظیم
DB_TYPE=postgresdbو اطلاعات اتصال به دیتابیس PostgreSQL، n8n به صورت خودکار از قابلیت صف آن استفاده میکند. - این کار اجازه میدهد تا n8n به صورت پایدارتر و با کارایی بیشتری اجراهای متعدد را مدیریت کند، به ویژه در شرایطی که نیاز به پردازش موازی است.
- Worker Nodes (نودهای کاری):
- با استفاده از حالت Queue Mode، میتوانید n8n را به دو بخش جداگانه تقسیم کنید: یک “Main Process” که مسئول مدیریت رابط کاربری، نودهای راهانداز و زمانبندی است و یک یا چند “Worker Process” که مسئول اجرای واقعی جریانهای کاری هستند.
- این معماری به شما اجازه میدهد تا بار کاری را بین چندین سرور یا کانتینر تقسیم کنید و به این ترتیب مقیاسپذیری افقی (Horizontal Scaling) را به دست آورید. برای راهاندازی Workerها، نیاز است که سرویس n8n را با
command: n8n workerدرdocker-compose.ymlجداگانه اجرا کنید و اطمینان حاصل کنید که هر دو به یک Redis یا PostgreSQL متصل هستند.
- Load Balancing:
- اگر از چندین Worker Node استفاده میکنید، میتوانید یک Load Balancer (مانند Nginx، HaProxy یا Load Balancer ابری) را در جلوی آنها قرار دهید تا ترافیک را به طور مساوی توزیع کند و قابلیت دسترسی بالا (High Availability) را فراهم کند.
امنیت (Security)
امنیت در هر سیستم اتوماسیون حیاتی است، به ویژه که n8n اغلب به دادههای حساس و سیستمهای داخلی دسترسی دارد.
- مدیریت کاربران و دسترسی (User Management and Access Control):
- n8n قابلیت مدیریت کاربران را فراهم میکند. میتوانید کاربران جدید با نقشهای مختلف (Admin، Regular User) ایجاد کرده و به هر کاربر فقط اجازه دسترسی به جریانهای کاری خاصی را بدهید.
- همیشه از احراز هویت قوی (مانند MFA یا SSO) در سطح سرور یا Reverse Proxy استفاده کنید.
- رمز عبور و کلیدهای API:
- هرگز اطلاعات حساس (رمز عبور، کلیدهای API) را مستقیماً در فایل
docker-compose.ymlیا کد جریان کاری خود قرار ندهید. همیشه از متغیرهای محیطی (مانند فایل.env) یا سیستمهای مدیریت Secret (مانند Docker Secrets، Kubernetes Secrets، HashiCorp Vault) استفاده کنید. - اطمینان حاصل کنید که Credentialها در n8n به درستی پیکربندی شدهاند و حداقل دسترسی لازم را دارند (Principle of Least Privilege).
- هرگز اطلاعات حساس (رمز عبور، کلیدهای API) را مستقیماً در فایل
- بروزرسانی منظم:
- همیشه n8n و تمام وابستگیهای آن (Node.js، Docker) را به آخرین نسخه بروزرسانی کنید تا از پچهای امنیتی جدید بهرهمند شوید.
- Network Segmentation:
- n8n را در یک شبکه ایزوله (DMZ) مستقر کنید و دسترسی به آن را فقط به IPهای مورد نیاز محدود کنید (با استفاده از فایروال).
- Backup & Recovery:
- از دادههای n8n (پوشه
.n8nو پایگاه داده) به طور منظم نسخه پشتیبان تهیه کنید تا در صورت بروز مشکل، بتوانید آن را بازیابی کنید.
- از دادههای n8n (پوشه
مانیتورینگ و لاگینگ (Monitoring and Logging)
برای حفظ پایداری و عملکرد سیستم، مانیتورینگ فعال و لاگینگ جامع ضروری است.
- لاگهای n8n:
- n8n لاگهای داخلی خود را تولید میکند که میتوانند برای دیباگینگ و مشاهده فعالیتهای سیستم استفاده شوند. میتوانید سطح لاگ را با
N8N_LOG_LEVELدر متغیرهای محیطی تنظیم کنید. - این لاگها معمولاً از طریق Docker Logs (
docker compose logs n8n) قابل دسترسی هستند.
- n8n لاگهای داخلی خود را تولید میکند که میتوانند برای دیباگینگ و مشاهده فعالیتهای سیستم استفاده شوند. میتوانید سطح لاگ را با
- یکپارچهسازی با ابزارهای مانیتورینگ خارجی:
- برای مانیتورینگ عملکرد (استفاده از CPU، RAM، تعداد اجراها، زمان اجرا)، میتوانید n8n را با ابزارهای مانیتورینگ مانند Prometheus (با استفاده از Node Exporter) و Grafana یکپارچه کنید. n8n میتواند metrics خاص خود را نیز منتشر کند.
- برای لاگهای متمرکز، میتوانید از ابزارهایی مانند ELK Stack (Elasticsearch, Logstash, Kibana) یا Graylog استفاده کنید.
- اعلانهای خطا:
- همانطور که قبلاً ذکر شد، پیکربندی یک “On Error Workflow” سراسری یا بلوکهای “Try/Catch” برای ارسال اعلانهای فوری در صورت بروز خطا به Slack، ایمیل یا سیستمهای مدیریت هشدار (مانند PagerDuty) بسیار مهم است.
استفاده از Webhooks و APIها (Using Webhooks and APIs)
Webhooks و نود HTTP Request ستون فقرات اتصال n8n به دنیای خارج هستند.
- Exposing Custom Endpoints:
- با نود “Webhook” میتوانید URLهای عمومی را در n8n ایجاد کنید که میتوانند از هر سیستم خارجی فراخوانی شوند. این یک روش قدرتمند برای ایجاد APIهای سفارشی یا دریافت رویدادها از سرویسهای مختلف است.
- میتوانید روش HTTP (GET, POST, PUT, DELETE)، احراز هویت (Basic Auth, Header Auth) و پارامترهای Query را پیکربندی کنید.
- Handling Different HTTP Methods:
- یاد بگیرید که چگونه درخواستهای HTTP با متدهای مختلف را با نود “Webhook” مدیریت کنید و چگونه دادههای JSON، فرم یا Query Param را از درخواستهای ورودی استخراج کنید.
- Rate Limiting و API Keys:
- هنگام فراخوانی APIهای خارجی با نود “HTTP Request”، به محدودیتهای نرخ (Rate Limiting) API توجه کنید. میتوانید از نود “Wait” یا “Split In Batches” برای کنترل سرعت درخواستها استفاده کنید.
- همیشه کلیدهای API را به صورت امن در Credentialها ذخیره کنید.
کار با دادههای پیچیده (Working with Complex Data)
n8n با دادههای JSON کار میکند که اغلب میتواند ساختارهای پیچیدهای داشته باشد.
- JSONata Expressions:
- علاوه بر عبارات جاوا اسکریپت ساده، n8n از JSONata نیز پشتیبانی میکند که یک زبان پرسوجوی قدرتمند برای دستکاری و تبدیل ساختارهای JSON پیچیده است.
- JSONata برای فیلتر کردن آرایهها، تغییر شکل اشیاء و انجام محاسبات بر روی دادههای JSON بسیار مفید است.
- Code Node (JavaScript):
- برای سناریوهای که نیاز به منطق بسیار سفارشی یا تبدیل دادههای پیچیده دارید، نود “Code” به شما امکان میدهد کد جاوا اسکریپت دلخواه را اجرا کنید.
- میتوانید با
$itemبه آیتمهای ورودی، با$item.jsonبه دادههای JSON و با$item.binaryبه دادههای باینری دسترسی پیدا کنید. همچنین میتوانید اشیاء جدید ایجاد کرده و آنها را به عنوان خروجی برگردانید. - این نود سطح بینهایتی از انعطافپذیری را برای توسعهدهندگان فراهم میکند.
- Data Transformation Patterns:
- یاد بگیرید که چگونه الگوهای رایج تبدیل داده مانند “map” (تبدیل یک آرایه به آرایه دیگر)، “filter” (فیلتر کردن آیتمها) و “reduce” (تجمع دادهها) را با نودهایی مانند “Map” (جدیدتر) یا “Code” پیادهسازی کنید.
بهترین شیوههای طراحی (Design Best Practices)
طراحی خوب جریان کاری، باعث پایداری، خوانایی و نگهداری آسانتر میشود.
- Modular Workflows:
- جریانهای کاری خود را به بخشهای کوچکتر و قابل مدیریت تقسیم کنید و از Sub-workflows برای وظایف مشترک استفاده کنید.
- این کار اشکالزدایی را آسانتر و توسعه را سریعتر میکند.
- Clear Naming Conventions:
- نامهای واضح و توصیفی برای نودها، Credentialها و جریانهای کاری خود انتخاب کنید.
- این کار به شما و سایر اعضای تیم کمک میکند تا به سرعت عملکرد هر جزء را درک کنید.
- Adding Descriptions to Nodes:
- از قابلیت “Description” در هر نود برای توضیح هدف، ورودیها، خروجیها و هر منطق خاص استفاده کنید. این به عنوان مستندات داخلی عمل میکند.
- Consistent Error Handling:
- یک رویکرد استاندارد برای مدیریت خطا در سراسر تمام جریانهای کاری خود اتخاذ کنید، چه با “Try/Catch” و چه با “On Error Workflow”.
با در نظر گرفتن این ملاحظات پیشرفته و بهترین شیوهها، شما قادر خواهید بود تا جریانهای کاری n8n را نه تنها بسازید، بلکه آنها را به سیستمهای قدرتمند، امن و پایدار تبدیل کنید که میتوانند نیازهای اتوماسیون پیچیدهترین سازمانها را نیز برآورده سازند.
نتیجهگیری: آینده اتوماسیون با n8n
در این راهنمای جامع، از معرفی مفاهیم بنیادی n8n و انتخاب گزینه مناسب برای نصب آن گرفته تا طراحی و پیادهسازی یک جریان کاری عملی، دیباگینگ و بهینهسازی، و در نهایت کاوش در ملاحظات پیشرفته، سفر عمیقی به دنیای اتوماسیون با n8n داشتیم. ما شاهد بودیم که چگونه n8n با مدل متنباز و قابلیت خودمیزبانی خود، انعطافپذیری و کنترل بیسابقهای را در اختیار کاربران قرار میدهد که در پلتفرمهای ابری بسته کمتر دیده میشود.
شما اکنون ابزارها و دانش لازم را در اختیار دارید تا اولین جریان کاری خودکار خود را بسازید: دریافت و فیلتر کردن ایمیلها با پیوستهای خاص، ذخیره امن آنها در Google Drive و سپس ارسال اعلانهای فوری به Slack. این تنها یک نمونه کوچک از قابلیتهای بیشمار n8n است. با تسلط بر مفاهیم نودها، عبارات، Credentialها، و با استفاده از بهترین شیوههای طراحی و امنیت، قادر خواهید بود تا هرگونه فرآیند تکراری و پیچیده را در سازمان خود خودکارسازی کنید.
آینده اتوماسیون با n8n روشن است. با جامعه فعال، توسعه مداوم و توانایی بینظیر برای ادغام با تقریباً هر سرویس و API، n8n به شما این قدرت را میدهد که خالق راهحلهای اتوماسیون خود باشید، بدون اینکه نگران هزینههای گزاف یا محدودیتهای پلتفرمهای اختصاصی باشید. این آزادی و قدرت، n8n را به انتخابی ایدهآل برای توسعهدهندگان، مهندسان DevOps، و هر کسبوکاری که به دنبال حداکثر کارایی و کنترل است، تبدیل میکند.
اکنون زمان آن فرا رسیده است که این دانش را به عمل تبدیل کنید. با n8n خود شروع به آزمایش کنید، ایدههای جدید را کاوش کنید و جریانهای کاری را بسازید که نه تنها زمان شما را آزاد میکنند، بلکه سازمان شما را به سطح جدیدی از بهرهوری و نوآوری میرسانند. انجمن n8n و مستندات رسمی منابع عالی برای یادگیری بیشتر و حل چالشهای احتمالی هستند. قدم اول را برداشتید؛ اکنون به ساختن ادامه دهید!
“تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”
"تسلط به برنامهنویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"
"با شرکت در این دوره جامع و کاربردی، به راحتی مهارتهای برنامهنویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر میسازد تا به سرعت الگوریتمهای پیچیده را درک کرده و اپلیکیشنهای هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفهای و امکان دانلود و تماشای آنلاین."
ویژگیهای کلیدی:
بدون نیاز به تجربه قبلی برنامهنویسی
زیرنویس فارسی با ترجمه حرفهای
۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان