میزبانی n8n روی داکر: چگونه n8n را روی داکر اجرا کنیم؟

میزبانی n8n روی داکر

آنچه در مقاله می‌خوانید

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

میزبانی n8n روی داکر

برای میزبانی خودکار n8n با Docker، ابتدا باید Docker و Docker Compose را روی سرور مجازی خود نصب کنید. سپس باید یک فایل Docker Compose ایجاد کنید تا سرویس n8n خود را پیکربندی کنید. در نهایت، باید کانتینر n8n را با استفاده از دستور docker compose up -d اجرا کنید.

پس از آن، می‌توانید تنظیمات n8n خود را با SSL و یک پروکسی معکوس ایمن کنید، متغیرهای محیطی را به دلخواه تغییر دهید و هر زمان که نسخه‌های جدید منتشر می‌شوند، n8n را به‌روزرسانی کنید.

بخش‌های زیر هر مرحله را به طور دقیق‌تری توضیح می‌دهند.

نصب Docker و Docker Compose

ابتدا مطمئن شوید که Docker روی سرور شما نصب شده است.

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

docker -v

این دستور نسخه نصب شده Docker را به شما نمایش خواهد داد، به این صورت:

خروجی ترمینال نمایش‌دهنده نسخه نصب شده Docker

آماده‌سازی دایرکتوری داده‌های n8n

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

mkdir ~/n8n && cd ~/n8n

درون دایرکتوری تازه ایجاد شده، یک زیر دایرکتوری به نام n8n_data برای ذخیره‌سازی داده‌های پایدار n8n ایجاد کنید:

mkdir n8n_data

سپس مالکیت صحیح را برای داده‌های پایدار تنظیم کنید، که هنگام اجرای n8n با Docker اهمیت زیادی دارد:

sudo chown -R 1000:1000 n8n_data

خروجی ترمینال بعد از اجرای دستورات mkdir و chown

ایجاد یک فایل Docker Compose برای n8n

پس از آماده‌سازی دایرکتوری‌ها برای n8n، یک فایل جدید Docker Compose ایجاد کنید تا تنظیمات n8n، متغیرهای محیطی و حجم‌های مورد نیاز را پیکربندی کنید.

می‌توانید این کار را با استفاده از ویرایشگر متن nano انجام دهید:

sudo nano docker-compose.yml

سپس محتوای زیر را در فایل paste کرده و مقادیر yourUser و yourPassword را با اطلاعات دلخواه خود جایگزین کنید:

services:
n8n:
image: n8nio/n8n
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=yourUser
- N8N_BASIC_AUTH_PASSWORD=yourPassword
volumes:
- ./n8n_data:/home/node/.n8n

ایمن‌سازی n8n با SSL و پراکسی معکوس NGINX

بعد از انجام تغییرات، برای ذخیره و خروج از nano، کلیدهای زیر را فشار دهید:

Ctrl + X → Y → Enter

راه‌اندازی کانتینر n8n

حالا برای راه‌اندازی کانتینر n8n، دستور زیر را اجرا کنید:

docker compose up -d

فرایند شروع کانتینر را خواهید دید. پس از اتمام، خط‌هایی مانند “Created” و “Started” نمایش داده می‌شود، مشابه تصویر زیر:

خروجی ترمینال نشان‌دهنده فرایند موفقیت‌آمیز ایجاد کانتینر Docker

برای بررسی این‌که آیا کانتینر n8n شما شروع شده است یا نه، آدرس زیر را در مرورگر خود باز کنید، با این تفاوت که your_vps_ip را با آدرس IP واقعی VPS خود جایگزین کنید:

http://your_vps_ip:5678

اگر هنگام بازدید از آدرس با هشدار خطای secure cookie مواجه شدید، نگران نباشید. نمونه n8n شما در واقع در حال اجرا است. این خطا به دلیل عدم تنظیم SSL برای ارتباطات امن رخ می‌دهد، اما شما این مشکل را در مرحله بعدی حل خواهید کرد.

هشدار خطای secure cookie

