سی ام اس نویسسی ام اس نویسیاد بگیر، سیستم خودتو بنویس
مجلهتماس با ما
سی ام اس نویسسی ام اس نویس

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

پیوندهای سریع
محصولات فیزیکیمحصولات دیجیتالدوره‌های آموزشی
سی ام اس نویس
مجله سی ام اس نویستماس با ماپنل کاربری
سی ام اس نویس — تمامی حقوق برای سی ام اس نویس محفوظ است. © 1406 تماس با ما09307711941
نصب n8n روی VPS؛ آموزش کامل راه‌اندازی n8n روی سرور مجازی

نصب n8n روی VPS؛ آموزش کامل راه‌اندازی n8n روی سرور مجازی

ممدیر کل سیستم ۱۲ آبان ۱۴۰۵ ۲۲ دقیقه مطالعه ۱ بازدید
نصب n8n روی VPS؛ آموزش کامل راه‌اندازی n8n روی سرور مجازی

اگر قصد دارید Workflowهای خود را در n8n به‌صورت شبانه‌روزی اجرا کنید، استفاده از یک سرور مجازی یا VPS یکی از راهکارهای مناسب است.

با نصب n8n روی VPS می‌توانید بدون نیاز به روشن نگه داشتن کامپیوتر شخصی، فرایندهای خودکار را اجرا کنید، از Webhookها استفاده کنید و سرویس‌های مختلف مانند تلگرام، وردپرس، ووکامرس، Google Sheets و APIهای هوش مصنوعی را به یکدیگر متصل کنید.

اما راه‌اندازی n8n روی سرور مجازی فقط به نصب برنامه محدود نمی‌شود. برای داشتن یک سرویس پایدار باید تنظیمات شبکه، امنیت، دیتابیس، دامنه، SSL و بکاپ را نیز در نظر بگیرید.

در این آموزش، تمام مراحل نصب n8n روی VPS را به‌صورت عملی بررسی می‌کنیم؛ از انتخاب مشخصات سرور تا راه‌اندازی n8n با Docker و PostgreSQL و دسترسی امن از طریق HTTPS.

VPS چیست و چرا برای اجرای n8n مناسب است؟

VPS مخفف Virtual Private Server و به معنی سرور مجازی خصوصی است.

در این روش، منابع یک سرور فیزیکی با استفاده از فناوری مجازی‌سازی میان چند سرور مجازی تقسیم می‌شوند. هر VPS معمولاً سیستم‌عامل، منابع تخصیص‌یافته و محیط مدیریتی مستقل خود را دارد.

برای مثال، می‌توانید یک VPS با سیستم‌عامل Ubuntu تهیه کنید و برنامه‌هایی مانند n8n، PostgreSQL و Docker را روی آن اجرا کنید.

مزایای اجرای n8n روی VPS

استفاده از VPS برای n8n مزایای مختلفی دارد:

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

البته در روش Self-hosted مسئولیت امنیت، نگهداری، مانیتورینگ و به‌روزرسانی سرویس نیز بر عهده شما خواهد بود.

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

یکی از سوالات رایج هنگام راه‌اندازی n8n این است که چه مقدار RAM و CPU برای اجرای آن نیاز داریم.

پاسخ به این سوال به نوع Workflowها بستگی دارد.

برای مثال، Workflow ساده‌ای که هر چند دقیقه یک درخواست HTTP ارسال می‌کند، منابع بسیار کمتری نسبت به Workflow پردازش فایل‌های حجیم یا اجرای تعداد زیادی درخواست هم‌زمان نیاز دارد.

مشخصات پیشنهادی VPS

جدول زیر یک پیشنهاد اولیه برای انتخاب سرور است، نه حداقل رسمی یا تضمین ظرفیت n8n.

نوع استفادهCPURAMفضای ذخیره‌سازی
یادگیری و آزمایش1 vCPU2 GB20 GB SSD
پروژه‌های سبک2 vCPU4 GB30 GB SSD
استفاده متوسط2 تا 4 vCPU8 GB40 GB SSD
پردازش‌های سنگین4+ vCPU16+ GBمتناسب با داده‌ها

این اعداد صرفاً نقطه شروع هستند. تعداد اجرای هم‌زمان، حجم داده‌ها، استفاده از Code Node، پردازش فایل‌ها و سرویس‌های جانبی می‌توانند مصرف منابع را به‌شدت تغییر دهند.

