راهنمای جامع آموزش نصب n8n روی سرور شخصی با SSL رایگان و Docker

بازدید: 35 بازدید

نصب n8n روی سرور شخصی (Self-hosted) بهترین روش برای استفاده از این ابزار اتوماسیون بدون محدودیت‌های نسخه ابری و هزینه‌های دلاری است. در این روش، با استفاده از Docker Compose و ابزار مدیریت ترافیک Traefik، سرویس n8n را روی سیستم عامل اوبونتو (Ubuntu) راه‌اندازی می‌کنیم. مزیت اصلی این معماری، دریافت خودکار گواهی SSL رایگان (Let’s Encrypt)، امنیت بالا از طریق ایزوله‌سازی کانتینرها و مالکیت صددرصدی داده‌هاست.

پیشنهاد مطالعه مقاله: N8N چیست و چه کاربردی دارد؟

چرا نصب n8n روی سرور شخصی؟

چرا نصب n8n روی سرور شخصی بهترین انتخاب است؟ اگر به دنبال آزادی عمل کامل در اتوماسیون هستید، هیچ راهی بهتر از نصب n8n روی سرور شخصی نیست. در حالی که نسخه ابری محدودیت‌های سخت‌گیرانه‌ای دارد، اگر تا به حال از نسخه ابری n8n استفاده کرده باشید، احتمالاً با محدودیت تعداد اجرا (Execution) یا هزینه اشتراک مواجه شده‌اید.

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

چک‌لیست پیش‌نیازها

جعبه‌ابزار شروع کار (مخصوص کسانی که دانش سرور ندارند)

برای نصب n8n روی سرور شخصی، شما به دو ابزار ساده روی ویندوز نیاز دارید. نترسید! قرار نیست کدنویسی کنیم؛ فقط کپی/پیست می‌کنیم.

۱. نرم‌افزار PuTTY (برای وارد کردن دستورات): این نرم‌افزار دریچه ورود شما به سرور است. یک صفحه مشکی باز می‌شود که دستورات را آنجا وارد می‌کنیم.

۲. نرم‌افزار WinSCP (برای انتقال فایل): این نرم‌افزار دقیقاً شبیه پوشه‌های ویندوز است. سمت چپ کامپیوتر شماست و سمت راست سرور شما. با کشیدن و رها کردن (Drag & Drop) فایل‌ها را منتقل می‌کنیم.

قبل از شروع، مطمئن شوید که این موارد را آماده کرده‌اید:

  • یک سرور مجازی (VPS): سیستم عامل Ubuntu 20.04 یا 22.04 (حداقل ۲ هسته CPU و ۴ گیگ رم).
  • نام دامنه: یک ساب‌دامین مثل n8n.neiten.com که قرار است پنل شما روی آن باز شود.
  • نرم‌افزار اتصال: PuTTY (برای ویندوز) یا ترمینال (برای مک/لینوکس).

چطور وارد سرور شویم؟

  • برنامه PuTTY را باز کنید.
  • در قسمت Host Name (or IP address)، آی‌پی سروری که خریده‌اید را وارد کنید.
  • دکمه Open را بزنید.
  • پنجره‌ای مشکی باز می‌شود و می‌نویسد: login as:. تایپ کنید root و اینتر بزنید.
  • حالا رمز عبور (Password) را می‌خواهد. نکته مهم: وقتی رمز را تایپ می‌کنید یا پیست می‌کنید (با کلیک راست)، هیچ چیزی روی صفحه نمایش داده نمی‌شود (حتی ستاره *). رمز را بزنید و اینتر کنید. تمام!

آماده‌سازی و ایمن‌سازی سرور

ابتدا با یوزر root به سرور وصل شوید. اولین قانون مدیریت سرور، به‌روزرسانی است.

۱.۱. آپدیت مخازن:

apt update && apt upgrade -y

۱.۲. تنظیم فایروال (UFW): ما از Traefik برای مدیریت SSL استفاده می‌کنیم که روی پورت ۸۰ و ۴۴۳ گوش می‌دهد. پس باید این پورت‌ها را باز کنیم:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

