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

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

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

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

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

اگر قصد دارید اتوماسیون‌های خود را با n8n اجرا کنید و به سرویس‌های بین‌المللی مانند Google Sheets، Telegram، GitHub یا APIهای مختلف متصل شوید، استفاده از یک سرور خارجی می‌تواند گزینه مناسبی باشد.

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

اما انتخاب سرور خارجی تنها اولین مرحله است. برای راه‌اندازی یک سرویس پایدار باید مواردی مانند موقعیت دیتاسنتر، کیفیت شبکه، منابع سخت‌افزاری، امنیت SSH، دیتابیس PostgreSQL، دامنه، SSL و بکاپ‌گیری را نیز در نظر بگیرید.

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

چرا n8n را روی سرور خارج نصب کنیم؟

n8n یک پلتفرم اتوماسیون Workflow است که می‌توانید نسخه Self-hosted آن را روی زیرساخت شخصی خود اجرا کنید.

این زیرساخت می‌تواند یک سرور داخل ایران، سرور خارجی، کامپیوتر شخصی یا محیط ابری باشد.

انتخاب سرور خارجی معمولاً زمانی مطرح می‌شود که Workflowهای شما وابستگی زیادی به سرویس‌های بین‌المللی دارند.

دسترسی به APIهای بین‌المللی

بسیاری از Workflowهای n8n با APIهای خارجی ارتباط برقرار می‌کنند.

برای مثال:

  • Google Sheets API برای مدیریت اطلاعات صفحات گسترده
  • GitHub API برای مدیریت مخازن و رویدادهای توسعه نرم‌افزار
  • Telegram Bot API برای ارسال و دریافت پیام
  • سرویس‌های ایمیل برای ارسال اعلان‌ها
  • APIهای هوش مصنوعی برای پردازش متن و داده
  • سرویس‌های مدیریت پروژه و CRM

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

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

اجرای دائمی Workflowها

اگر n8n روی کامپیوتر شخصی اجرا شود، خاموش شدن کامپیوتر یا قطع اینترنت می‌تواند اجرای Workflowها را متوقف کند.

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

البته پایداری نهایی به کیفیت ارائه‌دهنده، منابع سرور، تنظیمات Docker و مانیتورینگ نیز وابسته است.

دریافت Webhook از سرویس‌های خارجی

بسیاری از سرویس‌ها برای اطلاع‌رسانی رویدادها از Webhook استفاده می‌کنند.

برای مثال، ممکن است بخواهید با ثبت یک سفارش جدید یا دریافت یک پیام، Workflow مشخصی اجرا شود.

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

بهترین کشور برای نصب n8n کدام است؟

انتخاب کشور سرور یکی از تصمیم‌های مهم هنگام راه‌اندازی n8n است.

کشور مناسب به موقعیت کاربران، سرویس‌های مورد استفاده، قوانین نگهداری داده و کیفیت شبکه بستگی دارد.

سرور آلمان

آلمان یکی از گزینه‌های رایج برای میزبانی سرویس‌های وب است.

مزایای احتمالی آن عبارت‌اند از:

  • تنوع ارائه‌دهندگان VPS
  • وجود دیتاسنترهای متعدد
  • امکان انتخاب منابع سخت‌افزاری مختلف
  • مناسب بودن موقعیت جغرافیایی برای ارتباط با بسیاری از سرویس‌های اروپایی

البته کیفیت واقعی سرور به ارائه‌دهنده و دیتاسنتر بستگی دارد.

سرور هلند

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

اگر Workflowهای شما با سرویس‌های اروپایی ارتباط دارند، می‌توانید سرورهای این کشور را بررسی کنید.

سرور فنلاند

فنلاند نیز می‌تواند گزینه‌ای برای میزبانی n8n باشد.

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

سرور آمریکا

اگر بخش زیادی از APIهای مورد استفاده شما در زیرساخت‌های آمریکا میزبانی می‌شوند، یک VPS در آمریکا ممکن است تأخیر کمتری در ارتباط با آن‌ها داشته باشد.

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

مقایسه موقعیت‌های مختلف

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

هیچ کشوری برای تمام پروژه‌های n8n بهترین گزینه نیست.

بهترین روش انتخاب، آزمایش واقعی ارتباط با APIهای موردنیاز از همان موقعیت سرور است.

چه مشخصاتی برای VPS خارجی n8n مناسب است؟