برای پروژه‌های واقعی بهتر است مصرف منابع را مانیتور کنید و براساس داده‌های واقعی تصمیم بگیرید.

انتخاب سیستم‌عامل VPS

برای این آموزش از Ubuntu 24.04 LTS استفاده می‌کنیم.

همچنین می‌توانید مراحل مشابه را روی Ubuntu 22.04 اجرا کنید.

این سیستم‌عامل‌ها برای نصب Docker و مدیریت سرویس‌های لینوکسی مناسب هستند.

مرحله اول: تهیه VPS و دریافت اطلاعات اتصال

پس از خرید سرور مجازی، معمولاً شرکت ارائه‌دهنده اطلاعات زیر را در اختیار شما قرار می‌دهد:

  • آدرس IP عمومی سرور
  • نام کاربری اولیه
  • رمز عبور یا کلید SSH
  • سیستم‌عامل نصب‌شده
  • اطلاعات پنل مدیریت VPS

برای مثال فرض می‌کنیم IP سرور به شکل زیر است:


203.0.113.10

این IP صرفاً نمونه آموزشی است و باید آن را با آدرس واقعی سرور خود جایگزین کنید.

در ادامه از دامنه فرضی زیر نیز استفاده خواهیم کرد:


n8n.example.com

مرحله دوم: اتصال به VPS از طریق SSH

برای مدیریت سرور باید از SSH استفاده کنید.

اگر از ویندوز استفاده می‌کنید، PowerShell یا Windows Terminal را باز کنید.

سپس دستور زیر را اجرا کنید:


ssh root@203.0.113.10

در این دستور، root نام کاربری اولیه و IP نیز آدرس سرور است.

اگر شرکت ارائه‌دهنده نام کاربری دیگری مانند ubuntu در اختیار شما قرار داده، باید همان نام کاربری را وارد کنید.

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

مرحله سوم: به‌روزرسانی سیستم‌عامل

قبل از نصب نرم‌افزارها بهتر است بسته‌های Ubuntu را به‌روزرسانی کنید.

ابتدا اجرا کنید:


sudo apt update

سپس:


sudo apt upgrade -y

در صورت نیاز به راه‌اندازی مجدد، می‌توانید دستور زیر را اجرا کنید:


sudo reboot

اگر سرور مجدداً راه‌اندازی شد، باید دوباره از طریق SSH متصل شوید.

مرحله چهارم: ایجاد کاربر مدیریتی

برای مدیریت روزمره سرور بهتر است به‌جای استفاده مستقیم از root، یک کاربر مدیریتی مستقل داشته باشید.

ابتدا کاربری با نام deploy ایجاد کنید:


sudo adduser deploy

سپس آن را به گروه sudo اضافه کنید:


sudo usermod -aG sudo deploy

اگر از SSH Key استفاده می‌کنید، کلید عمومی خود را برای کاربر جدید نیز تنظیم کنید.

برای مثال، از کامپیوتر شخصی می‌توانید اجرا کنید:


ssh-copy-id deploy@203.0.113.10

در ویندوز، اگر ssh-copy-id در دسترس نیست، می‌توانید کلید عمومی را به‌صورت دستی در فایل زیر قرار دهید:


/home/deploy/.ssh/authorized_keys

قبل از غیرفعال کردن ورود root یا ورود با رمز عبور، حتماً در یک نشست SSH جدید بررسی کنید که کاربر deploy می‌تواند وارد سرور شود و دستورات sudo را اجرا کند.

پس از اطمینان از عملکرد صحیح کلید SSH، می‌توانید ورود مستقیم root و ورود مبتنی بر رمز عبور را مطابق سیاست امنیتی سرور محدود کنید.

مرحله پنجم: تنظیم فایروال VPS

یکی از مهم‌ترین اقدامات امنیتی، محدودسازی پورت‌های ورودی است.

در این آموزش از UFW استفاده می‌کنیم.

ابتدا UFW را نصب کنید:


sudo apt install ufw -y

قبل از فعال کردن فایروال، دسترسی SSH را مجاز کنید.

اگر SSH روی پورت پیش‌فرض 22 اجرا می‌شود:


sudo ufw allow 22/tcp

اگر پورت SSH را تغییر داده‌اید، باید پورت واقعی خود را مجاز کنید.

سپس پورت‌های HTTP و HTTPS را باز کنید:


sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

اکنون فایروال را فعال کنید:


