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

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

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

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

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

اگر قصد دارید ابزار اتوماسیون n8n را روی یک سرور داخل ایران راه‌اندازی کنید، احتمالاً با سوالات مختلفی مواجه شده‌اید. آیا n8n روی VPS ایران اجرا می‌شود؟ برای نصب آن به چه منابعی نیاز داریم؟ اگر دانلود Docker Image با خطا مواجه شد چه کاری باید انجام دهیم؟ آیا اتصال n8n به سرویس‌هایی مانند تلگرام، OpenAI و Google Sheets از سرور ایران امکان‌پذیر است؟

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

از نظر فنی، n8n روی سرور ایران نیز مانند سایر سرورهای لینوکسی قابل اجراست. با این حال، محدودیت‌های احتمالی دسترسی به مخازن نرم‌افزاری، APIهای خارجی و مسیرهای شبکه ممکن است مراحل نصب و استفاده از آن را تحت تأثیر قرار دهند.

در این مقاله قصد داریم نصب n8n روی سرور ایران را از صفر تا اجرا آموزش دهیم. همچنین روش شناسایی مشکلات Docker، DNS، اتصال به APIها، Webhookها و راهکارهای افزایش پایداری سرویس را بررسی خواهیم کرد.

آیا نصب n8n روی سرور ایران امکان‌پذیر است؟

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

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

برای مثال، اگر یک سرور Ubuntu در ایران داشته باشید و Docker روی آن نصب باشد، می‌توانید کانتینر n8n را اجرا کنید.

اما هنگام استفاده ممکن است با مشکلاتی مواجه شوید:

  • دسترسی ناموفق به Docker Registry
  • کندی یا قطعی دانلود Docker Image
  • اختلال در DNS Resolution
  • محدودیت دسترسی به برخی APIهای خارجی
  • مشکل دریافت Webhook از سرویس‌های بین‌المللی
  • تأخیر در ارتباط با سرویس‌های خارج از ایران
  • مشکل به‌روزرسانی کانتینرها

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

مزایای نصب n8n روی سرور ایران

اجرای n8n روی سرور داخلی می‌تواند برای بعضی پروژه‌ها مزایایی داشته باشد.

۱. ارتباط مناسب با سرویس‌های داخلی

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

برای مثال:

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

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

۲. امکان استفاده از زیرساخت داخلی

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

۳. مدیریت مستقل اطلاعات

در روش Self-hosted کنترل بیشتری روی دیتابیس، فایل‌ها، تنظیمات و محل ذخیره اطلاعات خواهید داشت.

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

معایب و محدودیت‌های سرور ایران برای n8n

در کنار مزایا، باید محدودیت‌های احتمالی را نیز بشناسید.

دسترسی به APIهای خارجی

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

برای مثال، هنگام اتصال به سرویس‌های بین‌المللی باید محدودیت‌های دسترسی و شرایط استفاده همان سرویس را بررسی کنید.

مشکلات دریافت Docker Image

ممکن است سرور نتواند تصویر n8n یا PostgreSQL را از Registry مربوطه دریافت کند.

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

مشکلات ارتباط دوطرفه

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

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

بنابراین باید ارتباط ورودی و خروجی را جداگانه بررسی کنید.

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

انتخاب منابع سرور به نوع استفاده شما بستگی دارد.

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

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

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

سیستم‌عامل پیشنهادی

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

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

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

پس از تهیه VPS، شرکت ارائه‌دهنده معمولاً اطلاعات اتصال SSH را در اختیار شما قرار می‌دهد.

برای مثال:


ssh root@SERVER_IP

به‌جای SERVER_IP آدرس واقعی سرور را وارد کنید.

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


cat /etc/os-release

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


free -h

و:


df -h

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

مرحله دوم: بررسی وضعیت اینترنت سرور

یکی از مهم‌ترین مراحل نصب n8n روی سرور ایران، بررسی ارتباط شبکه است.

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


resolvectl status

سپس اتصال HTTPS به یک مقصد عمومی را آزمایش کنید:


curl -I --connect-timeout 10 https://www.cloudflare.com

برای بررسی دسترسی به Registry رسمی n8n:


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

همچنین می‌توانید Docker Hub را بررسی کنید:


curl -I --connect-timeout 10 https://registry-1.docker.io/v2/

در آزمایش آخر، دریافت پاسخ 401 Unauthorized می‌تواند طبیعی باشد؛ زیرا Registry برای برخی درخواست‌ها نیازمند احراز هویت است.

آنچه اهمیت دارد این است که اتصال DNS، TCP و TLS برقرار شود.

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

مرحله سوم: بررسی DNS سرور

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


resolvectl status

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


getent ahostsv4 docker.n8n.io

اگر آدرس IP نمایش داده نشود، احتمال وجود مشکل در DNS مطرح می‌شود.

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


dig docker.n8n.io

اگر دستور dig نصب نیست:


sudo apt install dnsutils -y

آیا تغییر DNS مشکل نصب n8n را حل می‌کند؟

گاهی اوقات بله، اما همیشه خیر.

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

اما اگر مشکل مربوط به مسدود بودن مسیر شبکه، محدودیت IP یا عدم دسترسی به مقصد باشد، تغییر DNS به‌تنهایی کافی نخواهد بود.

قبل از تغییر DNS باید از تنظیمات فعلی نسخه پشتیبان تهیه کنید و DNS جدید را از نظر دسترسی و قابلیت اعتماد بررسی کنید.

مرحله چهارم: نصب Docker روی Ubuntu

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

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


sudo apt update

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


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 را نصب کنید:


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

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


sudo docker --version

و:


sudo docker compose version

اگر نصب با خطای اتصال به مخزن مواجه شد، قبل از تغییر تنظیمات باید خطای واقعی شبکه یا APT را بررسی کنید.

مرحله پنجم: بررسی دسترسی به Docker Registry

اکنون باید مطمئن شوید Docker می‌تواند تصاویر موردنیاز را دریافت کند.

برای آزمایش:


sudo docker pull hello-world

سپس تصویر رسمی n8n را دریافت کنید:


sudo docker pull docker.n8n.io/n8nio/n8n:latest

و PostgreSQL:


sudo docker pull postgres:16

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

اگر خطا دریافت کردید، متن خطا را بررسی کنید.

خطاعلت احتمالی
i/o timeoutاختلال یا عدم دسترسی شبکه
no such hostمشکل DNS
TLS handshake timeoutاختلال ارتباط TLS یا مسیر شبکه
connection refusedرد اتصال از مقصد یا واسط شبکه
unauthorizedمشکل احراز هویت یا مجوز Registry
manifest unknownنام یا Tag نامعتبر تصویر

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

مرحله ششم: رفع مشکل Docker Pull روی سرور ایران

اگر دانلود تصاویر Docker ناموفق بود، چند راهکار وجود دارد.

راهکار اول: بررسی دقیق اتصال

ابتدا DNS را بررسی کنید:


getent ahostsv4 docker.n8n.io

سپس اتصال HTTPS را آزمایش کنید:


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

در خروجی به موارد زیر توجه کنید:

  • آیا نام دامنه Resolve می‌شود؟
  • آیا اتصال TCP برقرار می‌شود؟
  • آیا TLS Handshake موفق است؟
  • آیا سرور مقصد پاسخ HTTP ارسال می‌کند؟

راهکار دوم: استفاده از Proxy معتبر

اگر یک Proxy مجاز و قابل اعتماد در اختیار دارید، می‌توانید Docker Daemon را برای استفاده از آن تنظیم کنید.

در نسخه‌های پشتیبانی‌شده Docker Engine می‌توان تنظیمات Proxy را در فایل زیر قرار داد:


/etc/docker/daemon.json

برای مثال:


{

  "proxies": {

    "http-proxy": "http://proxy.example.com:3128",

    "https-proxy": "http://proxy.example.com:3128",

    "no-proxy": "localhost,127.0.0.1"

  }

}