منابع موردنیاز n8n به نوع Workflowها، تعداد اجرای هم‌زمان و حجم داده‌ها بستگی دارد.

جدول زیر صرفاً پیشنهاد اولیه برای انتخاب سرور است و حداقل رسمی یا تضمین ظرفیت محسوب نمی‌شود.

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

اگر از PostgreSQL، Redis یا چند Worker استفاده می‌کنید، مصرف منابع سرویس‌های جانبی را نیز محاسبه کنید.

همچنین Workflowهایی که فایل‌های حجیم، تصاویر یا داده‌های زیاد را پردازش می‌کنند ممکن است به حافظه بیشتری نیاز داشته باشند.

مرحله اول: تهیه VPS خارجی

ابتدا یک VPS با سیستم‌عامل Linux تهیه کنید.

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

پس از فعال‌سازی VPS معمولاً اطلاعات زیر را دریافت خواهید کرد:

  • IP عمومی سرور
  • نام کاربری اولیه
  • رمز عبور یا کلید SSH
  • مشخصات CPU و RAM
  • سیستم‌عامل
  • دسترسی به پنل مدیریت سرور

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


203.0.113.20

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

مرحله دوم: اتصال SSH به سرور خارجی

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

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


ssh root@203.0.113.20

اگر نام کاربری اولیه شما ubuntu است، دستور را متناسب با آن تغییر دهید.

پس از ورود، نسخه سیستم‌عامل را بررسی کنید:


cat /etc/os-release

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


free -h

و:


df -h

با این دستورات می‌توانید وضعیت حافظه و فضای دیسک را بررسی کنید.

مرحله سوم: آماده‌سازی اولیه Ubuntu

قبل از نصب n8n، سیستم‌عامل را به‌روزرسانی کنید.


sudo apt update

سپس:


sudo apt upgrade -y

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


sudo reboot

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

ایجاد کاربر مدیریتی

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

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


sudo adduser deploy

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


sudo usermod -aG sudo deploy

کلید عمومی SSH خود را نیز برای این کاربر تنظیم کنید.

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


ssh-copy-id deploy@203.0.113.20

قبل از محدود کردن ورود root یا ورود با رمز عبور، حتماً اتصال کاربر جدید را در یک نشست SSH جداگانه آزمایش کنید.

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

برای کنترل پورت‌های ورودی از UFW استفاده می‌کنیم.

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


sudo apt install ufw -y

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


sudo ufw allow 22/tcp

اگر SSH روی پورت دیگری اجرا می‌شود، پورت واقعی را جایگزین کنید.

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


sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

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


sudo ufw enable

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


sudo ufw status verbose

اگر ارائه‌دهنده VPS دارای Cloud Firewall مستقل است، تنظیمات آن را نیز بررسی کنید.

در ادامه پورت n8n را فقط روی localhost منتشر می‌کنیم تا مستقیماً از اینترنت قابل دسترسی نباشد.

مرحله پنجم: نصب Docker روی سرور خارجی

برای اجرای 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

در پایان یک کانتینر آزمایشی اجرا کنید:


sudo docker run hello-world

اگر پیام موفقیت‌آمیز Docker نمایش داده شد، نصب صحیح انجام شده است.

مرحله ششم: بررسی کیفیت شبکه VPS خارجی

قبل از نصب n8n بهتر است اتصال شبکه سرور را آزمایش کنید.

بررسی DNS


resolvectl status

برای بررسی Resolve شدن دامنه:


getent ahostsv4 docker.n8n.io

بررسی اتصال HTTPS


curl -I --connect-timeout 10 https://docker.n8n.io

بررسی تأخیر شبکه

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


ping -c 4 1.1.1.1

البته پاسخ Ping به‌تنهایی معیار کاملی برای کیفیت ارتباط نیست.

بعضی سرویس‌ها ICMP را مسدود می‌کنند، درحالی‌که ارتباط HTTPS آن‌ها به‌درستی برقرار است.

برای بررسی دقیق‌تر باید Endpointهای واقعی موردنیاز Workflowها را آزمایش کنید.

بررسی مسیر شبکه

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

برای نصب:


sudo apt install mtr-tiny -y

سپس:


mtr -rw -c 10 1.1.1.1

نتایج این ابزارها باید با احتیاط تفسیر شوند؛ زیرا برخی روترها به بسته‌های تشخیصی پاسخ نمی‌دهند.