sudo ufw enable

برای بررسی وضعیت:


sudo ufw status verbose

در این مرحله باید پورت SSH و پورت‌های 80 و 443 در فهرست دسترسی‌های مجاز قرار داشته باشند.

نکته مهم درباره Docker: پورت‌هایی که Docker مستقیماً روی IP عمومی منتشر می‌کند ممکن است از قوانین معمول UFW عبور کنند. بنابراین برای n8n از اتصال پورت به 127.0.0.1 استفاده می‌کنیم و پورت PostgreSQL را نیز منتشر نخواهیم کرد.

همچنین اگر ارائه‌دهنده VPS دارای فایروال شبکه‌ای مستقل است، باید قوانین آن را نیز بررسی کنید.

مرحله ششم: نصب Docker روی VPS

برای نصب n8n از Docker استفاده می‌کنیم.

ابتدا بسته‌های ضروری را نصب کنید:


sudo apt install ca-certificates curl -y

پوشه کلیدهای مخازن را ایجاد کنید:


sudo install -m 0755 -d /etc/apt/keyrings

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


sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

مجوز خواندن آن را تنظیم کنید:


sudo chmod a+r /etc/apt/keyrings/docker.asc

اکنون مخزن رسمی Docker را اضافه کنید:


sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF

Types: deb

URIs: https://download.docker.com/linux/ubuntu

Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")

Components: stable

Architectures: $(dpkg --print-architecture)

Signed-By: /etc/apt/keyrings/docker.asc

EOF

فهرست بسته‌ها را به‌روزرسانی کنید:


sudo apt update

سپس Docker و Docker Compose را نصب کنید:


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

برای بررسی نصب:


sudo docker --version

و:


sudo docker compose version

همچنین وضعیت سرویس Docker را بررسی کنید:


sudo systemctl status docker

اگر Docker فعال باشد، می‌توانید مراحل بعدی را دنبال کنید.

مرحله هفتم: ایجاد پوشه پروژه n8n

اکنون یک مسیر اختصاصی برای فایل‌های n8n ایجاد می‌کنیم.

دستور زیر را اجرا کنید:


sudo mkdir -p /opt/n8n

سپس مالکیت پوشه را به کاربر مدیریتی اختصاص دهید:


sudo chown deploy:deploy /opt/n8n

با کاربر deploy وارد سرور شوید و به پوشه پروژه بروید:


cd /opt/n8n

در این مسیر فایل‌های زیر را ایجاد خواهیم کرد:


/opt/n8n/

├── .env

└── compose.yaml

مرحله هشتم: تولید رمزهای امن

برای راه‌اندازی PostgreSQL و n8n باید دو مقدار حساس تولید کنیم.

ابتدا یک رمز تصادفی برای دیتابیس بسازید:


openssl rand -hex 24

سپس کلید رمزنگاری n8n را تولید کنید:


openssl rand -hex 32

هر دو مقدار را در محل امنی نگهداری کنید.

کلید رمزنگاری n8n اهمیت ویژه‌ای دارد؛ زیرا برای رمزنگاری اطلاعات حساس Credentialها استفاده می‌شود.

از دست رفتن این کلید ممکن است بازیابی Credentialهای قبلی را غیرممکن کند.

مرحله نهم: ساخت فایل تنظیمات n8n

داخل پوشه پروژه، فایل .env را ایجاد کنید:


nano .env

محتوای زیر را وارد کنید:


POSTGRES_DB=n8n

POSTGRES_USER=n8n_user

POSTGRES_PASSWORD=YOUR_SECURE_DATABASE_PASSWORD



N8N_ENCRYPTION_KEY=YOUR_SECURE_ENCRYPTION_KEY



N8N_HOST=n8n.example.com

N8N_PROTOCOL=https

N8N_EDITOR_BASE_URL=https://n8n.example.com/

WEBHOOK_URL=https://n8n.example.com/

N8N_PROXY_HOPS=1



GENERIC_TIMEZONE=Asia/Tehran

TZ=Asia/Tehran



N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true

مقادیر زیر را با اطلاعات واقعی جایگزین کنید:

  • YOUR_SECURE_DATABASE_PASSWORD: رمز PostgreSQL
  • YOUR_SECURE_ENCRYPTION_KEY: کلید رمزنگاری n8n
  • n8n.example.com: زیردامنه واقعی شما