آدرس proxy.example.com صرفاً نمونه است و باید با Proxy واقعی جایگزین شود.

اگر فایل daemon.json از قبل وجود دارد، تنظیمات جدید را با تنظیمات قبلی ادغام کنید و محتوای موجود را بدون بررسی حذف نکنید.

قبل از راه‌اندازی مجدد، اعتبار تنظیمات را بررسی کنید:


sudo dockerd --validate --config-file=/etc/docker/daemon.json

سپس:


sudo systemctl restart docker

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

نکته مهم: Proxy مربوط به Docker Daemon برای دریافت تصاویر Docker است. این تنظیم لزوماً باعث نمی‌شود درخواست‌های HTTP داخل Workflowهای n8n نیز از همان Proxy عبور کنند.

راهکار سوم: استفاده از Registry Mirror

اگر یک Registry Mirror معتبر و قابل اعتماد در اختیار دارید، می‌توانید از آن برای دریافت تصاویر پشتیبانی‌شده استفاده کنید.

برای Docker Hub، نمونه ساختار تنظیمات به این شکل است:


{

  "registry-mirrors": [

    "https://mirror.example.com"

  ]

}

این آدرس فقط نمونه است.

همه Mirrorها از تمام Registryها پشتیبانی نمی‌کنند. به‌خصوص تصویر رسمی n8n که از docker.n8n.io دریافت می‌شود، لزوماً از طریق Mirror مخصوص Docker Hub قابل دریافت نیست.

قبل از استفاده از Mirror، باید اعتبار ارائه‌دهنده، پشتیبانی از Registry موردنظر و امنیت زنجیره تأمین تصاویر را بررسی کنید.

راهکار چهارم: انتقال تصویر Docker از یک سیستم دیگر

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

روی سیستم مبدأ:


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

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


docker save -o n8n-image.tar docker.n8n.io/n8nio/n8n:latest

فایل را به سرور مقصد منتقل کنید:


scp n8n-image.tar root@SERVER_IP:/root/

روی سرور مقصد:


sudo docker load -i /root/n8n-image.tar

در پایان بررسی کنید تصویر بارگذاری شده باشد:


sudo docker images

این روش برای PostgreSQL نیز قابل استفاده است.

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

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

پس از آماده شدن Docker، یک پوشه اختصاصی ایجاد کنید:


sudo mkdir -p /opt/n8n

وارد پوشه شوید:


cd /opt/n8n

در این مسیر فایل‌های تنظیمات را ایجاد می‌کنیم.

مرحله هشتم: تولید رمز دیتابیس و کلید رمزنگاری

ابتدا یک رمز تصادفی برای PostgreSQL تولید کنید:


openssl rand -hex 24

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


openssl rand -hex 32

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

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

مرحله نهم: ایجاد فایل .env

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


sudo nano /opt/n8n/.env

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


POSTGRES_DB=n8n

POSTGRES_USER=n8n_user

POSTGRES_PASSWORD=YOUR_SECURE_PASSWORD



N8N_ENCRYPTION_KEY=YOUR_SECURE_ENCRYPTION_KEY



GENERIC_TIMEZONE=Asia/Tehran

TZ=Asia/Tehran



N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true

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

سپس مجوز دسترسی فایل را محدود کنید:


sudo chmod 600 /opt/n8n/.env

مرحله دهم: ایجاد فایل Docker Compose

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


sudo 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}



      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 برای نگهداری اطلاعات
  • n8n برای اجرای Workflowها

پورت PostgreSQL به اینترنت منتشر نشده است.

همچنین پورت n8n فقط روی 127.0.0.1 سرور در دسترس خواهد بود.

این ساختار برای اتصال بعدی به Reverse Proxy مناسب است.

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

مرحله یازدهم: اجرای 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 از قبل دریافت شده‌اند و نمی‌خواهید Compose برای دریافت تصویر جدید تلاش کند، می‌توانید از گزینه زیر استفاده کنید:


sudo docker compose up -d --pull never

این گزینه زمانی مفید است که تصاویر موردنیاز قبلاً به‌صورت محلی در 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"'

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

دسترسی موقت به پنل

چون پورت n8n فقط روی localhost باز است، می‌توانید از SSH Tunnel استفاده کنید.

روی کامپیوتر شخصی خود اجرا کنید:


ssh -L 5678:127.0.0.1:5678 root@SERVER_IP

سپس در مرورگر باز کنید:


http://localhost:5678

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

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

برای استفاده دائمی بهتر است یک زیردامنه اختصاصی تنظیم کنید.

برای مثال:


n8n.example.com

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

سپس یک Reverse Proxy مانند Nginx، Caddy یا Traefik راه‌اندازی کنید.

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


User / External Service

          |

          v

      HTTPS :443

          |

          v

     Reverse Proxy

          |

          v

     n8n :5678

          |

          v

      PostgreSQL

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

پس از آماده شدن دامنه و Reverse Proxy، متغیرهای زیر را نیز به تنظیمات n8n اضافه کنید:


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

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

مقدار N8N_PROXY_HOPS=1 برای ساختاری مناسب است که یک Reverse Proxy قابل اعتماد در مسیر قرار دارد.

همچنین Reverse Proxy باید هدرهای لازم مانند X-Forwarded-For و X-Forwarded-Proto را به‌درستی تنظیم کند.

مرحله چهاردهم: بررسی اتصال n8n به APIهای خارجی

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

برای مثال، ممکن است بخواهید از n8n برای اتصال به موارد زیر استفاده کنید:

  • Telegram Bot API
  • Google Sheets API
  • OpenAI API
  • سرویس‌های ایمیل
  • APIهای پرداخت
  • سرویس‌های خارجی فروشگاهی

قبل از ساخت Workflow باید بررسی کنید که سرور شما به Endpoint موردنظر دسترسی دارد یا خیر.

آزمایش اتصال با curl

برای نمونه:


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

یا:


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

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

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

بررسی اتصال از داخل کانتینر

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

برای آزمایش DNS داخل کانتینر:


sudo docker compose exec n8n node -e \

"require('dns').lookup('api.telegram.org',(e,a)=>console.log(e||a))"

برای آزمایش HTTPS از داخل کانتینر:


sudo docker compose exec n8n node -e \

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

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

مرحله پانزدهم: آیا می‌توان برای APIهای خارجی از Proxy استفاده کرد؟

در بعضی زیرساخت‌ها، استفاده از یک Proxy سازمانی یا Gateway خروجی معتبر می‌تواند برای مدیریت ارتباط با سرویس‌های خارجی مفید باشد.

اما باید بین دو موضوع تفاوت قائل شوید:

Proxy برای Docker Daemon: برای دریافت تصاویر Docker استفاده می‌شود.

Proxy برای درخواست‌های n8n: برای ارتباط خروجی Workflowها و سرویس‌های داخل کانتینر کاربرد دارد.

این دو لزوماً تنظیمات یکسانی ندارند.

همچنین همه Nodeهای n8n الزاماً از تنظیمات Proxy به یک شکل پشتیبانی نمی‌کنند.

اگر قرار است از Proxy استفاده کنید، باید موارد زیر را بررسی کنید:

  • پشتیبانی Node یا کتابخانه مربوطه از Proxy
  • نوع Proxy و پروتکل پشتیبانی‌شده
  • تنظیمات احراز هویت
  • محافظت از رمزهای Proxy
  • محدودیت‌های سرویس مقصد
  • جلوگیری از عبور ناخواسته ارتباطات داخلی از Proxy

برای ارتباطات داخلی مانند PostgreSQL نیز باید مسیرهای مستقیم و امن حفظ شوند.

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

Webhook یکی از قابلیت‌های مهم n8n است.

برای مثال، ممکن است بخواهید یک سرویس خارجی پس از وقوع رویدادی، درخواست HTTP به n8n ارسال کند.

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