مرحله هفتم: ایجاد پوشه پروژه 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_ENCRYPTION_KEY باید در طول عمر نمونه n8n ثابت باقی بماند و همراه با بکاپ‌ها به‌شکل امن نگهداری شود.

مرحله نهم: ایجاد فایل تنظیمات محیطی

فایل .env را ایجاد کنید:


nano /opt/n8n/.env

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


POSTGRES_DB=n8n

POSTGRES_USER=n8n_user

POSTGRES_PASSWORD=YOUR_DATABASE_PASSWORD



N8N_ENCRYPTION_KEY=YOUR_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

EXECUTIONS_DATA_PRUNE=true

EXECUTIONS_DATA_MAX_AGE=168

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

در این مثال:

  • اطلاعات اتصال PostgreSQL در فایل .env نگهداری می‌شوند.
  • کلید رمزنگاری n8n به‌صورت ثابت تنظیم می‌شود.
  • دامنه عمومی n8n مشخص شده است.
  • منطقه زمانی روی تهران قرار دارد.
  • پاک‌سازی داده‌های Execution فعال است.
  • مقدار 168 برای نگهداری زمانی Executionها برحسب ساعت تنظیم شده است.

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

پس از ذخیره فایل:


chmod 600 /opt/n8n/.env

مرحله دهم: ساخت Docker Compose برای n8n و PostgreSQL

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


nano /opt/n8n/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}

      EXECUTIONS_DATA_PRUNE: ${EXECUTIONS_DATA_PRUNE}

      EXECUTIONS_DATA_MAX_AGE: ${EXECUTIONS_DATA_MAX_AGE}



    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ها، کاربران، Credentialهای رمزنگاری‌شده و داده‌های اجرایی.

n8n: برای مدیریت و اجرای Workflowها.

برای حفظ اطلاعات نیز از دو Volume پایدار استفاده شده است.

نکته مهم درباره نسخه n8n

در مثال بالا از برچسب latest استفاده کرده‌ایم تا ساختار نصب ساده باشد.

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

به‌روزرسانی بدون بررسی تغییرات نسخه می‌تواند روی Workflowها یا دیتابیس تأثیر بگذارد.

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

ابتدا وارد پوشه پروژه شوید:


cd /opt/n8n

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


sudo docker compose config --quiet

سپس سرویس‌ها را اجرا کنید:


sudo docker compose up -d

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


sudo docker compose ps

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


sudo docker compose logs -f n8n

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

بررسی سلامت n8n

از داخل سرور اجرا کنید:


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

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

بررسی PostgreSQL


sudo docker compose exec postgres sh -c \

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

این دستور آماده بودن PostgreSQL برای پذیرش اتصال را بررسی می‌کند.

مرحله دوازدهم: اتصال دامنه به سرور خارجی

برای استفاده عمومی از n8n بهتر است یک زیردامنه اختصاصی داشته باشید.

برای مثال:


n8n.example.com

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

نوع رکوردناممقدار
An8nIP سرور خارجی

برای بررسی اتصال دامنه:


dig +short n8n.example.com

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

اگر از Cloudflare استفاده می‌کنید، وضعیت Proxy و تنظیمات SSL آن را نیز باید متناسب با معماری خود بررسی کنید.

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

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

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


sudo apt install nginx -y

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


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

اگر خطایی وجود نداشت:


sudo systemctl reload nginx

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

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

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

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


sudo apt install certbot python3-certbot-nginx -y

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


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

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

پس از صدور گواهی، آدرس زیر را باز کنید:


https://n8n.example.com

در صورت تنظیم صحیح، صفحه n8n از طریق HTTPS نمایش داده می‌شود.

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

برای آزمایش تمدید گواهی:


sudo certbot renew --dry-run

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

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

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

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

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

پس از ورود، می‌توانید اولین Workflow خود را ایجاد کنید.

مرحله شانزدهم: بررسی اتصال به APIهای خارجی

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

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

آزمایش Telegram Bot API


curl -I --connect-timeout 10 https://api.telegram.org

آزمایش GitHub API


curl -I --connect-timeout 10 https://api.github.com

آزمایش OpenAI API


curl -I --connect-timeout 10 https://api.openai.com

دریافت پاسخ HTTP مانند 401 یا 403 لزوماً به معنی خرابی شبکه نیست.

ممکن است Endpoint به احراز هویت نیاز داشته باشد یا دسترسی حساب و موقعیت سرور محدود شده باشد.

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

آزمایش اتصال از داخل کانتینر n8n

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

برای آزمایش:


sudo docker compose exec n8n node -e \

"fetch('https://api.github.com').then(r=>console.log(r.status)).catch(e=>console.error(e.message))"

اگر پاسخ HTTP دریافت شود، حداقل ارتباط HTTPS از داخل کانتینر برقرار شده است.

مرحله هفدهم: آزمایش Webhook روی سرور خارجی

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

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

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


test-foreign-vps

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

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


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

اکنون روی گزینه Listen for Test Event کلیک کنید.

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

اگر درخواست به n8n برسد، اجرای Workflow آغاز خواهد شد.

تفاوت Test Webhook و Production Webhook

آدرس Test Webhook برای آزمایش در محیط ویرایشگر استفاده می‌شود.

اما برای استفاده دائمی باید Workflow را فعال یا منتشر کنید و از Production Webhook استفاده کنید.

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


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

برای سرویس‌های واقعی، حتماً آدرس Production را در تنظیمات سرویس خارجی ثبت کنید.

مرحله هجدهم: تنظیم اجرای دائمی n8n

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


restart: unless-stopped

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

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


sudo systemctl enable docker

سپس:


sudo systemctl is-enabled docker

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

توجه داشته باشید که اجرای دائمی به معنی تضمین عدم قطعی نیست. برای سرویس‌های حساس باید مانیتورینگ و برنامه بازیابی نیز داشته باشید.

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

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

مصرف RAM


free -h

فضای دیسک


df -h

مصرف CPU و RAM کانتینرها


sudo docker stats

وضعیت کانتینرها


sudo docker compose ps

لاگ‌های n8n


sudo docker compose logs --tail=100 n8n

اگر مصرف منابع به‌صورت مداوم افزایش پیدا می‌کند، باید نوع Workflowها، حجم داده‌های Execution و تنظیمات نگهداری اطلاعات را بررسی کنید.

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

برای جلوگیری از دست رفتن اطلاعات، باید از PostgreSQL، Volume مربوط به n8n و فایل‌های تنظیمات بکاپ تهیه کنید.

بکاپ 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

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

بکاپ فایل‌های تنظیمات

فایل‌های زیر نیز باید نگهداری شوند:


/opt/n8n/.env

/opt/n8n/compose.yaml

به‌خصوص فایل .env حاوی کلید رمزنگاری است و باید به‌صورت امن ذخیره شود.

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

حتی اگر از PostgreSQL استفاده می‌کنید، Volume مربوط به /home/node/.n8n همچنان اهمیت دارد.

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

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

مرحله بیست‌ویکم: به‌روزرسانی n8n روی VPS خارجی

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

قبل از هر تغییری از اطلاعات بکاپ بگیرید.

سپس تصویر نسخه جدید را دریافت کنید:


sudo docker compose pull n8n

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


sudo docker compose up -d n8n

در پایان لاگ‌ها را بررسی کنید:


sudo docker compose logs --tail=100 n8n

نکته مهم: این دستورات زمانی نسخه جدید را اعمال می‌کنند که برچسب تصویر در Compose به نسخه مقصد اشاره کند یا تصویر مرتبط با همان برچسب تغییر کرده باشد.

برای محیط عملیاتی بهتر است نسخه n8n را به‌صورت مشخص ثبت کنید و قبل از ارتقا، Release Notes را بررسی کنید.

مشکلات رایج نصب n8n روی سرور خارج

خطای 502 Bad Gateway

اگر دامنه خطای 502 نمایش می‌دهد، ابتدا وضعیت n8n را بررسی کنید:


sudo docker compose ps

سپس:


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

اگر سرویس پاسخ نمی‌دهد، لاگ‌های n8n را بررسی کنید.

اگر سرویس پاسخ می‌دهد، تنظیمات Nginx را بررسی کنید:


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

خطای اتصال PostgreSQL

برای مشاهده لاگ دیتابیس:


sudo docker compose logs --tail=100 postgres

همچنین اطلاعات اتصال را در فایل .env بررسی کنید.

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

مشکل صدور SSL

اگر Certbot نتواند گواهی صادر کند، ابتدا DNS و دسترسی به پورت 80 را بررسی کنید.

همچنین مطمئن شوید Nginx برای دامنه صحیح تنظیم شده است.

خطای اتصال API

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

کمبود RAM

اگر کانتینر به دلیل کمبود حافظه متوقف می‌شود، مصرف منابع را بررسی کنید:


sudo docker stats

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