در این ساختار، n8n پشت یک Reverse Proxy قرار می‌گیرد و N8N_PROXY_HOPS=1 برای یک لایه Proxy قابل اعتماد در نظر گرفته شده است.

پس از ذخیره فایل، دسترسی آن را محدود کنید:


chmod 600 .env

مرحله دهم: ساخت فایل Docker Compose

اکنون سرویس‌های PostgreSQL و n8n را تعریف می‌کنیم.

فایل زیر را ایجاد کنید:


nano compose.yaml

محتوای زیر را داخل آن قرار دهید:


services:

  postgres:

    image: postgres:16

    restart: unless-stopped



    environment:

      POSTGRES_DB: ${POSTGRES_DB}

      POSTGRES_USER: ${POSTGRES_USER}

      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}



    volumes:

      - postgres_data:/var/lib/postgresql/data



    healthcheck:

      test:

        - CMD-SHELL

        - pg_isready -U "$$POSTGRES_USER" -d "$$POSTGRES_DB"

      interval: 10s

      timeout: 5s

      retries: 10



    networks:

      - n8n_network



  n8n:

    image: docker.n8n.io/n8nio/n8n:latest

    restart: unless-stopped



    ports:

      - "127.0.0.1:5678:5678"



    environment:

      DB_TYPE: postgresdb

      DB_POSTGRESDB_HOST: postgres

      DB_POSTGRESDB_PORT: 5432

      DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}

      DB_POSTGRESDB_USER: ${POSTGRES_USER}

      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}



      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}



      N8N_HOST: ${N8N_HOST}

      N8N_PROTOCOL: ${N8N_PROTOCOL}

      N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL}

      WEBHOOK_URL: ${WEBHOOK_URL}

      N8N_PROXY_HOPS: ${N8N_PROXY_HOPS}



      GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}

      TZ: ${TZ}



      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: ${N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS}



    volumes:

      - n8n_data:/home/node/.n8n



    depends_on:

      postgres:

        condition: service_healthy



    networks:

      - n8n_network



volumes:

  postgres_data:

  n8n_data:



networks:

  n8n_network:

    driver: bridge

این فایل دو سرویس اصلی ایجاد می‌کند.

PostgreSQL: اطلاعات Workflowها، اجراها، کاربران و تنظیمات مرتبط را نگهداری می‌کند.

n8n: محیط مدیریت و اجرای اتوماسیون‌ها را فراهم می‌کند.

برای حفظ اطلاعات از دو Volume مستقل استفاده کرده‌ایم.

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

مرحله یازدهم: اجرای n8n روی VPS

ابتدا ساختار فایل Compose را بررسی کنید:


sudo docker compose config --quiet

اگر خطایی وجود نداشت، سرویس‌ها را اجرا کنید:


sudo docker compose up -d

برای مشاهده وضعیت:


sudo docker compose ps

برای مشاهده لاگ‌های n8n:


sudo docker compose logs -f n8n

در اولین اجرا ممکن است چند دقیقه برای دریافت تصاویر و آماده‌سازی دیتابیس زمان لازم باشد.

برای بررسی پاسخ‌گویی سرویس از داخل VPS:


curl -i http://127.0.0.1:5678/healthz

اگر پاسخ HTTP موفق دریافت کردید، سرویس در حال پاسخ‌گویی است.

مرحله دوازدهم: اتصال دامنه به VPS

اکنون باید زیردامنه موردنظر را به IP سرور متصل کنید.

فرض کنیم می‌خواهید از آدرس زیر استفاده کنید:


n8n.example.com

و IP سرور شما برابر است با:


203.0.113.10

وارد پنل DNS دامنه شوید و یک رکورد A ایجاد کنید.

نوع رکوردناممقدار
An8n203.0.113.10

اگر دامنه شما از DNS Provider دیگری مانند Cloudflare استفاده می‌کند، رکورد را در همان سرویس مدیریت کنید.

اگر سرور شما IPv6 عمومی دارد و می‌خواهید از آن استفاده کنید، باید رکورد AAAA و تنظیمات شبکه مربوط به آن را نیز به‌درستی انجام دهید.

برای بررسی DNS می‌توانید اجرا کنید:


dig +short n8n.example.com

اگر IP صحیح نمایش داده شد، می‌توانید تنظیمات وب‌سرور را ادامه دهید.

مرحله سیزدهم: نصب Nginx به‌عنوان Reverse Proxy