چرا Webhook ممکن است کار نکند؟

چند علت احتمالی وجود دارد:

  1. دامنه به IP اشتباه اشاره می‌کند.
  2. پورت 443 بسته است.
  3. گواهی SSL معتبر نیست.
  4. Reverse Proxy به n8n متصل نمی‌شود.
  5. متغیر WEBHOOK_URL اشتباه تنظیم شده است.
  6. Workflow فعال نیست.
  7. سرویس خارجی نمی‌تواند به IP سرور ایران متصل شود.

بررسی آدرس Webhook

در n8n یک Workflow جدید ایجاد کنید و Webhook Node را اضافه کنید.

سپس آدرس Test Webhook را مشاهده کنید.

برای مثال:


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

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

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

بررسی ارتباط از خارج سرور

بهتر است Webhook را از یک شبکه خارجی مستقل نیز آزمایش کنید.

برای مثال، یک درخواست HTTPS از سروری خارج از ایران ارسال کنید.

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

مرحله هفدهم: تنظیم DNS برای کانتینرهای Docker

گاهی اوقات DNS روی سرور به‌درستی کار می‌کند، اما کانتینرها نمی‌توانند دامنه‌ها را Resolve کنند.

ابتدا تنظیمات DNS میزبان را بررسی کنید:


resolvectl status

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


sudo docker compose exec n8n node -e \

"require('dns').lookup('example.com',(e,a)=>console.log(e||a))"

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

در صورت نیاز می‌توانید DNS معتبر و قابل دسترس را در فایل زیر تنظیم کنید:


/etc/docker/daemon.json

نمونه ساختار:


{

  "dns": [

    "DNS_SERVER_1",

    "DNS_SERVER_2"

  ]

}

مقادیر نمونه باید با IP واقعی DNSهای قابل اعتماد جایگزین شوند.

قبل از تغییر فایل، از تنظیمات موجود بکاپ تهیه کنید.

همچنین توجه داشته باشید که تغییر DNS سراسری Docker می‌تواند روی سایر کانتینرهای سرور نیز اثر بگذارد.

پس از اعمال تنظیمات، لازم است Docker و در صورت نیاز کانتینرها را مجدداً راه‌اندازی کنید.

مرحله هجدهم: نکات امنیتی n8n روی سرور ایران

امنیت n8n به محل جغرافیایی سرور محدود نمی‌شود.

برای محافظت از اطلاعات و Workflowها باید چند اقدام مهم انجام دهید.

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

پورت PostgreSQL را در اینترنت منتشر نکنید.

همچنین بهتر است n8n پشت Reverse Proxy قرار بگیرد.

استفاده از HTTPS

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

محافظت از فایل .env

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

این فایل را در مخازن عمومی Git قرار ندهید.

محدودسازی دسترسی SSH

از کلید SSH استفاده کنید و ورود مستقیم root را پس از آماده‌سازی یک حساب مدیریتی امن محدود کنید.

کنترل Nodeهای شخص ثالث

Community Nodeهای ناشناس ممکن است خطرات امنیتی ایجاد کنند.

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

مانیتورینگ منابع

مصرف RAM و CPU را بررسی کنید:


sudo docker stats

برای مشاهده فضای دیسک:


df -h

همچنین باید رشد اطلاعات Executionها و دیتابیس را کنترل کنید.

مرحله نوزدهم: بکاپ گرفتن از 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

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

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


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

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

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

فایل‌های زیر را نیز در محل امن نگهداری کنید:


/opt/n8n/.env

/opt/n8n/compose.yaml

همچنین باید از Volume مربوط به n8n نسخه پشتیبان تهیه کنید.

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

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

برای افزایش پایداری سرویس چند اقدام مهم پیشنهاد می‌شود.

استفاده از نسخه ثابت n8n

به‌جای استفاده دائمی از latest، نسخه مشخص و آزمایش‌شده را در Compose ثبت

نظرات (0)

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

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

مقالات مرتبط

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

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

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

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

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

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

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

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

۲۰ دقیقه