نکته: بعد از زدن دستور آخر، با y تایید کنید. نگران نباشید، پورت ۲۲ (SSH) باز است و دسترسی شما قطع نمی‌شود.

نصب Docker برای اجرای n8n روی سرور

نصب داکر از مخازن رسمی اوبونتو ممکن است نسخه قدیمی را به شما بدهد. برای نصب آخرین نسخه پایدار، دستورات زیر را خط به خط اجرا کنید:

نصب ابزارهای پایه:

apt install ca-certificates curl gnupg lsb-release -y

دریافت کلید رسمی داکر:

mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

افزودن مخزن داکر:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

نصب نهایی:

apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

با دستور docker compose version نصب را تایید کنید.

ساختاردهی و کانفیگ فایل‌ها

ما تمام فایل‌ها را در پوشه‌ای به نام automation-stack نگهداری می‌کنیم. در سرور دستور زیر را بزنید تا پوشه ساخته شود:

mkdir -p /root/automation-stack

حالا روی کامپیوتر خودتان (ویندوز/مک)، دو فایل زیر را بسازید تا بعداً به سرور منتقل کنیم.

فایل .env (تنظیمات محرمانه)

یک فایل متنی با نام دقیق .env بسازید و کدهای زیر را درون آن قرار دهید. (مقادیر جلوی مساوی را با اطلاعات خودتان پر کنید):

# ایمیل شما برای دریافت هشدارهای SSL
LETSENCRYPT_EMAIL=admin@neiten.com

# دامنه اصلی پنل n8n (بدون https)
N8N_DOMAIN=n8n.neiten.com

# نام کاربری و رمز عبور برای پنل n8n
N8N_USER=admin
N8N_PASSWORD=YourStrongPassword123!

# کلید رمزنگاری (بسیار مهم: حتما یک کد رندوم ۳۲ کاراکتری بگذارید)
N8N_ENCRYPTION_KEY=GenerateRandomHexKeyHere

نکته امنیتی: کلید N8N_ENCRYPTION_KEY را می‌توانید با سرچ عبارت “online random hex generator” یا دستور openssl rand -hex 32 در لینوکس بسازید. اگر این کلید را گم کنید، دسترسی به اکانت‌های متصل (مثل گوگل و تلگرام) در n8n قطع می‌شود.

فایل docker-compose.yml (معماری سرویس)

این فایل به داکر می‌گوید که n8n و Traefik را بالا بیاورد. (در این نسخه، بخش‌های مربوط به NocoDB و Postgres حذف شده‌اند تا نصب سبک‌تر و متمرکز بر n8n باشد).

services:
  # Traefik: مدیریت ترافیک و دریافت SSL خودکار
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: always
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - ./data/letsencrypt:/letsencrypt
    networks:
      - n8n-net

  # n8n: پلتفرم اتوماسیون
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: always
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`${N8N_DOMAIN}`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
    environment:
      - N8N_HOST=${N8N_DOMAIN}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - N8N_EDITOR_BASE_URL=https://${N8N_DOMAIN}
      - WEBHOOK_URL=https://${N8N_DOMAIN}
      - GENERIC_TIMEZONE=Asia/Tehran
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_User_Management_Disabled=false
    volumes:
      - ./data/n8n:/home/node/.n8n
    networks:
      - n8n-net

networks:
  n8n-net:
    external: false

انتقال و اجرا

با نرم‌افزار WinSCP به سرور وصل شوید. ۲. فایل‌های .env و docker-compose.yml را که ساختید، به پوشه /root/automation-stack در سرور منتقل کنید. ۳. حالا در PuTTY دستورات زیر را اجرا کنید:

cd /root/automation-stack
docker compose up -d

چند لحظه صبر کنید تا داکر ایمیج‌ها را دانلود و اجرا کند. با دستور docker ps می‌توانید ببینید که دو کانتینر (Traefik و n8n) در حال اجرا هستند.