در این آموزش از Nginx برای دریافت درخواست‌های عمومی و انتقال آن‌ها به n8n استفاده می‌کنیم.

ابتدا Nginx را نصب کنید:


sudo apt install nginx -y

سپس وضعیت آن را بررسی کنید:


sudo systemctl status nginx

اکنون فایل تنظیمات سایت را ایجاد کنید:


sudo nano /etc/nginx/sites-available/n8n

محتوای زیر را قرار دهید:


server {

    listen 80;

    server_name n8n.example.com;



    location / {

        proxy_pass http://127.0.0.1:5678;

        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-Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;



        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";



        proxy_read_timeout 300s;

        proxy_send_timeout 300s;

    }

}

به‌جای n8n.example.com دامنه واقعی خود را قرار دهید.

سپس تنظیمات را فعال کنید:


sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/n8n

در صورت وجود لینک قبلی با همین نام، ابتدا آن را بررسی کنید و از ایجاد تنظیمات تکراری خودداری کنید.

برای بررسی صحت فایل:


sudo nginx -t

اگر پیام موفقیت‌آمیز نمایش داده شد، Nginx را مجدداً بارگذاری کنید:


sudo systemctl reload nginx

در این مرحله باید درخواست‌های HTTP دامنه به سرویس n8n منتقل شوند.

با این حال، هنوز HTTPS فعال نشده است.

مرحله چهاردهم: نصب SSL رایگان برای n8n

برای فعال‌سازی HTTPS از Let's Encrypt و Certbot استفاده می‌کنیم.

ابتدا Certbot را نصب کنید:


sudo apt install certbot python3-certbot-nginx -y

سپس دستور زیر را اجرا کنید:


sudo certbot --nginx -d n8n.example.com

Certbot تلاش می‌کند مالکیت دامنه را تأیید کند و گواهی SSL صادر کند.

برای موفقیت این مرحله باید دامنه به IP صحیح اشاره کند و پورت 80 از اینترنت قابل دسترسی باشد.

پس از صدور موفق گواهی، تنظیمات HTTPS در Nginx اعمال می‌شوند.

اکنون می‌توانید آدرس زیر را در مرورگر باز کنید:


https://n8n.example.com

اگر همه مراحل صحیح انجام شده باشند، صفحه اولیه n8n نمایش داده می‌شود.

بررسی تمدید خودکار SSL

گواهی‌های Let's Encrypt باید پیش از انقضا تمدید شوند.

برای آزمایش فرایند تمدید:


sudo certbot renew --dry-run

این دستور فرایند تمدید را به‌صورت آزمایشی بررسی می‌کند.

همچنین می‌توانید زمان‌بندی تمدید Certbot را بررسی کنید:


systemctl list-timers | grep certbot

بسته به روش نصب، ممکن است تمدید از طریق سرویس یا زمان‌بندی دیگری مدیریت شود.

مرحله پانزدهم: ایجاد حساب کاربری n8n

پس از فعال‌سازی HTTPS، آدرس دامنه را باز کنید.

در اولین ورود باید حساب مالک اولیه n8n را ایجاد کنید.

اطلاعات موردنیاز را وارد کنید و یک رمز عبور قوی انتخاب کنید.

پس از ورود، محیط اصلی n8n نمایش داده می‌شود.

اکنون می‌توانید اولین Workflow خود را ایجاد کنید.

مرحله شانزدهم: ساخت اولین Workflow آزمایشی

برای اطمینان از عملکرد صحیح n8n، بهتر است یک Workflow ساده بسازید.

ایجاد Workflow

در پنل n8n یک Workflow جدید ایجاد کنید.

سپس Node مربوط به Manual Trigger را اضافه کنید.

این Node اجازه می‌دهد Workflow را به‌صورت دستی اجرا کنید.

اضافه کردن Node دوم

یک Node از نوع Edit Fields (Set) اضافه کنید.

یک فیلد متنی با نام زیر ایجاد کنید:


message

مقدار آن را قرار دهید:


Hello from n8n VPS

اکنون Workflow را اجرا کنید.

اگر خروجی Node دوم حاوی متن موردنظر بود، اجرای اولیه n8n موفق بوده است.

البته این آزمایش فقط عملکرد پایه Workflow را بررسی می‌کند. برای اطمینان از عملکرد واقعی Webhookها، Credentialها و سرویس‌های خارجی باید آزمایش‌های جداگانه انجام دهید.

