راهنمای جامع نصب و راه‌اندازی n8n به صورت خودمیزبان (Self-Hosted) بر روی اوبونتو

معرفی n8n و کاربرد آن در اتوماسیون ورک‌فلو

n8n یک پلتفرم اتوماسیون گردش‌کار (Workflow Automation) متن‌باز است که امکان اتصال و یکپارچه‌سازی اپلیکیشن‌ها، سرویس‌ها و APIهای مختلف را بدون نیاز به کدنویسی پیچیده فراهم می‌کند این ابزار در سال ۲۰۱۹ توسط یان اوبرهاوزر (Jan Oberhauser) در برلین توسعه داده شد و به عنوان یک جایگزین قدرتمند و متن‌باز برای سرویس‌های اتوماسیون تجاری مانند Zapier و Make شناخته می‌شود با استفاده از n8n می‌توانید فرآیندهای دستی و تکراری را به شکل خودکار درآورید و بین صدها سرویس مختلف تعامل برقرار کنید. به عنوان مثال، n8n از بیش از ۳۰۰ سرویس محبوب (Google Sheets، Slack، Trello، Telegram، GitHub، OpenAI و …) پشتیبانی می‌کند که این یعنی می‌توانید سناریوهای بسیار متنوعی را پیاده‌سازی کنید.

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

مزایای Self-Hosted بودن n8n در مقایسه با نسخه Cloud

n8n به دو شکل قابل استفاده است: یا از نسخه ابری (n8n Cloud) که توسط وب‌سایت n8n ارائه می‌شود، یا به صورت خودمیزبان (Self-Hosted) که شما نرم‌افزار را روی سرور خودتان نصب و مدیریت می‌کنید. در ادامه، مزایای کلیدی حالت Self-Hosted را نسبت به سرویس ابری مرور می‌کنیم:

  • رایگان و بدون محدودیت: نسخه خودمیزبان n8n کاملاً رایگان بوده و برخلاف پلن‌های ابری یا ابزارهایی مثل Zapier، محدودیتی در تعداد گردش‌کار (Workflow) یا تعداد اجرای آنها ندارد. شما می‌توانید هر تعداد سناریو و وظیفه را بدون هزینه اجرا کنید. در نسخه کلود معمولاً بسته به پلن انتخابی، محدودیت‌هایی در تعداد اجرای ماهانه یا تعداد workflow وجود دارد و پس از حد مشخص باید هزینه پرداخت کنید، اما در نسخه خودمیزبان چنین محدودیتی مطرح نیست
  • کنترل کامل روی داده‌ها و حریم خصوصی: با میزبانی n8n روی سرور خود، تمام داده‌های گردش‌کارها، اطلاعات حساس و اعتبارات (credentials) سرویس‌ها روی زیرساخت خودتان باقی می‌ماند. هیچ داده‌ای به سرورهای شخص ثالث ارسال نمی‌شود مگر اینکه خودتان در گردش‌کار این کار را انجام دهید. این امر به رعایت بهتر موارد امنیتی و مقررات حریم خصوصی (مثلاً GDPR) کمک می‌کند و اطمینان می‌دهد که اطلاعات کسب‌وکار شما در اختیار دیگران قرار نخواهد گرفت.
  • سفارشی‌سازی و انعطاف‌پذیری بیشتر: در حالت Self-Hosted شما می‌توانید تنظیمات n8n را مطابق نیاز خود تغییر دهید، افزونه‌ها یا Nodeهای سفارشی اضافه کنید و حتی کد منبع را (به دلیل متن‌باز بودن) بررسی یا ویرایش کنید. برای مثال، می‌توانید نودهای اختصاصی برای سیستم‌های داخلی خود توسعه دهید یا n8n را به سیستم احراز هویت سازمان خود متصل کنید. در نسخه ابری چنین آزادی عملی محدوتر است. همچنین self-hosting اجازه می‌دهد n8n را در معماری شبکه‌ای دلخواه قرار دهید (برای نمونه پشت فایروال سازمان یا در شبکه محلی) و یکپارچه‌سازی عمیق‌تری با سایر سیستم‌های داخلی داشته باشید.
  • کاهش هزینه‌های بلندمدت: هرچند راه‌اندازی اولیه n8n خودمیزبان نیاز به سرور دارد، اما در بلندمدت می‌تواند بسیار مقرون‌به‌صرفه باشد. شما از مدل پرداخت اشتراک رهایی می‌یابید و فقط هزینه سرور (که می‌تواند ناچیز یا حتی صفر باشد) را می‌پردازید. برای کاربردهای پرحجم، خودمیزبانی معمولاً هزینه کلی بسیار کمتری نسبت به استفاده از سرویس ابری خواهد داشت، زیرا سرویس‌های ابری معمولاً به ازای هر اجرا یا هر جریان هزینه دریافت می‌کنند. به عنوان نمونه، در نسخه خودمیزبان تعداد کاربران، نودها یا میزان پیچیدگی workflowها نامحدود است، در حالی که پلن‌های ابری ممکن است بابت هر کاربر اضافی یا ویژگی پیشرفته هزینه داشته باشند.