ایمن‌سازی n8n با SSL و پراکسی معکوس NGINX

برای دسترسی ایمن به نمونه n8n خود از طریق HTTPS، باید یک گواهی SSL صادر کرده و پراکسی معکوس را پیکربندی کنید.

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

sudo apt install nginx -y

سپس فوراً سرویس NGINX را موقتا متوقف کنید:

sudo systemctl stop nginx

در مرحله بعد، Certbot را برای دریافت گواهی SSL نصب کنید:

sudo apt install certbot -y

برای دریافت گواهی SSL به صورت ایستاده از Certbot، دستور زیر را اجرا کنید. جایگزین yourdomain.tld با نام دامنه واقعی خود کنید اگر آن را به VPS خود هدایت کرده‌اید. در غیر این صورت، گواهی SSL را برای نام میزبان خود صادر کنید:

sudo certbot certonly --standalone -d yourdomain.tld

از شما خواسته خواهد شد تا یک آدرس ایمیل معتبر وارد کنید، شرایط خدمات را بپذیرید و به‌طور اختیاری ثبت‌نام کنید تا ایمیل‌های تبلیغاتی دریافت کنید.

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

sudo systemctl start nginx

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

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

درون فایل، جزئیات پیکربندی زیر را paste کنید. جایگزین yourdomain.tld با دامنه یا نام میزبان خود کنید.

server {
listen 443 ssl;
server_name yourdomain.tld;
ssl_certificate /etc/letsencrypt/live/yourdomain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.tld/privkey.pem;
location / {
proxy_pass http://localhost:5678;
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;
}
}
server {
listen 80;
server_name yourdomain.tld;
return 301 https://$host$request_uri;
}

ایمن‌سازی n8n با SSL و پراکسی معکوس NGINX

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

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

پیکربندی NGINX را برای خطاها بررسی کنید:

sudo nginx -t

برای اعمال تغییرات، سرویس NGINX را مجددا بارگذاری کنید:

sudo systemctl reload nginx

دسترسی به n8n 

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

صفحه ثبت‌نام حساب مالک n8n

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

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

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

تغییر متغیرهای محیطی n8n

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

برای این کار، به ترمینال خود بازگشته و فایل Docker Compose خود را ویرایش کنید:

sudo nano docker-compose.yml

در بخش environment، تنظیمات پیکربندی مربوط به کانتینر n8n خود را اضافه یا تغییر دهید. در اینجا برخی از متغیرهای محیطی پرکاربرد آورده شده است:

N8N_ENCRYPTION_KEY؛ برای رمزگذاری اعتبارنامه‌ها در پایگاه داده به منظور افزایش امنیت.

N8N_ENCRYPTION_KEY=yourStrongRandomString

N8N_HOST, N8N_PORT, N8N_PROTOCOL؛ اطمینان حاصل می‌کند که n8n URLهای صحیحی تولید کند، به ویژه زمانی که پشت پراکسی معکوس یا هنگام استفاده از SSL باشید.

N8N_HOST=yourdomain.tld
N8N_PORT=5678
N8N_PROTOCOL=https

WEBHOOK_URL؛ برای تنظیم URL عمومی وب‌هوک‌ها، که زمانی که از HTTPS یا دامنه سفارشی استفاده می‌کنید، اهمیت دارد.

WEBHOOK_URL=https://yourdomain.tld

DB_TYPE, DB_POSTGRESDB؛ به شما این امکان را می‌دهد که از PostgreSQL به جای SQLite پیش‌فرض برای بهبود عملکرد و مقیاس‌پذیری استفاده کنید.

DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=your_postgres_host
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=your_database_name
DB_POSTGRESDB_USER=your_db_user
DB_POSTGRESDB_PASSWORD=your_db_password

TZ؛ برای تنظیم منطقه زمانی n8n.

TZ=UTC

پس از اعمال تغییرات لازم، فایل را ذخیره کنید.

در مرحله بعد، دستور زیر را برای توقف کانتینر n8n اجرا کنید:

docker compose down