مرحله هفدهم: تست Webhook روی VPS

یکی از مهم‌ترین دلایل استفاده از VPS، امکان دریافت Webhook از سرویس‌های خارجی است.

برای آزمایش، یک Workflow جدید ایجاد کنید.

سپس یک Webhook Node به آن اضافه کنید.

برای مثال مسیر زیر را در نظر بگیرید:


test-vps

متد درخواست را روی GET قرار دهید.

پس از فعال کردن حالت آزمایش Webhook، n8n آدرس تست را نمایش می‌دهد.

آدرس معمولاً ساختاری مشابه زیر دارد:


https://n8n.example.com/webhook-test/test-vps

این آدرس را در مرورگر یا ابزار ارسال درخواست باز کنید.

در صورتی که Workflow در حالت انتظار برای درخواست تست باشد، اجرای آن آغاز می‌شود.

تفاوت مهم: آدرس‌های /webhook-test/ برای آزمایش در محیط ویرایشگر هستند. برای استفاده عملیاتی باید Workflow را منتشر یا فعال کنید و از آدرس Production Webhook استفاده کنید.

مرحله هجدهم: فعال‌سازی اجرای دائمی n8n

در فایل Compose از تنظیم زیر استفاده کردیم:


restart: unless-stopped

این گزینه باعث می‌شود Docker در بسیاری از شرایط، مانند راه‌اندازی مجدد سرور، کانتینر را دوباره اجرا کند؛ مگر اینکه کانتینر به‌صورت دستی متوقف شده باشد.

برای اطمینان از فعال بودن Docker هنگام روشن شدن سرور:


sudo systemctl enable docker

سپس وضعیت سرویس را بررسی کنید:


sudo systemctl is-enabled docker

اگر خروجی enabled باشد، Docker برای اجرا هنگام راه‌اندازی سیستم تنظیم شده است.

آیا n8n به Cron نیاز دارد؟

برای اجرای Workflowهای زمان‌بندی‌شده معمولاً نیازی به ایجاد Cron Job جداگانه در سیستم‌عامل ندارید.

n8n دارای Triggerهای زمان‌بندی داخلی است.

کافی است Workflow مربوطه فعال باشد و سرویس n8n نیز در حال اجرا باقی بماند.

البته اگر سرور خاموش شود یا کانتینر متوقف شود، اجرای Workflowها نیز تحت تأثیر قرار می‌گیرد.

مرحله نوزدهم: مانیتورینگ منابع VPS

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

مشاهده مصرف RAM


free -h

مشاهده فضای دیسک


df -h

مشاهده مصرف کانتینرها


sudo docker stats

بررسی وضعیت سرویس‌ها


sudo docker compose ps

مشاهده آخرین لاگ‌های n8n


sudo docker compose logs --tail=100 n8n

اگر متوجه افزایش مداوم مصرف RAM یا فضای دیسک شدید، باید تنظیمات ذخیره Executionها، تعداد اجراهای هم‌زمان، نوع Workflowها و سرویس‌های جانبی را بررسی کنید.

مرحله بیستم: بکاپ گرفتن از n8n روی VPS

اطلاعات n8n ممکن است شامل Workflowها، Credentialها، تنظیمات و تاریخچه اجراها باشد.

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

بکاپ PostgreSQL

ابتدا پوشه بکاپ ایجاد کنید:


sudo mkdir -p /var/backups/n8n

سپس از دیتابیس خروجی بگیرید:


cd /opt/n8n


sudo docker compose exec -T postgres sh -c \

'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' \

| sudo tee /var/backups/n8n/database.dump > /dev/null

برای بررسی فایل:


sudo ls -lh /var/backups/n8n/database.dump

بهتر است علاوه بر بررسی وجود فایل، امکان بازیابی آن را نیز در یک محیط آزمایشی بررسی کنید.

بکاپ تنظیمات

فایل‌های .env و compose.yaml نیز اهمیت زیادی دارند.

برای بکاپ آن‌ها:


sudo cp /opt/n8n/.env /var/backups/n8n/env.backup


sudo cp /opt/n8n/compose.yaml /var/backups/n8n/compose.backup.yaml

فایل‌های بکاپ را فقط در اختیار کاربران مجاز قرار دهید.

بکاپ Volume مربوط به n8n

علاوه بر PostgreSQL، باید از Volume مربوط به n8n نیز محافظت کنید.