مشکل اجرای Workflowهای زمان‌بندی‌شده

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

سرور ایران بهتر است یا سرور خارج؟

انتخاب بین سرور ایران و خارج باید براساس نیاز واقعی پروژه انجام شود.

معیارسرور ایرانسرور خارج
اتصال به سرویس‌های داخلیممکن است مناسب‌تر باشدوابسته به مسیر شبکه
اتصال به APIهای بین‌المللیممکن است محدودیت داشته باشدوابسته به کشور و سرویس
تأخیر برای کاربران ایرانیممکن است کمتر باشدوابسته به موقعیت
دریافت Docker Imageاحتمال مشکلات دسترسیوابسته به Registry و شبکه
نگهداری داده در ایرانامکان‌پذیرنیازمند بررسی محل ذخیره
هزینهوابسته به ارائه‌دهندهوابسته به کشور و منابع
مدیریت و توسعهامکان‌پذیرامکان‌پذیر

اگر Workflowهای شما عمدتاً با APIهای خارجی کار می‌کنند، VPS خارجی ممکن است انتخاب مناسب‌تری باشد.

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

نکات امنیتی مهم برای n8n روی سرور خارجی

پس از راه‌اندازی، امنیت سرویس را جدی بگیرید.

محافظت از SSH

از کلید SSH استفاده کنید و دسترسی مدیریتی را محدود نگه دارید.

انتشار ندادن پورت PostgreSQL

دیتابیس نباید بدون ضرورت در اینترنت قابل دسترسی باشد.

استفاده از HTTPS

برای پنل مدیریت و Webhookهای عمومی از HTTPS استفاده کنید.

محافظت از کلید رمزنگاری

کلید N8N_ENCRYPTION_KEY را در مخازن عمومی یا فایل‌های قابل مشاهده برای دیگران قرار ندهید.

کنترل دسترسی کاربران

فقط به افراد موردنیاز دسترسی مدیریتی بدهید و از حساب‌های مشترک غیرضروری خودداری کنید.

بررسی Community Nodeها

قبل از نصب Nodeهای شخص ثالث، اعتبار منبع و سطح دسترسی آن‌ها را بررسی کنید.

بکاپ و تست بازیابی

از اطلاعات بکاپ منظم تهیه کنید و بازیابی آن‌ها را نیز آزمایش کنید.

جمع‌بندی

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

ابتدا معیارهای انتخاب VPS خارجی و موقعیت دیتاسنتر را بررسی کردیم. سپس Ubuntu را آماده کردیم، Docker و Docker Compose را نصب کردیم و سرویس‌های n8n و PostgreSQL را راه‌اندازی کردیم.

در ادامه دامنه را به سرور متصل کردیم، با Nginx و Let's Encrypt دسترسی HTTPS ایجاد کردیم و نحوه آزمایش Webhook و APIهای خارجی را بررسی کردیم.

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

با اجرای این مراحل می‌توانید یک نمونه مستقل n8n روی VPS خارجی داشته باشید و Workflowهای خود را به‌صورت دائمی مدیریت کنید.

برای پروژه‌های بزرگ‌تر نیز می‌توانید در آینده از معماری Queue Mode، Redis، Workerهای مستقل و مانیتورینگ پیشرفته استفاده کنید.

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

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

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

بهترین کشور برای نصب n8n کدام است؟

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

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

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

آیا برای نصب n8n روی سرور خارجی به دامنه نیاز داریم؟

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

آیا سرور خارجی دسترسی به تمام APIها را تضمین می‌کند؟

خیر. دسترسی به APIها به کشور سرور، سیاست سرویس مقصد، شرایط حساب کاربری و وضعیت شبکه بستگی دارد.

آیا PostgreSQL برای n8n ضروری است؟

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

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

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

آیا n8n پس از ری‌استارت VPS دوباره اجرا می‌شود؟

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

آیا برای اجرای Workflowهای زمان‌بندی‌شده به Cron نیاز داریم؟

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

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

بله. با تهیه بکاپ سازگار از دیتابیس، فایل‌های تنظیمات، کلید رمزنگاری و Volumeهای موردنیاز می‌توانید برای مهاجرت برنامه‌ریزی کنید. پس از انتقال نیز باید دامنه، Webhookها و اتصال سرویس‌های خارجی را آزمایش کنید.

نظرات (0)

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

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

مقالات مرتبط

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

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

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

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

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

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

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

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

۲۰ دقیقه