سپس کانتینر را با متغیرهای محیطی به‌روز شده دوباره بالا بیاورید:

docker compose up -d

تغییر متغیرهای محیطی n8n

به‌روزرسانی n8n به آخرین نسخه

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

برای به‌روزرسانی، ابتدا آخرین تصویر n8n را از Docker Hub بکشید:

docker pull n8nio/n8n

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

docker compose up -d

به‌روزرسانی n8n به آخرین نسخه

بهترین روش‌ها برای مدیریت n8n با Docker

در اینجا برخی از بهترین روش‌ها برای مدیریت n8n با Docker آورده شده است که برخی از آن‌ها در این آموزش نیز به‌طور عملی نشان داده شده‌اند:

  • مونتاژ کردن حجم‌های Docker: یک دایرکتوری میزبان مانند ./n8n_data:/home/node/.n8n را مونتاژ کنید تا جریان‌های کاری، اعتبارنامه‌ها و داده‌های اجرایی در خارج از کانتینر ذخیره شوند. این کار باعث می‌شود داده‌های شما حتی پس از به‌روزرسانی‌ها، راه‌اندازی مجدد یا بازسازی کانتینر حفظ شود.
  • پیکربندی متغیرهای محیطی: در فایل docker-compose.yml، کلیدهای API، رازهای وب‌هوک، اعتبارنامه‌های پایگاه داده و سایر داده‌های حساس را به‌عنوان متغیرهای محیطی تنظیم کنید. این کار باعث می‌شود که اسرار از جریان‌های کاری و کد منبع خارج شوند و امنیت افزایش یابد و همچنین مدیریت چرخش کلیدها ساده‌تر شود.
  • ایمن‌سازی دسترسی‌ها: همیشه احراز هویت پایه (N8N_BASIC_AUTH_ACTIVE=true) را فعال کنید و از نام‌کاربری و رمز عبورهای قوی استفاده کنید. برای ارتباطات امن، n8n را پشت یک پراکسی معکوس مانند NGINX با SSL قرار دهید تا همه داده‌ها، از جمله اعتبارنامه‌ها، رمزگذاری شوند و به صورت متن ساده ارسال نشوند.
  • انجام پشتیبان‌گیری‌های منظم: به‌طور دوره‌ای از دایرکتوری میزبان که به /home/node/.n8n متصل شده است، پشتیبان تهیه کنید، نه از مسیر داخلی کانتینر. برای یک کانتینر در حال اجرا، می‌توانید از دستور زیر برای پشتیبان‌گیری استفاده کنید:
docker cp n8n:/home/node/.n8n /path/to/backup/folder
  • تنظیم محدودیت‌های منابع: در فایل docker-compose.yml، محدودیت‌های CPU و حافظه را تنظیم کنید تا از مصرف بیش از حد منابع VPS شما توسط n8n جلوگیری کنید. به عنوان مثال:
deploy:
resources:
limits:
cpus: '1'
memory: 1G
  • نظارت بر لاگ‌ها و عملکرد: برای بررسی لاگ‌ها و عیب‌یابی مشکلات، از دستور زیر استفاده کنید:
docker compose logs n8n

برای نظارت مستمر، می‌توانید سیستم‌هایی مانند LGTM stack را برای دریافت هشدارها در صورتی که n8n قطع شده یا رفتار نادرستی دارد، ادغام کنید.

با رعایت این روش‌ها، می‌توانید مدیریت n8n را به‌طور مؤثرتر و امن‌تری انجام دهید.

جمع بندی

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

5/5 - (1 امتیاز)
دیدن نظرات
small

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دو × 5 =

عضویت در خبرنامه مبین هاست
مطالب کدام دسته‌بندی‌ها برای شما جذاب‌تر است؟

آنچه در مقاله می‌خوانید

مقالات مرتبط
آموزش تجهیزات سرور و دیتاسنتر

دیتاسنتر فن آوا؛ آشنایی با ویژگی‌ها، استانداردها و خدمات مرکز داده فن‌آوا

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

خدمات مبین هاست