نصب n8n روی داکر: راهنمای کامل و گامبهگام
نصب n8n روی داکر: راهنمای کامل و گامبهگام
در این راهنما بهصورت عملیاتی و دقیق فرایند نصب n8n روی داکر توضیح داده میشود. پیشنیازها، ساختار دایرکتوری، نمونهٔ فایل docker-compose، تنظیمات محیطی، نکات امنیتی، مانیتورینگ، پشتیبانگیری و حل مشکلات رایج پوشش داده شدهاند تا بتوانید سرویس را هم در محیط توسعه و هم در محیط تولید بهصورت پایدار و امن اجرا کنید.
مقدمه — چرا نصب n8n روی داکر مفید است
نصب n8n روی داکر مزایایی مانند ایزولاسیون، قابل تکرار بودن استقرار، سهولت اجرای بهروزرسانی و مدیریت وابستگیها را فراهم میکند. با استفاده از کانتینر میتوانید سرویس را در هر سروری که runtime کانتینر را پشتیبانی میکند مستقر کنید و از مزایای مدیریت چرخهٔ عمر کانتینر بهرهمند شوید. قبل از شروع، دسترسی به ترمینال و آشنایی پایه با مفاهیم کانتینرسازی لازم است.
پیشنیازها
- سیستم میزبان با پشتیبانی از کانتینرها و ابزار docker compose یا معادل آن.
- دسترسی ترمینال با توانایی اجرای دستورات مدیریتی.
- نصب یا دسترسی به یک پایگاهداده سری (برای محیط تولید توصیه میشود).
- فضای دیسک و منابع کافی (CPU و RAM) برای اجرای سرویس و پایگاهداده.
- یک نام دامنه یا آدرس قابل دسترسی برای webhookها در صورت نیاز به ارتباطات ورودی.
آمادهسازی ساختار فایل و دایرکتوری
ایجاد یک ساختار منظم در سرور به نگهداری و بکاپگیری کمک میکند. نمونه ساختار پیشنهادی:
- /srv/n8n/data — نگهداری دادهها و volumes
- /srv/n8n/db-data — دادههای پایگاهداده (اگر سرویس DB محلی دارید)
- /srv/n8n/config — فایلهای پیکربندی و محیطی
برای دسترسی مناسب، مطمئن شوید owner و مجوزهای فایلها به صورتی تنظیم شده که کانتینر توانایی خواندن/نوشتن را داشته باشد.
متغیرهای محیطی پیشنهادی
قبل از اجرا متغیرهای مهم را تعریف کنید تا پیکربندی قابل مدیریت و امن باشد:
- NODE_ENV=production
- DB_TYPE=postgres یا sqlite (براساس نیاز)
- DB_HOST، DB_PORT، DB_USER، DB_PASSWORD برای پایگاهداده سری
- WEBHOOK_URL — آدرس قابل دسترس برای callbackها
- GENERIC_SECRET یا ENCRYPTION_KEY برای رمزنگاری مقادیر حساس
مقادیر محرمانه را در فایلهای env ذخیره نکنید مگر اینکه فایل محافظتشده باشد؛ در محیط تولید از ابزار مدیریت اسرار یا متغیرهای سیستمی امن استفاده کنید.
نمونه عملی: فایل docker-compose برای نصب n8n روی داکر
در ادامه یک نمونهٔ عملی docker-compose ارائه میشود که سرویس و یک پایگاهداده نمونه را بهصورت همزمان اجرا میکند. پیش از اجرا مقادیر حساس را جایگزین و در محیط تولید از مدیریت اسرار استفاده کنید.
# فایل docker-compose.yml (نمونه)
version: '3.8'
services:
db:
image: postgres:13-alpine
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: replace_with_secure_password
POSTGRES_DB: n8ndb
volumes:
- ./db-data:/var/lib/postgresql/data
n8n:
image: n8n:latest
ports:
- "5678:5678"
environment:
- NODE_ENV=production
- DB_TYPE=postgres
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8ndb
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=replace_with_secure_password
- WEBHOOK_URL=https://your-domain.example/webhook
- GENERIC_SECRET=replace_with_long_random_string
volumes:
- ./data:/home/node/.n8n
depends_on:
- db
دستورات پایه برای اجرا و مدیریت
- اجرای سرویسها در پسزمینه:
docker compose up -d - بررسی وضعیت:
docker compose ps - مشاهده لاگها:
docker compose logs -f n8n - اجرای فرمان داخل کانتینر:
docker compose exec n8n bash
لینک مرجع برای فایل compose و گزینهها: مستندات رسمی docker compose.
تنظیمات امنیتی و زیرساختی
برای اجرای امن n8n روی داکر نکات زیر را پیاده کنید:
- قرار دادن سرویس پشت یک پروکسی معکوس با TLS (مثلاً از طریق reverse proxy) تا ترافیک رمزگذاری شود.
- استفاده از حساب کاربری با مجوز حداقلی برای ارتباط با پایگاهداده؛ از کاربر superuser در تولید خودداری کنید.
- ذخیره رمزها و توکنها در ابزار مدیریت اسرار یا متغیرهای محیطی امن؛ هرگز آنها را در فایلهای عمومی نگهداری نکنید.
- محدودسازی دسترسی شبکه به پایگاهداده فقط به منابع مورد نیاز (subnet یا شبکهٔ کانتینری داخلی).
- بهروزرسانی منظم ایمیجها و بررسی CVEها و پچهای امنیتی.
بهینهسازی عملکرد و مقیاسپذیری
برای افزایش پایداری و کارایی در محیط تولید:
- از محدودیتهای منابع کانتینر (cpu, memory) استفاده کنید تا از رقابت منابع جلوگیری شود.
- در صورت نیاز به مقرونبهصرفگی، تعداد replicateها را افزایش دهید و جلوی آنها یک load balancer قرار دهید.
- استفاده از healthcheck در فایل compose تا مدیریت فرآیند و بازراهاندازی خودکار کانتینرهای ناسالم ممکن شود.
- کَشسازی در لایهٔ پروکسی برای کاهش بار پایگاهداده و افزایش پاسخدهی.
پشتیبانگیری، ارتقا و مهاجرت دادهها
روشهای پیشنهادی برای حفظ دادهها:
- بکاپگیری منظم از volumes و پایگاهداده. برای پایگاهداده سری از ابزارهای export/pg_dump یا معادل آن استفاده کنید.
- قبل از بهروزرسانی سرویس در محیط تولید، مراحل را در محیط staging تست کنید و سناریوی بازگشت (rollback) را آماده داشته باشید.
- برای مهاجرت از دیتابیس فایلمحور به پایگاهداده سری، ابتدا export دادهها را انجام دهید و سپس import را در مقصد اعمال کنید و سازگاری ساختارها را بررسی نمایید.
رفع خطاهای رایج هنگام نصب n8n روی داکر
چند مشکل متداول و راهحل آنها:
- عدم اتصال به پایگاهداده: پارامترهای DB_HOST، DB_PORT و credentials را بررسی کنید و مطمئن شوید سرویس DB بالا آمده است.
- پروکسی یا TLS باعث بروز خطا در webhook میشود: آدرس WEBHOOK_URL را با آدرس واقعی پروکسی و مسیر صحیح تنظیم کنید و headerهای لازم را پاس کنید.
- مشکل مجوزهای فایل در volumes: owner و permission دایرکتوریهای میزبان را تنظیم کنید (chown/chmod مناسب).
- پورت تداخل دارد: پورت میزبان اعلانشده ممکن است در حال استفاده باشد؛ پورت را تغییر دهید یا سرویس متضاد را متوقف کنید.
مثالهای پیکربندی برای محیطهای مختلف
محیط توسعه — ساده و سریع
در محیط توسعه میتوانید از دیتابیس فایلمحور یا یک پایگاهداده محلی استفاده کنید و دادهها را روی فولدر کاربری mount کنید تا تغییرات سریع قابل مشاهده باشند. این تنظیم برای توسعه مناسب است ولی در تولید توصیه نمیشود.
محیط تولید — پایدار و امن
در تولید از پایگاهداده سری اختصاصی، volumes روی storage پایدار، مدیریت اسرار، پروکسی معکوس با TLS و مانیتورینگ دائم استفاده کنید. همچنین سیاستهایی برای آپدیت ایمن و تست قبل از انتشار داشته باشید.
پرسشهای متداول (FAQ)
آیا میتوان بدون پایگاهداده n8n را اجرا کرد؟
در محیط توسعه بله، با گزینههای فایلمحور ممکن است. اما در محیط تولید استفاده از پایگاهداده سری برای پایداری، عملکرد و قابلیت بازیابی توصیه میشود.
چگونه مطمئن شوم webhookها کار میکنند؟
آدرس WEBHOOK_URL را به آدرسی که از بیرون قابل دسترسی و دارای TLS است تنظیم کنید و از ابزارهای تست HTTP برای ارسال درخواست استفاده کنید. لاگهای سرویس و لاگهای پروکسی را بررسی کنید تا مسیر درخواستها مشخص شود.
بهترین روش برای بهروزرسانی بدون از دست رفتن دادهها چیست؟
قبل از آپدیت کامل، بکاپ پایگاهداده و volumes تهیه کنید، سپس نسخه جدید را در محیط staging تست و پس از اطمینان در تولید اعمال کنید. از mount خارجسازی صحیح volumes و اتصال مجدد آنها اطمینان حاصل کنید.
جمعبندی
نصب n8n روی داکر یک روش مؤثر برای استقرار سرویس اتوماسیون فراهم میکند که با رعایت اصول آمادهسازی دایرکتوریها، تنظیم درست متغیرهای محیطی، استفاده از volumes، قرار دادن سرویس پشت پروکسی امن، و برنامهٔ منظم پشتیبانگیری و مانیتورینگ میتوان استقرار پایدار و امنی داشت. قبل از راهاندازی در تولید همه مراحل را در محیط تست بررسی کنید و سیاستهای دسترسی، بهروزرسانی و بازیابی را مستند نمایید.