این Volume می‌تواند شامل فایل‌های تنظیمات و داده‌های دیگری باشد که خارج از PostgreSQL نگهداری می‌شوند.

برای تهیه بکاپ سازگار از آن، سرویس n8n را در یک بازه نگهداری متوقف کنید و پس از شناسایی نام واقعی Volume، از محتوای آن نسخه پشتیبان تهیه کنید.

بهتر است نسخه‌های پشتیبان را در فضای ذخیره‌سازی جداگانه‌ای نیز نگهداری کنید تا خرابی کامل VPS باعث از دست رفتن هم‌زمان اطلاعات اصلی و بکاپ‌ها نشود.

خطاهای رایج نصب n8n روی VPS

خطای 502 Bad Gateway

اگر هنگام باز کردن دامنه با خطای 502 مواجه شدید، احتمالاً Nginx نمی‌تواند به سرویس n8n متصل شود.

ابتدا بررسی کنید کانتینر فعال است:


sudo docker compose ps

سپس پاسخ داخلی n8n را آزمایش کنید:


curl -i http://127.0.0.1:5678/healthz

اگر پاسخ دریافت نشد، لاگ‌های n8n را بررسی کنید.

اگر n8n پاسخ می‌دهد اما دامنه همچنان خطای 502 دارد، تنظیمات proxy_pass و لاگ‌های Nginx را بررسی کنید:


sudo tail -n 100 /var/log/nginx/error.log

خطای اتصال PostgreSQL

اگر n8n نتواند به دیتابیس متصل شود، وضعیت سرویس را بررسی کنید:


sudo docker compose logs --tail=100 postgres

سپس مطمئن شوید متغیرهای اتصال دیتابیس صحیح هستند.

توجه داشته باشید که اگر Volume دیتابیس از قبل ایجاد شده باشد، تغییر رمز عبور در فایل .env لزوماً رمز کاربر موجود PostgreSQL را تغییر نمی‌دهد.

باز نشدن دامنه

اگر دامنه باز نمی‌شود، موارد زیر را بررسی کنید:

  • رکورد DNS به IP صحیح اشاره کند.
  • پورت‌های 80 و 443 در دسترس باشند.
  • سرویس Nginx فعال باشد.
  • گواهی SSL معتبر باشد.
  • فایروال ارائه‌دهنده VPS دسترسی را مسدود نکرده باشد.

خطای SSL

اگر Certbot نتواند گواهی صادر کند، ابتدا مطمئن شوید دامنه به سرور متصل است.

سپس بررسی کنید پورت 80 از اینترنت قابل دسترسی باشد و تنظیمات Nginx برای دامنه صحیح باشند.

اجرای ناموفق Workflowهای زمان‌بندی‌شده

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

سپس مطمئن شوید سرویس n8n در حال اجراست و منطقه زمانی درست تنظیم شده است.

کمبود RAM

اگر سرور با کمبود حافظه مواجه شود، ممکن است اجرای Workflowها با خطا مواجه شود یا فرایند n8n متوقف شود.

برای بررسی وضعیت حافظه:


free -h

برای بررسی مصرف کانتینرها:


sudo docker stats

همچنین می‌توانید رخدادهای مرتبط با OOM را در لاگ‌های سیستم بررسی کنید.

نکات امنیتی مهم برای n8n روی VPS

پس از نصب، چند اقدام امنیتی اهمیت زیادی دارند.

محافظت از SSH

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

محدودسازی پورت‌ها

پورت PostgreSQL را در اینترنت منتشر نکنید و پورت n8n را پشت Reverse Proxy نگه دارید.

استفاده از HTTPS

پنل n8n را از طریق HTTPS در اختیار کاربران قرار دهید.

نگهداری امن Credentialها

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

به‌روزرسانی برنامه‌ریزی‌شده

قبل از به‌روزرسانی n8n از اطلاعات نسخه پشتیبان تهیه کنید و تغییرات نسخه مقصد را بررسی کنید.

بکاپ منظم

برای دیتابیس، Volumeها و فایل‌های تنظیمات برنامه بکاپ منظم داشته باشید.

بررسی Nodeهای شخص ثالث

Community Nodeها و کدهای اجراشده در Workflowها می‌توانند به منابع و داده‌های حساس دسترسی پیدا کنند. بنابراین فقط از منابع معتبر استفاده کنید.

جمع‌بندی