تنظیم DNS و تست نهایی

مهم‌ترین بخش برای دریافت SSL، تنظیم درست DNS است. وارد پنل مدیریت دامنه خود شوید و یک رکورد A بسازید:

  • Type: A
  • Name: n8n (یا هر ساب‌دامینی که انتخاب کردید)
  • Value: آی‌پی سرور (IP Address)
  • Proxy Status: خاموش (DNS Only) – اگر از کلودفلر استفاده می‌کنید، ابر باید خاکستری باشد.

تست: مرورگر را باز کنید و آدرس https://n8n.YOUR_DOMAIN.com را بزنید. اگر همه چیز درست باشد، صفحه ساخت اکانت Owner در n8n باز می‌شود و قفل کنار آدرس بار (HTTPS) فعال است. تبریک می‌گوییم! شما حالا صاحب یک پلتفرم اتوماسیون قدرتمند هستید.

عیب‌یابی و خطاهای احتمالی

حتی حرفه‌ای‌ها هم گاهی با خطا مواجه می‌شوند. اگر بعد از انجام مراحل بالا، سایت n8n.yourdomain.com باز نشد، یکی از موارد زیر را چک کنید:

۱. خطای “Site can’t be reached” یا لود نشدن صفحه

علت: احتمالاً پورت‌های سرور بسته است یا DNS هنوز ست نشده.

راه حل:

  • در PuTTY دستور ufw status را بزنید. باید جلوی پورت‌های 80 و 443 عبارت ALLOW را ببینید.
  • آیا در Cloudflare تیک پروکسی (ابر نارنجی) را خاموش کرده‌اید؟ (باید خاکستری باشد).
  • گاهی اوقات ست شدن DNS بین ۱ تا ۴ ساعت طول می‌کشد.

خطای SSL (قفل قرمز یا اخطار امنیتی مرورگر)

علت: Traefik نتوانسته گواهی SSL بگیرد.

راه حل:

دستور docker logs traefik را در PuTTY بزنید. اگر خطایی مربوط به ACME دیدید، یعنی ایمیل در فایل .env اشتباه است یا DNS مشکل دارد.

مطمئن شوید IP سرور را درست در تنظیمات دامنه وارد کرده‌اید.

خطای “Bad Gateway”

علت: کانتینر n8n هنوز کامل بالا نیامده یا کرش کرده است.

راه حل:

  • دستور docker ps را بزنید. اگر جلوی n8n در ستون Status عبارت Restarting را می‌بینید، یعنی فایل .env مشکل دارد (احتمالا کلید رمزنگاری N8N_ENCRYPTION_KEY را کوتاه یا اشتباه وارد کرده‌اید).

فراموش کردن رمز عبور n8n

راه حل: اگر رمز یوزری که در فایل .env گذاشتید کار نمی‌کند، می‌توانید موقتاً در فایل .env مقدار N8N_USER_MANAGEMENT_DISABLED=true را قرار دهید، داکر را ریستارت کنید (docker compose up -d)، وارد پنل شوید، یوزر جدید بسازید و دوباره تنظیمات را برگردانید.

سوالات متداول نصب n8n

اگر SSL کار نکرد چه کنم؟

معمولاً مشکل از DNS است. مطمئن شوید که ابر کلودفلر خاموش است. سپس دستور docker logs traefik را در سرور بزنید تا خطای دقیق را ببینید. گاهی اوقات ۱ تا ۲ ساعت طول می‌کشد تا DNS ست شود.

چگونه n8n را آپدیت کنم؟

کافیست در پوشه پروژه دستور docker compose pull و سپس docker compose up -d را بزنید. داکر به صورت خودکار نسخه جدید را جایگزین می‌کند بدون اینکه داده‌های شما پاک شود.

آیا دیتابیس داخلی SQLite برای کارهای سنگین کافی است؟

برای شروع بله. اما اگر هزاران اجرا در روز دارید، پیشنهاد می‌کنیم از دیتابیس Postgres استفاده کنید.

ادامه مطلب