نکته: تنها چالش Self-Hosted این است که شما مسئول مدیریت سرور و نگهداری سیستم خواهید بود. باید به‌روزرسانی‌های n8n را منظم انجام دهید، از داده‌های خود نسخه پشتیبان بگیرید و امنیت سرور را تامین کنید. این موارد نیاز به دانش فنی (هر چند مقدماتی) دارد و اگرچه دشوار نیست، اما نباید فراموش شود.

روش‌های رایگان یا کم‌هزینه برای Self-Hosting (انتخاب VPS مناسب)

یکی از مزایای بزرگ n8n این است که برای اجرای نسخه خودمیزبان نیاز به سرور بسیار قدرتمندی ندارد و می‌توان آن را حتی روی سرورهای کوچک اجرا کرد. در نتیجه، می‌توانید با کمترین هزینه یا حتی رایگان یک سرور مجازی خصوصی (VPS) تهیه کرده و n8n را روی آن اجرا کنید. در این بخش به چند راهکار رایگان یا ارزان برای میزبانی n8n اشاره می‌کنیم:

  • استفاده از پلن رایگان سرویس‌های ابری بزرگ: برخی ارائه‌دهندگان cloud پلن رایگان (Free Tier) دارند. به عنوان مثال، Oracle Cloud دو VM رایگان دائمی ارائه می‌دهد (با ۱ گیگ RAM و ۲ هسته CPU) که برای اجرای n8n کافی است. سرویس Amazon AWS نیز دارای Free Tier یک‌ساله است که در سال اول می‌توانید از یک سرور کوچک (مثلاً t2.micro) رایگان استفاده کنید. همچنین Google Cloud Platform برای برخی سرویس‌ها مانند یک VM کوچک (f1-micro یا e2-micro) به‌صورت رایگان محدودیتی قائل نمی‌شود یا اعتبار رایگان اولیه در اختیار می‌گذارد. مایکروسافت Azure هم برای دانشجویان یا اشتراک آزمایشی، اعتبار رایگان ارائه می‌دهد.
  • VPSهای رایگان دیگر: به جز غول‌های ابری، سرویس‌های دیگری هم گاهی VPS رایگان عرضه می‌کنند. برای مثال، پلتفرم Heroku تا پیش از این یک پلن رایگان برای اجرای دائمی اپلیکیشن‌ها داشت (اکنون مدل رایگان آن محدود شده است). سرویس‌های Railway.app یا Fly.io نیز پلن رایگان با منابع اندک دارند که می‌توان برای آزمون n8n استفاده کرد، هرچند برای اجرای مداوم ۲۴/۷ ممکن است مناسب نباشند.
  • خرید VPS ارزان‌قیمت: اگر امکان استفاده از پلن‌های رایگان را ندارید، خوشبختانه سرورهای مجازی بسیار ارزانی در دسترس هستند. بسیاری از ارائه‌دهندگان، پلن‌های پایه با قیمت حدود $۳ تا $۵ در ماه ارائه می‌کنند که برای n8n کفایت می‌کند. به عنوان نمونه، شرکت‌هایی مانند DigitalOcean، Linode، Vultr و … سرورهایی با ۱ گیگ RAM در این رنج قیمت دارند. حتی برخی ارائه‌دهندگان داخلی یا منطقه‌ای ممکن است پلن‌های مقرون‌به‌صرفه ارائه دهند. از آنجا که مصرف منابع n8n برای کاربردهای سبک چندان بالا نیست، یک VPS با ۱CPU و 1~2GB RAM می‌تواند چندین workflow را به راحتی اجرا کند.
  • استفاده از سخت‌افزار شخصی: به عنوان گزینه دیگر، اگر یک رایانه یا رزبری‌پای دارید که همیشه روشن است، می‌توانید n8n را روی آن نصب کرده و پورت‌های لازم را روی مودم خود باز کنید. با این کار، عملاً یک “سرور خانگی” برای خود خواهید داشت. البته باید تنظیمات DDNS (برای آی‌پی دینامیک) و مسائل امنیتی را در نظر بگیرید که در ادامه به مواردی مثل DuckDNS اشاره خواهیم کرد.

در مجموع، برای راه‌اندازی n8n به صورت خودمیزبان الزامی به صرف هزینه زیاد نیست. شما می‌توانید ابتدا با یک VPS رایگان یا ارزان کار را شروع کنید و در صورت رشد نیازها، به سرور قوی‌تری مهاجرت کنید. پس از تهیه VPS مناسب، قدم‌های بعدی نصب نرم‌افزار بر روی Ubuntu و تنظیم آن است که در بخش‌های بعدی توضیح داده شده‌اند.

