اجرای 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 را به شما نمایش خواهد داد، به این صورت:
آمادهسازی دایرکتوری دادههای n8n
در گام بعدی، باید دایرکتوریهایی برای ذخیرهسازی دادهها و فایلهای پیکربندی n8n ایجاد کنید. برای این کار دستور زیر را اجرا کنید تا دایرکتوری اصلی برای n8n ایجاد شود و به آن وارد شوید:
mkdir ~/n8n && cd ~/n8n
درون دایرکتوری تازه ایجاد شده، یک زیر دایرکتوری به نام n8n_data برای ذخیرهسازی دادههای پایدار n8n ایجاد کنید:
mkdir n8n_data
سپس مالکیت صحیح را برای دادههای پایدار تنظیم کنید، که هنگام اجرای n8n با Docker اهمیت زیادی دارد:
sudo chown -R 1000:1000 n8n_data
ایجاد یک فایل 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
بعد از انجام تغییرات، برای ذخیره و خروج از nano، کلیدهای زیر را فشار دهید:
Ctrl + X → Y → Enter
راهاندازی کانتینر n8n
حالا برای راهاندازی کانتینر n8n، دستور زیر را اجرا کنید:
docker compose up -d
فرایند شروع کانتینر را خواهید دید. پس از اتمام، خطهایی مانند “Created” و “Started” نمایش داده میشود، مشابه تصویر زیر:
برای بررسی اینکه آیا کانتینر n8n شما شروع شده است یا نه، آدرس زیر را در مرورگر خود باز کنید، با این تفاوت که your_vps_ip را با آدرس IP واقعی VPS خود جایگزین کنید:
http://your_vps_ip:5678
اگر هنگام بازدید از آدرس با هشدار خطای secure cookie مواجه شدید، نگران نباشید. نمونه n8n شما در واقع در حال اجرا است. این خطا به دلیل عدم تنظیم SSL برای ارتباطات امن رخ میدهد، اما شما این مشکل را در مرحله بعدی حل خواهید کرد.
ایمنسازی 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;
}
بعد از ذخیره کردن فایل و خروج از ویرایشگر، دستور زیر را برای فعالسازی پیکربندی اجرا کنید:
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 خود، ممکن است نیاز به تغییر متغیرهای محیطی برای تنظیم ارتباطات پایگاه داده، فعال کردن احراز هویت، یکپارچهسازی خدمات شخص ثالث یا افزایش امنیت داشته باشید.
برای این کار، به ترمینال خود بازگشته و فایل 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 را از Docker Hub بکشید:
docker pull n8nio/n8n
سپس، کانتینر n8n را با استفاده از تصویر بهروزرسانی شده راهاندازی مجدد کنید:
docker compose up -d
بهترین روشها برای مدیریت 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 را به سرور دیگری منتقل کنید.











