در این مقاله
اگر به دنبال راهاندازی اتوماسیون گردش کار و مدیریت فرآیندها به صورت خودکار هستید، n8n یکی از بهترین ابزارهای متنباز در این زمینه است. با n8n میتوانید سرویسهای مختلف را بدون نوشتن کد به هم وصل کنید؛ از ارسال خودکار پیامک و ایمیل گرفته تا همگامسازی پایگاه داده، فراخوانی وبسرویسها و ساخت وبهوک.
مزیت نصب n8n روی سرور خودتان این است که دادهها و اعتبارنامههای سرویسهایتان (توکنها، رمزها، کلیدهای API) روی زیرساخت خودتان میمانند و محدودیت تعداد اجرا هم ندارید. در این مقاله n8n را روی Debian 13 با داکر نصب میکنیم، پشت پراکسی معکوس Nginx قرار میدهیم و با گواهی رایگان Let's Encrypt امن میکنیم.
پیشنیازها
- یک سرور ابری با Debian 13 و دسترسی root.
- یک سابدامین (مثلاً
n8n.domain.com) که با یک رکوردAبه آیپی سرور اشاره کند. پیش از رفتن سراغ گواهی SSL، این رکورد باید منتشر شده باشد؛ در غیر این صورت صدور گواهی شکست میخورد. - برای شروع، یک سرور با ۱ هسته پردازنده و ۲ گیگابایت حافظه کافی است. اگر گردش کارهای سنگین یا اجرای همزمان زیاد دارید، حافظه را بالاتر ببرید.
تمام دستورهای این راهنما با کاربر root اجرا میشوند. اگر با کاربر عادی کار میکنید،
پیش از هر دستور sudo بگذارید.
گام ۱: بهروزرسانی سیستم و نصب بستههای پایه
ابتدا سیستم را به آخرین بستهها بهروز میکنیم:
apt update && apt upgrade -y
سپس بستههای پیشنیاز را نصب میکنیم:
apt install -y ca-certificates curl gnupg nano
گام ۲: نصب داکر
کلید GPG مخزن رسمی داکر را اضافه میکنیم:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | \
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
سپس مخزن داکر را به فهرست مخازن سیستم اضافه میکنیم:
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
حالا داکر را نصب و سرویس آن را فعال میکنیم:
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
برای اطمینان از نصب درست:
docker --version
گام ۳: اجرای n8n
پیش از اجرای کانتینر، یک والیوم داکر میسازیم. این والیوم محل نگهداری پایگاه داده، گردش کارها و اعتبارنامههای n8n است و باعث میشود با حذف یا بهروزرسانی کانتینر، دادههای شما از بین نروند:
docker volume create n8n_data
حالا کانتینر n8n را اجرا میکنیم. به جای n8n.domain.com سابدامین خودتان را
بگذارید:
docker run -d --name n8n --restart unless-stopped \
-p 127.0.0.1:5678:5678 \
-v n8n_data:/home/node/.n8n \
-e N8N_HOST=n8n.domain.com \
-e N8N_PROTOCOL=https \
-e WEBHOOK_URL=https://n8n.domain.com/ \
-e GENERIC_TIMEZONE=Asia/Tehran \
docker.n8n.io/n8nio/n8n
چند نکته درباره این دستور:
-p 127.0.0.1:5678:5678پورت را فقط روی خودِ سرور باز میکند، نه روی اینترنت. تنها راه رسیدن به n8n، عبور از Nginx و در نتیجه از HTTPS خواهد بود. اگر پورت را به صورت-p 5678:5678باز کنید، پنل شما بدون رمزنگاری و مستقیم از روی اینترنت در دسترس قرار میگیرد.--restart unless-stoppedباعث میشود بعد از ریبوت سرور، n8n خودکار بالا بیاید.WEBHOOK_URLرا حتماً تنظیم کنید. n8n آدرس وبهوکهایی را که به سرویسهای بیرونی میدهد از روی همین متغیر میسازد؛ بدون آن، آدرسهای تولیدشده بهlocalhost:5678اشاره میکنند و از بیرون کار نمیکنند.
گام ۴: پیکربندی Nginx بهعنوان پراکسی معکوس
Nginx را نصب و فعال میکنیم:
apt install -y nginx
systemctl enable --now nginx
فایل پیکربندی سایت را میسازیم:
nano /etc/nginx/sites-available/n8n.domain.com
و محتوای زیر را در آن قرار میدهیم:
server {
listen 80;
server_name n8n.domain.com;
location / {
proxy_pass http://127.0.0.1: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;
# n8n برای اجرای زنده و لاگها از WebSocket استفاده میکند
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# گردش کارهای طولانی نباید با تایماوت قطع شوند
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
دقت کنید که proxy_pass با http نوشته شده است، نه https؛ ارتباط بین Nginx و
کانتینر روی خود سرور و بدون رمزنگاری است و رمزنگاری در لبه (بین کاربر و Nginx)
انجام میشود.
دو تنظیم Upgrade/Connection هم لازماند: بدون آنها رابط کاربری بالا میآید ولی
نتیجه اجرای گردش کارها به صورت زنده نمایش داده نمیشود.
حالا سایت را فعال و پیکربندی را بررسی میکنیم:
ln -s /etc/nginx/sites-available/n8n.domain.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
گام ۵: تنظیم فایروال
فایروال UFW را نصب و قواعد آن را تعریف میکنیم:
apt install -y ufw
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
Nginx Full هر دو پورت ۸۰ و ۴۴۳ را باز میکند. پورت ۵۶۷۸ را باز نمیکنیم، چون در
گام سوم کانتینر را فقط روی 127.0.0.1 منتشر کردیم و دسترسی به آن باید حتماً از
مسیر Nginx باشد.
پیش از اجرای
ufw enableمطمئن شوید قاعدهOpenSSHرا اضافه کردهاید، وگرنه ارتباط SSH فعلی شما قطع میشود. اگر این اتفاق افتاد، از کنسول تحت وب کنترل پنل ابر سپهر وارد سرور شوید و قاعده را اضافه کنید.
گام ۶: فعالسازی SSL با Let's Encrypt
Certbot را نصب و گواهی را صادر میکنیم:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d n8n.domain.com
Certbot ایمیل و پذیرش شرایط را میپرسد، گواهی را صادر میکند و خودش فایل Nginx را برای HTTPS و ریدایرکت پورت ۸۰ به ۴۴۳ ویرایش میکند. تمدید خودکار هم با یک تایمر systemd انجام میشود؛ برای آزمودن آن:
certbot renew --dry-run
حالا باید بتوانید از طریق مرورگر با آدرس https://n8n.domain.com به n8n دسترسی
داشته باشید. در نخستین ورود، n8n از شما میخواهد حساب مدیر (ایمیل و رمز عبور)
بسازید. این کار را بلافاصله انجام دهید؛ تا وقتی این حساب ساخته نشده، هر کسی که
آدرس را بداند میتواند مالک نمونهی شما شود.
نگهداری: بهروزرسانی و بکآپ
بهروزرسانی n8n یعنی گرفتن ایمیج جدید و ساختن دوبارهی کانتینر. چون دادهها در
والیوم n8n_data هستند، چیزی از دست نمیرود:
docker pull docker.n8n.io/n8nio/n8n
docker stop n8n && docker rm n8n
# سپس همان دستور docker run گام سوم را دوباره اجرا کنید
بکآپ هم به معنی نگهداشتن یک نسخه از همین والیوم است:
docker run --rm -v n8n_data:/data -v /root:/backup busybox \
tar czf /backup/n8n-backup.tar.gz -C /data .
سادهترین راه اما این است که پیش از هر بهروزرسانی، از کنترل پنل ابر سپهر یک اسنپشات از کل سرور بگیرید. اگر نسخهی جدید مشکلی داشت، در چند دقیقه به وضعیت قبل برمیگردید.
| کار | دستور / ابزار | چه زمانی |
|---|---|---|
| مشاهده لاگ | docker logs -f n8n |
هنگام عیبیابی |
| راهاندازی مجدد | docker restart n8n |
پس از تغییر تنظیمات |
| بهروزرسانی | docker pull و اجرای دوباره کانتینر |
ماهانه |
| بکآپ کامل | اسنپشات کنترل پنل | پیش از هر تغییر پرخطر |
جمعبندی
n8n روی یک سرور ابری کوچک هم بهخوبی کار میکند و با ترکیب داکر، پراکسی معکوس Nginx
و گواهی رایگان Let's Encrypt، در کمتر از نیمساعت یک نمونهی امن و پایدار خواهید
داشت. سه نکتهای که بیشترین تفاوت را میسازند: انتشار کانتینر فقط روی 127.0.0.1،
تنظیم WEBHOOK_URL و گرفتن اسنپشات پیش از بهروزرسانی.
اگر هنوز سروری برای این کار ندارید، میتوانید از صفحه خرید سرور ابری با کمترین منابع شروع کنید و هر زمان که گردش کارهایتان سنگینتر شد، منابع را ارتقا دهید.
مقالات مرتبط
نصب Immich روی سرور ابری؛ گالری شخصی جایگزین گوگل فوتوز
نصب Immich روی سرور ابری با داکر؛ گالری خودمیزبان عکس و ویدیو با آپلود خودکار از موبایل، پراکسی معکوس Nginx، گواهی SSL رایگان و بکآپ اصولی.
ادامه مطلبنصب Nginx Proxy Manager؛ چند دامنه روی یک سرور با SSL
نصب Nginx Proxy Manager با داکر برای مدیریت چند دامنه روی یک سرور ابری؛ صدور خودکار گواهی SSL رایگان، پشتیبانی WebSocket و دسترسی امن به پنل مدیریت.
ادامه مطلبآموزش نصب Coolify روی سرور ابری
نصب Coolify روی سرور ابری برای دیپلوی خودکار برنامهها، دیتابیس و داکر با یک داشبورد؛ اتصال دامنه، گواهی SSL خودکار، فایروال و بکآپ.
ادامه مطلب