آموزش گام‌به‌گام نصب n8n روی Ubuntu با استفاده از Docker

در این بخش، نصب n8n روی یک سرور Ubuntu به کمک Docker توضیح داده می‌شود. Docker این امکان را می‌دهد که n8n و وابستگی‌هایش در یک کانتینر ایزوله اجرا شوند که روند نصب را ساده‌تر می‌کند. فرض می‌کنیم شما یک سرور Ubuntu (مثلاً نسخه 20.04 یا 22.04) در اختیار دارید و با کاربر دارای دسترسی sudo وارد شده‌اید. مراحل زیر را به ترتیب انجام دهید:

  1. نصب Docker: ابتدا مخازن بسته را به‌روز کرده و Docker را نصب کنید: sudo apt update && sudo apt upgrade -y && sudo apt install docker.io -y این دستورات Docker را روی اوبونتو نصب و سرویس آن‌را فعال می‌کند. برای اطمینان، با دستور docker --version نسخه Docker را چک کنید. (در صورت نیاز، می‌توانید بسته docker-compose را نیز نصب کنید یا از Docker Compose v2 که در Docker تعبیه شده استفاده نمایید، اما در این راهنما از docker run ساده استفاده می‌کنیم).
  2. افزودن کاربر به گروه Docker (اختیاری): این مرحله اختیاری است. اگر نمی‌خواهید هر بار از sudo برای اجرای Docker استفاده کنید، کاربر جاری را به گروه docker اضافه کنید: sudo usermod -aG docker $USER سپس یک بار logout/login کنید. بعد از این، می‌توانید دستورات docker را بدون sudo اجرا کنید. در غیراینصورت همه دستورات Docker را با sudo اجرا نمایید.
  3. دریافت و اجرای ایمیج n8n: اکنون با استفاده از Docker یک کانتینر n8n راه‌اندازی می‌کنیم. دستور زیر، جدیدترین نسخه n8n را دریافت و اجرا می‌کند: sudo docker run -d --name n8n --restart=unless-stopped -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n:latest توضیح بخش‌های این دستور:
    • سویچ -d کانتینر را در پس‌زمینه اجرا می‌کند.
    • با --name n8n نام کانتینر را “n8n” گذاشته‌ایم تا مدیریت آن ساده باشد.
    • --restart=unless-stopped باعث می‌شود کانتینر به صورت خودکار در صورت ریبوت سرور یا توقف غیرمنتظره، مجدداً راه‌اندازی شود.
    • -p 5678:5678 پورت ۵۶۷۸ داخل کانتینر را به پورت ۵۶۷۸ روی میزبان (سرور) مپ می‌کند (n8n به طور پیش‌فرض روی پورت 5678 گوش می‌دهد).
    • -v ~/.n8n:/home/node/.n8n یک volume برای داده‌های پایدار ایجاد می‌کند.
    با اجرای دستور فوق، Docker ایمیج n8n را دانلود کرده و کانتینر را اجرا می‌کند. با دستور docker ps می‌توانید ببینید که کانتینر n8n در حال اجرا است. همچنین با docker logs -f n8n خروجی لاگ‌های n8n را به صورت زنده مشاهده کنید. رفع مشکلات رایج: اگر دستور docker run با خطا مواجه شد، موارد زیر را بررسی کنید:
    • آیا کاربر شما دسترسی اجرای Docker دارد (در صورت عدم استفاده از sudo)
    • آیا پورت 5678 قبلاً توسط برنامه دیگری اشغال نشده است
    • اگر دانلود ایمیج بسیار طولانی شد، از سلامت ارتباط اینترنت سرور اطمینان حاصل کنید
    اگر پیغام خطای permissions روی پوشه Volume (~/.n8n) مشاهده کردید، می‌توانید به صورت موقت با دستور sudo chmod 777 ~/.n8n سطح دسترسی آن پوشه را بازتر کنید یا یک Volume نام‌دار Docker ایجاد کنید (مثلاً -v n8n_data:/home/node/.n8n).
  4. (اختیاری) پیکربندی امنیتی ابتدایی: نسخه‌های جدید n8n دارای سیستم مدیریت کاربر داخلی هستند که هنگام اولین مراجعه به رابط وب، از شما می‌خواهد یک حساب کاربری (Owner) ایجاد کنید. اگر نیاز دارید که Basic Auth را فعال کنید، می‌توانید متغیرهای محیطی زیر را به دستور docker run اضافه کنید:
    -e N8N_BASIC_AUTH_ACTIVE=true -e N8N_BASIC_AUTH_USER=<یک‌نام‌کاربری> -e N8N_BASIC_AUTH_PASSWORD=<یک‌رمز>
    با این کار، n8n قبل از نمایش رابط وب، نام کاربری/رمز تعیین‌شده را درخواست می‌کند.

 

