قراره چی یاد بگیریم؟ از صفرِ صفر، بدون هیچ پیشنیازی: Docker Desktop را با دستورات پاورشل (ویندوز) و ترمینال (مک) نصب میکنیم، n8n را با دستور رسمی و بهروز راه میاندازیم، پوشههای پشتیبان میسازیم و برای هر خطای احتمالی، راهحل دقیق داریم.
داکر مثل «نیروگاه» است و n8n مثل «دستگاهی» که به آن وصل میشود. دادهها هم در انباری جدا (Volume) نگهداری میشوند تا با خاموششدن دستگاه از بین نروند.
winverپنجرهٔ کوچکی باز میشود. باید ویندوز ۱۱، یا ویندوز ۱۰ نسخهٔ 22H2 به بعد باشد.
systeminfo | Select-String "Virtualization"اگر جلوی
Virtualization Enabled In Firmware نوشته بود Yes، عالی است. اگر No بود، به بخش رفع اشکال (خطای شمارهٔ ۲) بروید — باید از تنظیمات BIOS فعالش کنید.winget --versionاگر شمارهای مثل
v1.28.x دید، آمادهاید. اگر خطای «not recognized» گرفتید → رفع اشکال، خطای ۵.Cmd + Space را بزنید، بنویسید Terminal و Enter بزنید.sw_vers -productVersion uname -mخروجی اول باید
14 به بالا باشد (مثلاً 15.5). خروجی دوم اگر arm64 بود یعنی چیپ اپل (M1 تا M4) دارید و اگر x86_64 بود یعنی اینتل — هر دو پشتیبانی میشوند و ادامهٔ مسیر یکی است.Yes باشد (ویندوز) و winget --version یا sw_vers جواب داده باشند. اگر نه → بخش رفع اشکال.داکر در ویندوز، کانتینرها را داخل یک لینوکسِ کوچک به نام WSL2۵ اجرا میکند. پس اول باید آن را فعال کنیم. کاربران مک این مرحله را رد کنند و به مرحلهٔ ۴ بروند.
wsl --install --no-distributionسوییچ
--no-distribution یعنی «فقط موتور WSL را نصب کن، لینوکس جدا نمیخواهم» — چون داکر خودش لینوکس خودش را میآورد و اینطوری حجم کمتری دانلود میشود.wsl --update wsl --statusدر خروجی
wsl --status باید عبارتی شبیه Default Version: 2 ببینید. اگر عدد ۱ بود:
wsl --set-default-version 2
wsl --install به شما میگوید «already installed» — هیچ اشکالی ندارد؛ فقط wsl --update را بزنید و ادامه دهید.wsl --status نسخهٔ پیشفرض ۲ را نشان میدهد و هیچ پیغام خطایی ندارید. اگر خطای 0x80370102 یا مشابه دیدید → رفع اشکال، خطای ۲.winget install -e --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreementsحجم دانلود بالاست (بیش از ۵۰۰ مگابایت) — بسته به سرعت اینترنت، صبور باشید. دو سوییچ آخر یعنی «توافقنامهها را قبول دارم؛ وسط کار سؤال نپرس».
Successfully installed دیدید، یکبار دیگر کامپیوتر را ریاستارت کنید تا گروه کاربری docker-users روی حساب شما اعمال شود.winget source update و دوباره امتحان کنید. اگر دانلود وسط راه قطع شد، همان دستور نصب را دوباره اجرا کنید؛ winget ادامه میدهد یا از نو میگیرد.winget list Docker.DockerDesktop و winget upgrade Docker.DockerDesktop. در زمان نگارش این آموزش، نسخهٔ جاری Docker Desktop حدود 4.83 است؛ اگر عدد شما بالاتر بود کاملاً طبیعی است.حالا به مرحلهٔ ۵ بروید.
brew --versionاگر شماره نسخه دید، به قدم ۳ بپرید. اگر خطای
command not found گرفتید، قدم ۲ را انجام دهید./bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"در پایان، اگر ترمینال دو خط شبیه
eval "$(/opt/homebrew/bin/brew shellenv)" به شما داد، همانها را هم اجرا کنید تا دستور brew شناخته شود. سپس ترمینال را ببندید و دوباره باز کنید.brew install --cask docker-desktop
docker-desktop است (قبلاً فقط docker بود و هنوز در خیلی از آموزشهای قدیمی همان را میبینید). اگر brew install docker بزنید فقط ابزار خط فرمان نصب میشود، نه خودِ برنامه — و بعداً خطای «Cannot connect to the Docker daemon» میگیرید. اگر اشتباهاً نصبش کردید: brew uninstall --formula docker و بعد دستور درست را بزنید.open -a Docker (یا از Launchpad بازش کنید).docker --version docker run hello-world
Hello from Docker!. یعنی داکر سالم است: تصویر۷ را دانلود کرد، کانتینر ساخت و اجرا کرد. اگر بهجای آن خطا دیدید:
error during connect یا cannot connect to the Docker daemon → داکر دسکتاپ باز نیست یا هنوز کامل بالا نیامده → رفع اشکال، خطای ۳.timeout / 403 → مشکل دسترسی به مخزن تصاویر → رفع اشکال، خطای ۴.قبل از اجرای n8n، دو «انبار» میسازیم: یکی Volume۸ که داکر دادههای زندهٔ n8n را در آن نگه میدارد، و یکی پوشههای پشتیبان روی خودِ سیستم شما که نسخههای بکاپ آنجا میروند.
docker volume create n8n_data
🪟 ویندوز (پاورشل):
New-Item -ItemType Directory -Force -Path "$HOME\n8n-backups\workflows" New-Item -ItemType Directory -Force -Path "$HOME\n8n-backups\credentials" New-Item -ItemType Directory -Force -Path "$HOME\n8n-backups\volume"
🍎 مک (ترمینال):
mkdir -p "$HOME/n8n-backups/workflows" "$HOME/n8n-backups/credentials" "$HOME/n8n-backups/volume"
ساختار ساختهشده: پوشهٔ n8n-backups داخل پوشهٔ خانگی شما، با سه زیرپوشه: workflows (بکاپ ورکفلوها)، credentials (بکاپ اتصالها) و volume (بکاپ کامل انبار داده).
docker volume ls باید n8n_data را در فهرست نشان دهد؛ و در ویندوز dir $HOME\n8n-backups (در مک: ls $HOME/n8n-backups) سه پوشه را نشان دهد.این دستور از مستندات رسمی n8n گرفته شده و برای منطقهٔ زمانی ایران تنظیم شده است. کانتینر را با نام n8n، در پسزمینه و طوری اجرا میکند که بعد از ریاستارت سیستم هم خودش دوباره بالا بیاید.
`)docker run -d --name n8n ` --restart unless-stopped ` -p 5678:5678 ` -e GENERIC_TIMEZONE="Asia/Tehran" ` -e TZ="Asia/Tehran" ` -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true ` -e N8N_RUNNERS_ENABLED=true ` -v n8n_data:/home/node/.n8n ` docker.n8n.io/n8nio/n8n
\)docker run -d --name n8n \ --restart unless-stopped \ -p 5678:5678 \ -e GENERIC_TIMEZONE="Asia/Tehran" \ -e TZ="Asia/Tehran" \ -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \ -e N8N_RUNNERS_ENABLED=true \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8n
` است ولی در مک/لینوکس «بکاسلش» \. اگر دستورِ مک را در پاورشل کپی کنید، خطاهای عجیبی مثل docker: invalid reference format میگیرید. اگر شک دارید، این نسخهٔ تکخطی را در هر دو سیستم بزنید:
docker run -d --name n8n --restart unless-stopped -p 5678:5678 -e GENERIC_TIMEZONE="Asia/Tehran" -e TZ="Asia/Tehran" -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -e N8N_RUNNERS_ENABLED=true -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
| بخش دستور | معنی به زبان ساده |
|---|---|
-d | در پسزمینه اجرا شو؛ ترمینال را اشغال نکن. |
--name n8n | اسم کانتینر «n8n» باشد تا بعداً راحت صدایش کنیم. |
--restart unless-stopped | اگر سیستم ریاستارت شد، خودت دوباره روشن شو — مگر خودم خاموشت کرده باشم. |
-p 5678:5678 | درِ شمارهٔ 5678 کانتینر را به همان در روی سیستم من وصل کن (آدرس مرورگر). |
GENERIC_TIMEZONE و TZ | ساعت ایران؛ تا زمانبندیهای n8n (مثلاً «هر روز ۸ صبح») درست کار کنند. |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS | تنظیم امنیتی توصیهشدهٔ خود n8n برای فایل تنظیمات. |
N8N_RUNNERS_ENABLED | اجراکنندههای کد را فعال میکند (روش جدید و امنتر اجرای کد در n8n). |
-v n8n_data:/home/node/.n8n | انبار n8n_data را به پوشهٔ دادهٔ n8n وصل کن — راز ماندگاری دادهها. |
docker.n8n.io/n8nio/n8n | آدرس رسمی تصویر n8n (مخزن خودِ شرکت n8n). |
docker ps باید یک ردیف با نام n8n و وضعیت Up نشان دهد. اگر ردیفی نبود، با docker logs n8n دلیل را ببینید و به رفع اشکال بروید.http://localhost:5678localhost پیام بفرستند. برای وبهوکهای بیرونی به ابزار تونل (مثل ngrok) نیاز است — که آموزش جداگانهاش در گراول هست.دو نوع بکاپ میگیریم: بکاپ سبک (فایل JSON ورکفلوها و اتصالها — برای جابهجایی و نگهداری روزمره) و بکاپ کامل (کل Volume در یک فایل فشرده — بیمهنامهٔ نهایی شما).
🪟 ویندوز (پاورشل):
# 1) خروجی گرفتن داخل کانتینر docker exec n8n n8n export:workflow --all --output=/home/node/.n8n/wf-backup.json docker exec n8n n8n export:credentials --all --output=/home/node/.n8n/cred-backup.json # 2) کپی به پوشههای پشتیبان روی سیستم شما docker cp n8n:/home/node/.n8n/wf-backup.json "$HOME\n8n-backups\workflows\" docker cp n8n:/home/node/.n8n/cred-backup.json "$HOME\n8n-backups\credentials\"
🍎 مک (ترمینال): همان چهار دستور، فقط مسیر مقصد با اسلش معمولی:
docker exec n8n n8n export:workflow --all --output=/home/node/.n8n/wf-backup.json docker exec n8n n8n export:credentials --all --output=/home/node/.n8n/cred-backup.json docker cp n8n:/home/node/.n8n/wf-backup.json "$HOME/n8n-backups/workflows/" docker cp n8n:/home/node/.n8n/cred-backup.json "$HOME/n8n-backups/credentials/"
🪟 ویندوز (پاورشل):
docker run --rm -v n8n_data:/data -v "${HOME}\n8n-backups\volume:/backup" alpine tar czf /backup/n8n-volume-backup.tar.gz -C /data .
🍎 مک (ترمینال):
docker run --rm -v n8n_data:/data -v "$HOME/n8n-backups/volume:/backup" alpine tar czf /backup/n8n-volume-backup.tar.gz -C /data .
ترجمهٔ دستور: «یک کانتینر موقت (alpine) بساز، انبار n8n و پوشهٔ بکاپ من را به آن وصل کن، همهچیز را در فایل n8n-volume-backup.tar.gz فشرده کن، بعد خودت را حذف کن.»
# ویندوز — پاورشل: docker run --rm -v n8n_data:/data -v "${HOME}\n8n-backups\volume:/backup" alpine sh -c "cd /data && tar xzf /backup/n8n-volume-backup.tar.gz" # مک — ترمینال: docker run --rm -v n8n_data:/data -v "$HOME/n8n-backups/volume:/backup" alpine sh -c "cd /data && tar xzf /backup/n8n-volume-backup.tar.gz"
n8n-backups/volume باید فایل n8n-volume-backup.tar.gz با حجم غیر صفر باشد. در ویندوز: dir $HOME\n8n-backups\volume — در مک: ls -lh $HOME/n8n-backups/volume# وضعیت کانتینرها docker ps # توقف / شروع n8n docker stop n8n docker start n8n # دیدن گزارشها (برای عیبیابی) docker logs n8n --tail 50
# 0) اول بکاپ کامل بگیرید (مرحله ۹ - بخش ب)! docker pull docker.n8n.io/n8nio/n8n docker stop n8n docker rm n8n # حالا دوباره همان دستور اجرای مرحله ۷ را بزنید — چون Volume سر جایش است، همهچیز برمیگردد
docker rm) دادهها را پاک نمیکند؛ دادهها در Volume هستند. فقط دستور docker volume rm n8n_data است که واقعاً دادهها را نابود میکند — آن را هرگز بدون بکاپ نزنید.wsl --update → ریاستارت کامپیوتر → باز کردن دوبارهٔ Docker Desktop. اگر باز هم نشد: wsl --install --no-distribution و دوباره ریاستارت.F2، F10، Del یا Esc — ممکن است در دستگاه شما فرق کند). دنبال گزینهای شبیه Intel Virtualization Technology، VT-x یا SVM Mode بگردید (اغلب در تب Advanced یا CPU Configuration)، آن را Enabled کنید، ذخیره کنید (F10) و بیرون بیایید.docker run hello-world یا docker pull در دانلود گیر میکند یا خطای دسترسی میدهد.{
"registry-mirrors": ["https://docker.arvancloud.ir"]
}
(این فقط یک نمونهٔ شناختهشده است؛ سرویسهای آینهٔ دیگری هم وجود دارند و آدرسها ممکن است در طول زمان تغییر کنند — اگر کار نکرد، عبارت «docker registry mirror ایران» را جستوجو کنید.) توجه: ایمیج n8n از دامنهٔ خود n8n یعنی docker.n8n.io گرفته میشود که معمولاً بدون مشکل در دسترس است.docker run میگوید پورت 5678 اشغال است.docker ps -a. اگر کانتینری به نام n8n بود: docker start n8n (لازم نیست دوباره بسازید!). اگر میخواهید از نو بسازید: docker rm -f n8n و بعد دستور اجرای مرحلهٔ ۷. اگر برنامهٔ دیگری پورت را گرفته، در دستور اجرا بهجای -p 5678:5678 بنویسید -p 5679:5678 و در مرورگر به http://localhost:5679 بروید.\) در پاورشل یا برعکس؛ یا کپیشدن کاراکترهای نامرئی.docker start n8n. اگر میخواهید از نو: docker rm -f n8n و اجرای دوبارهٔ دستور. دادهها در Volume محفوظاند.docker rm -f n8n) و دستور اجرای مرحلهٔ ۷ را دقیقاً با همان -v n8n_data:/home/node/.n8n بزنید. اگر Volume را از دست دادهاید، از بکاپ کامل (مرحلهٔ ۹ - بخش ج) بازگردانی کنید.🏔️ سنگریزهٔ بعدی در مسیر: ساخت اولین ورکفلو در n8n — مثلاً اتصال تلگرام به هوش مصنوعی. سراغ آموزشهای اتوماسیون گراول برو!