در این مقاله یاد گرفتیم چگونه n8n را روی VPS راه‌اندازی کنیم.

ابتدا مشخصات سرور مجازی مناسب را بررسی کردیم، سپس Ubuntu را آماده کردیم و تنظیمات اولیه امنیت SSH و فایروال را انجام دادیم.

در ادامه Docker و Docker Compose را نصب کردیم، سرویس‌های n8n و PostgreSQL را اجرا کردیم و با استفاده از Nginx و Let's Encrypt دسترسی امن از طریق دامنه و HTTPS را فراهم کردیم.

همچنین روش ساخت Workflow آزمایشی، بررسی Webhook، مانیتورینگ منابع، بکاپ‌گیری و رفع خطاهای رایج را بررسی کردیم.

با این ساختار می‌توانید یک نمونه مستقل n8n را روی VPS خود اجرا کنید و به‌تدریج آن را برای نیازهای واقعی کسب‌وکار توسعه دهید.

البته برای محیط‌های حساس و پرترافیک، مواردی مانند مانیتورینگ پیشرفته، تست بازیابی بکاپ، مدیریت Secrets، سیاست نگهداری Executionها و معماری Queue Mode نیز باید بررسی شوند.

سوالات متداول

آیا می‌توان n8n را روی VPS ارزان نصب کرد؟

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

آیا برای نصب n8n روی VPS به دامنه نیاز داریم؟

برای اجرای اولیه خیر؛ اما برای استفاده عمومی و دریافت Webhook از سرویس‌های خارجی بهتر است دامنه و HTTPS داشته باشید.

آیا n8n روی VPS به‌صورت دائمی اجرا می‌شود؟

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

آیا نصب n8n روی VPS رایگان است؟

نسخه Community Edition را می‌توان مطابق شرایط مجوز n8n بدون پرداخت اشتراک نرم‌افزار اجرا کرد؛ اما هزینه VPS، دامنه و نگهداری جداگانه است.

آیا می‌توان n8n را روی VPS ایران نصب کرد؟

بله. اما دسترسی به مخازن Docker، APIهای خارجی و سرویس‌های موردنیاز Workflowها باید بررسی شود. بعضی سرویس‌ها ممکن است از شبکه سرور ایران در دسترس نباشند.

آیا VPS خارج برای n8n بهتر است؟

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

آیا برای n8n روی VPS باید PostgreSQL نصب کنیم؟

الزامی نیست؛ n8n از SQLite نیز پشتیبانی می‌کند. با این حال PostgreSQL برای بسیاری از محیط‌های عملیاتی انتخاب مناسب‌تری است.

آیا می‌توان چند نمونه n8n را روی یک VPS اجرا کرد؟

بله. می‌توانید چند نمونه مستقل n8n را با Docker اجرا کنید. در این حالت باید منابع سرور، شبکه‌ها، دیتابیس‌ها، Volumeها، کلیدهای رمزنگاری و دامنه‌های هر نمونه را به‌درستی مدیریت کنید.

آیا برای اجرای Workflowهای n8n به Cron سیستم‌عامل نیاز داریم؟

معمولاً خیر. n8n دارای Triggerهای زمان‌بندی داخلی است و می‌تواند Workflowهای فعال را براساس تنظیمات زمانی اجرا کند.

نظرات (0)

نظرات پس از تأیید مدیر نمایش داده می‌شوند

هنوز نظری ثبت نشده است؛ اولین نفر باشید!

مقالات مرتبط

اتصال دامنه به n8n؛ آموزش کامل تنظیم DNS و Reverse Proxy

اتصال دامنه به n8n؛ آموزش کامل تنظیم DNS و Reverse Proxy

۲۳ دقیقه
نصب n8n روی سرور خارج؛ آموزش کامل راه‌اندازی روی VPS خارجی

نصب n8n روی سرور خارج؛ آموزش کامل راه‌اندازی روی VPS خارجی

۲۴ دقیقه
نصب n8n روی سرور ایران؛ آموزش کامل راه‌اندازی و رفع مشکلات اتصال

نصب n8n روی سرور ایران؛ آموزش کامل راه‌اندازی و رفع مشکلات اتصال

۲۰ دقیقه
نصب n8n با Docker Compose؛ آموزش کامل راه‌اندازی و مدیریت سرویس

نصب n8n با Docker Compose؛ آموزش کامل راه‌اندازی و مدیریت سرویس

۲۰ دقیقه