تا اینجا، n8n بر روی سرور شما در حال اجرا است. اگر در همین لحظه پورت 5678 سرور را باز کنید و در مرورگر آدرس IP سرور با پورت 5678 را وارد کنید (مثلاً http://<your-server-ip>:5678)، رابط گرافیکی n8n را مشاهده خواهید کرد. اما برای دسترسی امن‌تر و استفاده از نام دامنه دلخواه به همراه HTTPS، در ادامه Nginx را به عنوان Reverse Proxy تنظیم می‌کنیم.

تنظیم Nginx به عنوان Reverse Proxy برای n8n

راه‌اندازی NGINX به عنوان پراکسی معکوس (Reverse Proxy) این امکان را می‌دهد که n8n از طریق وب (پورت 80/443) و با نام دامنه دلخواه شما در دسترس باشد. در این حالت، Nginx درخواست‌های HTTP/HTTPS را دریافت کرده و آن‌ها را به اپلیکیشن n8n که روی پورت داخلی 5678 در حال اجراست هدایت می‌کند. این کار چند مزیت دارد: می‌توانید از پورت‌های استاندارد 80/443 استفاده کنید، چندین سرویس را روی یک سرور پشت یک وب سرور واحد مدیریت کنید، و پیکربندی SSL/TLS (گواهی HTTPS) را به Nginx بسپارید.

برای تنظیم Nginx به عنوان Reverse Proxy مراحل زیر را انجام دهید:

  1. نصب Nginx: اگر Nginx قبلاً نصب نیست، آن را روی اوبونتو نصب کنید: sudo apt install nginx -y sudo systemctl enable nginx --now این دستور Nginx را نصب کرده و سرویس آن را فعال و اجرا می‌کند. پس از نصب، پورت 80 سرور شما (به صورت پیش‌فرض) توسط Nginx گوش داده می‌شود.
  2. پیکربندی سایت جدید برای n8n: یک فایل پیکربندی جدید برای دامنه n8n ایجاد کنید. برای مثال: sudo nano /etc/nginx/sites-available/n8n سپس محتوای زیر را در این فایل قرار دهید (به جای yourdomain.com نام دامنه واقعی خود را بگذارید): server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:5678; # انتقال درخواست‌ها به n8n proxy_http_version 1.1; 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; # تنظیمات بالا، IP واقعی کاربر و پروتکل را به برنامه n8n منتقل می‌کند. } } در این پیکربندی، تمام درخواست‌های ورودی روی دامنه مشخص‌شده به آدرس محلی 127.0.0.1:5678 که n8n در حال اجراست فوروارد می‌شود. هدرهای X-Real-IP و X-Forwarded-For آدرس IP کلاینت را به n8n می‌رسانند و X-Forwarded-Proto مشخص می‌کند کاربر از HTTP یا HTTPS استفاده کرده است. این موارد برای ثبت درست لاگ‌ها و عملکرد صحیح n8n (مخصوصاً پس از فعال‌سازی SSL) مهم هستند.
  3. فعال‌سازی پیکربندی سایت و بررسی: فایل را ذخیره کرده و خارج شوید. سپس این سایت را فعال کنید و صحت کانفیگ را بررسی و Nginx را ری‌لود نمایید: sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx دستور اول لینک نمادین فایل را در sites-enabled ایجاد می‌کند تا توسط Nginx خوانده شود. دستور nginx -t صحت سینتکس و تنظیمات را بررسی می‌کند تا مطمئن شویم خطایی وجود ندارد. در صورت مشاهده پیغام OK، دستور reload را اجرا کنید تا تنظیمات جدید اعمال شود.

اکنون اگر دامنه‌ی خود را (مثلاً http://yourdomain.com) در مرورگر باز کنید، باید رابط n8n را مشاهده کنید (هرچند هنوز از پروتکل HTTP استفاده می‌کند). توجه داشته باشید که برای کارکرد صحیح، دامنه شما باید به IP سرور اشاره کند (پیکربندی DNS که در بخش بعد خواهیم گفت). همچنین در این مرحله به دلیل عدم تنظیم SSL ممکن است مرورگر پیغام “Not Secure” نمایش دهد که طبیعی است. در گام‌های بعدی، SSL را اضافه خواهیم کرد.

رفع مشکل WebSocket: n8n برای برخی قابلیت‌ها (مثل دریافت خودکار آپدیت‌ها در ویرایشگر یا وبهوک‌های بلادرنگ) از وب‌سوکت استفاده می‌کند. در پیکربندی ساده بالا، ممکن است مشاهده کنید که در گوشه‌ی پایین رابط n8n پیام “Connection lost” ظاهر شود یا وبهوک‌های در حال گوش دادن عمل نکنند. این به دلیل عدم تنظیم هدرهای Upgrade در Nginx است. برای رفع این مشکل، می‌توانید دو خط زیر را داخل بخش location / در تنظیمات Nginx اضافه کنید:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

همچنین مطمئن شوید proxy_http_version 1.1; فعال باشد (در تنظیمات بالا وجود دارد). این تنظیمات به Nginx می‌گوید که درخواست‌های دارای هدر Upgrade (وب‌سوکت) را به درستی هندل کرده و اتصال را ارتقا دهد. پس از افزودن این خطوط، مجدداً nginx -t و reload انجام دهید. با این کار مشکل “Connection lost” برطرف خواهد شد.

استفاده از دامنه یا زیردامنه رایگان (Freenom, DuckDNS) و تنظیم DNS

برای دسترسی راحت‌تر و داشتن آدرس وب مناسب برای n8n، بهتر است به‌جای استفاده از آدرس IP، یک دامنه یا ساب‌دامین برای سرور خود تنظیم کنید. اگر دامنه شخصی ندارید، می‌توانید از سرویس‌های ارائه‌دهنده دامنه رایگان یا DNS پویا (DDNS) استفاده کنید:

  • دامنه‌های رایگان Freenom: سرویس Freenom دامنه‌های رایگان با پسوندهایی مثل .tk, .ml, .ga و… ارائه می‌دهد. شما می‌توانید با مراجعه به سایت Freenom یک نام دامنه کوتاه (مثلاً yourname.tk) ثبت کنید. پس از ثبت دامنه، در بخش مدیریت Freenom به قسمت “Manage Freenom DNS” بروید و یک رکورد از نوع A اضافه کنید که نام دامنه (مثلاً @ برای ریشه دامنه) را به آدرس IP سرور VPS شما متصل کند. مقدار TTL را می‌توانید روی ۵ دقیقه یا مقدار پیش‌فرض بگذارید. تغییرات DNS را ذخیره کرده و کمی صبر کنید تا پخش شود (گاهاً تا ۳۰ دقیقه یا بیشتر). با این کار، دامنه شما به سرور n8n اشاره خواهد کرد.
  • زیردامنه رایگان با DuckDNS: سرویس DuckDNS پنج زیردامنه رایگان در اختیار هر کاربر قرار می‌دهد. کافیست به وب‌سایت duckdns.org بروید و با یکی از حساب‌های شبکه‌های اجتماعی (GitHub, Google و …) وارد شوید. سپس یک اسم دامنه دلخواه ثبت کنید؛ به صورت <yourname>.duckdns.org. این دامنه به صورت پویا قابل به‌روزرسانی است. در پنل DuckDNS، رکورد ایجادشده را مشاهده می‌کنید و می‌توانید آدرس IP فعلی سرور را به آن اختصاص دهید. اگر IP سرور شما ثابت است، کافیست یک بار آن را تنظیم کنید؛ در غیراینصورت، می‌توانید از اسکریپت‌های آماده DuckDNS (موجود در وب‌سایتشان) برای به‌روزرسانی خودکار IP استفاده کنید. برای VPSها معمولاً IP ثابت است. پس از تنظیم، دامنه duckdns شما به سرور اشاره خواهد کرد.
  • استفاده از DNS سایر سرویس‌ها: در صورتی که از Cloudflare یا سایر ارائه‌دهندگان DNS رایگان استفاده می‌کنید، می‌توانید یک رکورد A در تنظیمات DNS خود تعریف کنید تا دامنه یا ساب‌دامین مدنظر به IP سرور n8n متصل شود. نکته مهم این است که قبل از اقدام به دریافت SSL (مرحله بعدی)، دامنه حتماً باید به درستی به سرور شما وصل باشد؛ در غیر این صورت Certbot نمی‌تواند اعتبارسنجی را انجام دهد.

پس از تنظیم DNS، برای اطمینان می‌توانید از طریق ابزارهایی مانند ping یا سایت‌های “DNS lookup” بررسی کنید که دامنه شما IP سرور را برمی‌گرداند. همچنین با اجرای dig yourdomain.com یا nslookup در خط فرمان می‌توانید نتیجه را مشاهده کنید. وقتی از اتصال دامنه به سرور مطمئن شدید، گام بعدی فعال‌سازی SSL است.

دریافت گواهی SSL رایگان با استفاده از Let’s Encrypt و Certbot

اکنون که دامنه شما به سرور متصل است و Nginx به عنوان پراکسی در حال سرویس‌دهی روی پورت 80 می‌باشد، می‌توانیم یک گواهی SSL رایگان از سرویس Let’s Encrypt دریافت کرده و ارتباط را به HTTPS تبدیل کنیم. بهترین ابزار برای این کار Certbot است که به صورت خودکار با Let’s Encrypt ارتباط گرفته و گواهی را دریافت و در وب‌سرور نصب می‌کند.

مراحل فعال‌سازی HTTPS به شرح زیر است:

  1. نصب Certbot (و افزونه Nginx): بسته Certbot و پلاگین Nginx آن‌را نصب کنید: sudo apt install certbot python3-certbot-nginx -y این بسته‌ها ابزار certbot و قابلیت ادغام خودکار با Nginx را فراهم می‌کنند.
  2. دریافت گواهی SSL: دستور زیر را اجرا کنید تا Certbot برای دامنه شما گواهی دریافت کند و به طور خودکار Nginx را تنظیم نماید: sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com در اینجا به جای yourdomain.com، دامنه خود را قرار دهید. اگر فقط دامنه اصلی مدنظر است، می‌توانید www را حذف کنید. Certbot در این مرحله:
    • مالکیت دامنه را از طریق پورت 80 (یک چالش HTTP) اعتبارسنجی می‌کند.یک گواهی SSL برای دامنه شما صادر می‌کند.فایل کانفیگ Nginx مربوط به سایت را به‌روز کرده و بلاک server جدیدی برای پورت 443 (HTTPS) اضافه می‌کند و گواهی و کلید را در آن تنظیم می‌کند. همچنین معمولاً تنظیمی برای ریدایرکت خودکار از HTTP به HTTPS اضافه می‌کند.
    وقتی Certbot اجرا شود، از شما یک آدرس ایمیل برای اطلاع‌رسانی‌های تمدید گواهی می‌پرسد و شرایط سرویس Let’s Encrypt را تایید می‌گیرد. سپس مراحل بالا را خودکار انجام می‌دهد. در انتها باید پیغام موفقیت‌آمیز بودن صدور گواهی را مشاهده کنید و محل ذخیره آن را به شما نشان می‌دهد. (مسیر پیش‌فرض معمولا /etc/letsencrypt/live/yourdomain.com/ است). اکنون Nginx به‌طور خودکار reload شده و سایت شما با HTTPS در دسترس است. می‌توانید در مرورگر به https://yourdomain.com بروید و باید رابط n8n را اینبار بدون خطای امنیتی مشاهده کنید. Certbot همچنین ریدایرکت 301 از http به https را تنظیم می‌کند، بنابراین حتی اگر کاربری http را بزند، به نسخه امن هدایت می‌شود.
  3. تمدید خودکار گواهی: گواهی‌های Let’s Encrypt 90 روز اعتبار دارند. Certbot به صورت خودکار یک کران‌جاب (cron job) برای تمدید ایجاد می‌کند یا می‌توانید خودتان اضافه کنید. معمولاً بسته certbot یک سرویس timer در سیستم‌عامل فعال می‌کند که تمدید را انجام می‌دهد. برای اطمینان می‌توانید کران‌تاب را باز کنید: sudo crontab -e و مثلاً خط زیر را اضافه کنید (در صورت عدم وجود): 0 2 * * * certbot renew --quiet --post-hook "systemctl reload nginx" این تنظیم هر روز ساعت ۲ صبح چک می‌کند و در صورت نزدیک بودن انقضا، گواهی را تمدید کرده و Nginx را ریلود می‌کند. با این کار دیگر نیازی نیست نگران تمدید دستی باشید.

در این مرحله، n8n با موفقیت روی دامنه اختصاصی شما با پروتکل HTTPS امن در دسترس قرار گرفته است. از این پس، تمام ترافیک بین مرورگر شما و سرور رمزنگاری شده و امن خواهد بود. اگر به هر دلیلی نیاز به انجام دستی داشتید، می‌توانید از دستور sudo certbot renew --dry-run برای شبیه‌سازی تمدید استفاده کنید تا مطمئن شوید فرایند خودکار در آینده درست عمل می‌کند.

پورت‌های مورد نیاز که باید روی سرور VPS باز باشند

پس از راه‌اندازی n8n، لازم است مطمئن شوید فایروال سرور یا تنظیمات امنیتی سرویس ابری شما، پورت‌های مورد نیاز را مسدود نکرده باشند. پورت‌های مهم عبارت‌اند از:

  • SSH – پورت 22: برای دسترسی به سرور از طریق SSH (ترمینال راه دور) باز بودن این پورت ضروری است. (در صورت تغییر پورت SSH به مقدار دیگر، همان پورت جدید را باید باز نگه دارید). پورت 22 به صورت پیش‌فرض سرویس SSHd را ارائه می‌دهد.
  • HTTP – پورت 80: برای دسترسی اولیه HTTP و مخصوصاً جهت صدور/تمدید گواهی Let’s Encrypt باید پورت 80 باز باشد. Certbot هنگام اعتبارسنجی، روی این پورت یک فایل موقت می‌گذارد تا سرور Let’s Encrypt بررسی کند. همچنین در صورت استفاده از ریدایرکت، کاربران ابتدا به پورت 80 وصل می‌شوند و بعد Nginx آنها را به 443 هدایت می‌کند. پس حتی با وجود استفاده اصلی از HTTPS، باز بودن پورت 80 (حداقل به شکل ریدایرکت) توصیه می‌شود.
  • HTTPS – پورت 443: این پورت برای ارائه سرویس n8n بر بستر HTTPS استفاده می‌شود. پس از دریافت گواهی SSL، تمام ترافیک وب از طریق 443 منتقل می‌شود. اطمینان حاصل کنید که این پورت باز و در حالlisten است (که Nginx این کار را انجام می‌دهد).
  • سایر پورت‌های داخلی: اگر از Docker استفاده کرده‌اید و n8n را پشت Nginx قرار داده‌اید، نیازی به باز کردن پورت 5678 به روی اینترنت نیست. این پورت فقط به صورت محلی استفاده می‌شود و Nginx به عنوان واسط عمل می‌کند. برای امنیت بیشتر حتی می‌توانید فایروال را طوری تنظیم کنید که پورت 5678 فقط برای لوپ‌بک (127.0.0.1) باز باشد. اما اگر به هر دلیلی Nginx راه‌اندازی نکرده‌اید و مستقیماً می‌خواهید به n8n متصل شوید، آن‌گاه باید پورت 5678 را (ترجیحاً فقط TCP) باز کنید. هرچند این حالت به دلیل عدم داشتن SSL و شاید Authentication، برای محیط عملیاتی پیشنهاد نمی‌شود.

برای مدیریت فایروال در Ubuntu می‌توانید از UFW استفاده کنید. به طور مثال:

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

دستورات بالا پورت‌های SSH, HTTP, HTTPS را باز کرده و فایروال را فعال می‌کند. (اگر از قبل فعال بوده، فقط دستور‌های allow را اضافه کنید). در صورت استفاده از سرویس‌های ابری، حتماً Security Group یا تنظیمات فایروال آن سرویس را نیز بررسی کنید که این پورت‌ها در سطح پلتفرم هم مجاز باشند.

راه‌اندازی اولیه n8n و ساخت یک Workflow ساده (تست عملکرد)

پس از انجام تنظیمات فوق، اکنون می‌توانید از طریق مرورگر به رابط وب n8n دسترسی داشته باشید. آدرس دامنه خود را با https وارد کنید (مثلاً https://yourdomain.com که در مراحل قبل تنظیم کردید). در اولین باز کردن n8n (نسخه‌های جدید)، صفحه ایجاد حساب کاربری ادمین برای شما نمایش داده می‌شود. یک نام کاربری (معمولاً ایمیل) و کلمه عبور قوی وارد کنید تا حساب شما ساخته شود. پس از ساخت حساب، به Dashboard یا محیط کاری n8n وارد می‌شوید.

در این محیط، می‌توانید workflowهای جدید بسازید. برای اطمینان از صحت عملکرد n8n، یک گردش‌کار ساده به صورت تست ایجاد می‌کنیم:

  1. ایجاد یک Workflow جدید: از منوی بالا سمت چپ روی دکمه “+” کلیک کنید و گزینه “New Workflow” را انتخاب کنید. یک ورک‌فلوی خالی برای شما باز می‌شود. از قسمت بالا می‌توانید نامی برای آن انتخاب کنید (مثلاً “Hello World Test”).
  2. افزودن نود شروع (Trigger): هر workflow نیاز به یک تریگر یا گره شروع دارد. ساده‌ترین حالت، Manual Trigger است که به صورت دستی اجرا می‌شود. از ستون نودها در سمت چپ، عبارت “Manual” را جستجو کنید. نود Manual Trigger را بکشید و داخل صفحه رها کنید. این نود آغازگر جریان خواهد بود.
  3. افزودن نود عملیاتی: حال یک نود دیگر اضافه می‌کنیم که کاری انجام دهد. به عنوان مثال می‌توان یک نود “Function” یا “Set” استفاده کرد تا مقداری داده تولید کنیم. فرضاً از لیست، نود Set را پیدا کرده و اضافه کنید. این نود به ما امکان می‌دهد یک خروجی دلخواه تنظیم کنیم. نود Set را به نود Manual Trigger متصل کنید (با کشیدن فلش از Manual Trigger به Set).
  4. پیکربندی نود Set: روی نود Set کلیک کنید تا تنظیمات آن در پنل راست نمایش داده شود. در بخش Fields to Set روی Add Field کلیک کنید. یک فیلد با نام مثلا message از نوع String اضافه کنید و مقدار آن را "Hello n8n!" قرار دهید. این کار باعث می‌شود نود Set یک خروجی شامل فیلد message با مقدار مشخص داشته باشد.
  5. اجرای Workflow به صورت دستی: اکنون آماده تست هستیم. روی نود Manual Trigger کلیک کنید و سپس در بالا سمت راست، دکمه سبز رنگ Execute Workflow را بزنید. مشاهده می‌کنید که جریان به ترتیب اجرا می‌شود: ابتدا نود Manual (که عملاً کاری خاصی ندارد جز شروع)، سپس نود Set. پس از اتمام اجرا، نود Set هایلایت می‌شود و می‌توانید در پنل اطلاعات نود (زیر صفحه) تب Output را ببینید. باید یک خروجی با JSON شامل {"message": "Hello n8n!"} مشاهده کنید. این یعنی workflow با موفقیت اجرا شده و داده تولید شده است.
  6. ذخیره و فعال‌سازی در صورت نیاز: پس از تست، روی دکمه Save کلیک کنید تا این workflow ذخیره شود. این گردش‌کار هنوز به صورت دستی اجرا می‌شود (Manual). n8n قابلیت فعال‌سازی خودکار (فعال = Active) را هم دارد که برای تریگرهای خودکار (مثل کرون، وب‌هوک، ایمیل ورودی و …) استفاده می‌شود. در این مثال نیازی به فعال کردن نیست چون تریگر ما دستی بود. اما برای گردش‌کارهای واقعی، مثلاً اگر تریگر را یک Webhook انتخاب کنید، باید پس از تنظیمات، آن را Activate کنید تا n8n در پس‌زمینه منتظر رویداد بماند.

به این ترتیب یک workflow ساده اجرا کردیم. شما می‌توانید انواع نودها را اضافه کرده و جریان‌های پیچیده‌تری بسازید. برای مثال، می‌توانید نود HTTP Request را اضافه کنید و از یک API عمومی داده بگیرید و سپس با نودهای دیگر پردازش کنید. یا از نودهای سرویس‌هایی مثل Gmail، Telegram، Slack و … استفاده کنید تا اتوماسیون‌های قدرتمندی ایجاد نمایید.

عیب‌یابی اولیه: اگر workflow شما اجرا نشد یا خطایی رخ داد، n8n پیغام خطا را در همان پنل Output یا در بخش Executions نمایش می‌دهد. از آنجا می‌توانید جزئیات خطا را ببینید. برای نمونه، اگر به اینترنت دسترسی نداشته باشید و نود HTTP Request را صدا بزنید، خطای network خواهید دید. یا اگر اعتبارنامه (Credentials) سرویس خاصی را تنظیم نکرده باشید، n8n خطای احراز هویت می‌دهد. خوشبختانه محیط n8n خطاها را نسبتاً گویا نمایش می‌دهد و می‌توانید آن‌ها را برطرف کنید.

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

جمع‌بندی و نکات پایانی

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

  • امنیت را جدی بگیرید: اکنون که n8n شما آنلاین است، حتماً مکانیزم احراز هویت آن فعال باشد (چه از طریق سیستم کاربری داخلی n8n و چه Basic Auth). همچنین استفاده از HTTPS (که راه‌اندازی کردیم) و محدودکردن دسترسی‌ها (مثلاً بستن پورت‌های غیرضروری، استفاده از فایروال و SG) بسیار مهم است. اگر از n8n در محیط تولید استفاده می‌کنید، برای کاربران دیگر نیز سطوح دسترسی مناسب تعریف کنید (n8n Enterprise امکان چندکاربره شدن و SSO دارد، اما در نسخه رایگان هم حداقل می‌توانید با اشتراک‌گذاری workflowها یا استفاده صرفاً توسط یک اکانت، مدیریت کنید).
  • به‌روزرسانی منظم: تیم n8n مرتباً بهبودها و رفع اشکالات ارائه می‌کنند. نسخه‌های جدید ممکن است قابلیت‌های جدیدی داشته باشند یا حفره‌های امنیتی را ببندند. بنابراین، Docker ایمیج n8n را هر از چندگاهی به‌روزرسانی کنید. برای به‌روزرسانی، کافیست docker pull n8nio/n8n:latest را اجرا کرده و سپس کانتینر فعلی را با نسخه جدید مجدداً اجرا کنید (یا اگر از Docker Compose استفاده می‌کنید، docker-compose pull && docker-compose up -d).
  • پشتیبان‌گیری از داده‌ها: تمامی workflowها، تنظیمات و اطلاعات اتصال‌های شما در پوشه ~/.n8n (یا Volume داده‌ای که تعریف کردیم) ذخیره می‌شود. حتماً از این دایرکتوری به صورت دوره‌ای بکاپ بگیرید، خصوصاً اگر workflowهای مهمی ساخته‌اید. می‌توانید به سادگی از این فولدر یک کپی در فضای دیگری نگه دارید یا از ابزارهای بکاپ خودکار استفاده کنید. در صورت مهاجرت سرور یا بروز مشکل، با داشتن این پوشه می‌توانید n8n را دوباره دقیقا به حالت قبل برگردانید.

با رعایت این نکات، شما یک سرویس اتوماسیون قدرتمند در اختیار دارید که کاملاً تحت کنترل خودتان است. اکنون زمان آن است که خلاقیت به خرج داده و workflow‌های مفید خود را بسازید و فرآیندهای دستی و تکراری را خودکار کنید. موفق باشید!