👋 قبل از شروع
این آموزش برای کسی است که تا امروز اصلاً با Docker یا خط فرمان (PowerShell) کار نکرده، ولی میخواهد n8n را روی کامپیوتر خودش اجرا کند و یک آدرس اینترنتی واقعی و امن به آن بدهد که از گوشی یا از هر جای دنیا باز شود. در پایان، یک n8n واقعی داری که پشت رمز عبور است و آدرس دائمی HTTPS خودش را دارد.
- یک کامپیوتر ویندوزی (۱۰ یا ۱۱، نسخهٔ ۶۴بیتی) که رویش دسترسی مدیر (Administrator) داشته باشی — بدون آن نصب Docker ممکن نیست.
- یک اینترنت معمولی؛ دانلود Docker Desktop حدود ۵۰۰ مگابایت است.
- یک دامنه (domain) که مالکش باشی. اگر نداری، در مرحلهٔ ۵ میگوییم چطور ارزان بخری — چیزی حدود چند صد هزار تومان تا چند دلار در سال، بسته به پسوند دامنه.
- ویندوز ۱۰ یا ۱۱ داری (نسخهٔ خانگی هم مشکلی ندارد) و هیچ دانش قبلی از Docker یا برنامهنویسی لازم نیست.
- این کامپیوتر «سرور خانگی» توست، یعنی معمولاً روشن میماند؛ اگر خاموشش کنی، آدرس n8n هم موقتاً در دسترس نخواهد بود.
بررسی و آمادهسازی ویندوز
PowerShell را مثل یک دستیار متنی تصور کن: بهجای کلیک روی دکمهها، به او یک جملهٔ دستوری مینویسی و او فوری انجامش میدهد — با این تفاوت که اگر جمله را اشتباه بنویسی، فقط یک پیغام خطا میبینی، نه اینکه چیزی خراب شود. پس امتحانکردن اینجا خطرناک نیست.
-
دکمهٔ Start را باز کن، تایپ کن PowerShell، روی نتیجه راستکلیک کن و «Run as administrator» را بزن.
پنجرهٔ آبیرنگ PowerShell بهعنوان مدیر باز میشود؛ نصب Docker و WSL2 بدون این حالت انجام نمیشود.
-
تایپ کن
winverو Enter بزن.یک پنجرهٔ کوچک با شمارهٔ نسخه و build ویندوزت باز میشود؛ برای این آموزش ویندوز ۱۰ (نسخهٔ ۲۰۰۴ به بعد) یا هر نسخهٔ ویندوز ۱۱ کافی است.
-
تایپ کن
Get-ComputerInfo | Select-Object HyperVRequirementVirtualizationFirmwareEnabledو Enter بزن.باید جلویش
Trueببینی؛ یعنی مجازیسازی (Virtualization) در سختافزارت فعال است — چیزی که Docker برایش لازم دارد.
باید یکبار کامپیوتر را خاموش/روشن کنی و همان لحظهٔ روشنشدن (قبل از ورود به ویندوز) وارد تنظیمات BIOS/UEFI شوی و گزینهای با نام تقریبی Virtualization یا Intel VT-x / AMD-V را فعال کنی. کلید ورود به این تنظیمات بسته به برند فرق میکند (معمولاً Del، F2 یا F10).
بهجای اینکه مستقیم بروی سراغ نصب Docker و وسط کار با یک خطای مبهم گیر کنی، همین الان با یک خط PowerShell چک کن مجازیسازی فعال است یا نه.
⚡ جلوگیری از حدود ۲۰ دقیقه سردرگمی وسط مرحلهٔ نصب🔬 برای کنجکاوها: چرا اصلاً باید مدیر (Administrator) باشی؟
نصب چیزهایی مثل WSL2 و Docker نیاز دارد به بخشهای حساس ویندوز (درایورها و هستهٔ سیستم) دست بزند. ویندوز برای جلوگیری از تغییرات ناخواسته یا مخرب، این کار را فقط به حسابهای مدیر اجازه میدهد. یک کاربر عادی میتواند برنامههای معمولی را اجرا کند، ولی نمیتواند رفتار کل سیستم را تغییر دهد.
پنجرهٔ About Windows شمارهٔ نسخه را نشان داد، و جلوی HyperVRequirementVirtualizationFirmwareEnabled کلمهٔ True دیدی — نه پیغام قرمز خطا. اگر ندیدی، برو به رفع اشکال.
فعالسازی WSL2
به این سامانه میگویند «سامانهٔ فرعی لینوکس ویندوز» (WSL2) — مثل این است که یک اتاق کوچک لینوکسی داخل خانهٔ ویندوزیات بسازی. خودت این اتاق را نمیبینی، ولی Docker از همان اتاق برای اجرای کانتینرهایش استفاده میکند؛ با این تفاوت که این اتاق خودش را کاملاً پنهان از دید تو مدیریت میکند.
-
در همان PowerShell (مدیر)، تایپ کن
wsl --installو Enter بزن.ویندوز بهطور خودکار WSL2 و یک توزیع پیشفرض لینوکس (Ubuntu) را دانلود و نصب میکند.
-
صبر کن نصب تمام شود (چند دقیقه)، بعد کامپیوتر را با
Restart-Computerیا از منوی Start ریاستارت کن.این ریاستارت اختیاری نیست: WSL یک ویژگی سطح سیستمعامل است و بدون راهاندازی مجدد کامل فعال نمیشود.
-
بعد از روشنشدن دوباره، PowerShell را باز کن و تایپ کن
wsl --status.باید جلوی Default Version عدد
2را ببینی. -
تایپ کن
wsl -l -v.باید حداقل یک خط با نام Ubuntu ببینی که ستون VERSIONـش برابر
2است.
خیلیها بعد از wsl --install ریاستارت را فراموش میکنند و بعد نمیفهمند چرا Docker Desktop در مرحلهٔ بعد بالا نمیآید؛ این ریاستارت اجباری است، نه اختیاری.
🔬 برای کنجکاوها: WSL1 و WSL2 چه فرقی دارند؟
WSL1 فقط دستورهای لینوکسی را «ترجمه» میکرد تا روی ویندوز اجرا شوند. WSL2 یک هستهٔ لینوکس واقعی و کامل را داخل یک ماشین مجازی سبک اجرا میکند — به همین دلیل سریعتر است و سازگاری کامل با ابزارهایی مثل Docker دارد که خودشان روی هستهٔ لینوکس ساخته شدهاند.
wsl --status بدون خطا اجرا شد و Default Version برابر 2 بود؛ wsl -l -v هم یک توزیع نصبشده با VERSION برابر 2 نشان داد.
نصب Docker Desktop
Docker را مثل یک سری ظرف غذای آماده و کاملاً بستهبندیشده تصور کن: هر «کانتینر» یک برنامه بههمراه همهٔ چیزهایی است که برای اجرا لازم دارد، توی یک بسته. دیگر لازم نیست نگران باشی فلان نرمافزار درست روی کامپیوترت نصب شده یا نه — با این تفاوت که این ظرفها، برخلاف غذای واقعی، هر بار دقیقاً همان طعم اول را میدهند.
-
در PowerShell (اینبار لازم نیست مدیر باشد)، تایپ کن
winget install -e --id Docker.DockerDesktopو Enter بزن.wingetمدیر بستهٔ خود ویندوز است (شبیه یک فروشگاه اپلیکیشن، ولی از طریق خط فرمان) و این دستور مستقیم از منبع رسمی Docker دانلود و نصب میکند. -
صبر کن نصب تمام شود (۲ تا ۱۰ دقیقه بسته به سرعت اینترنت)، بعد از منوی Start، Docker Desktop را باز کن.
اولین بار قوانین استفاده (Service Agreement) را قبول کن و صبر کن آیکون نهنگ 🐳 پایین صفحه (کنار ساعت ویندوز) ثابت و سبز شود.
-
یک پنجرهٔ PowerShell جدید و عادی باز کن و تایپ کن
docker --version.باید یک خط شبیه
Docker version 2X.X.Xببینی، نه پیغام خطا. -
تست واقعی: تایپ کن
docker run hello-world.این دستور یک کانتینر خیلی کوچک را دانلود و اجرا میکند که فقط یک پیغام خوشآمدگویی چاپ میکند.
در Docker Desktop برو به Settings ⚙️ → General و چکباکس «Use the WSL 2 based engine» را ببین تیک خورده باشد؛ در نسخههای جدید پیشفرض است، ولی چککردنش ضرر ندارد.
⚡ کانتینرها چند برابر سریعتر بالا میآیند🔬 برای کنجکاوها: وقتی docker run hello-world را زدی، واقعاً چه اتفاقی افتاد؟
Docker اول دنبال این «ایمیج» (image — یعنی نسخهٔ بستهبندیشدهٔ آن برنامه) روی خود کامپیوترت گشت. چون پیدا نکرد، از اینترنت (از یک انبار عمومی به اسم Docker Hub) دانلودش کرد و بعد یک کانتینر از رویش ساخت و اجرا کرد. دفعهٔ بعد که همین ایمیج را بخواهی، دیگر دانلود نمیشود چون از قبل ذخیره شده.
docker --version یک شمارهٔ نسخه نشان داد، و docker run hello-world پاراگرافی چاپ کرد که با Hello from Docker! شروع میشود.
اولین اجرای n8n
n8n را مثل یک دستیار خودکار تصور کن: وقتی به او بگویی «هر وقت فلان اتفاق افتاد، این کارها را انجام بده»، خودش بیوقفه گوش میدهد و طبق دستور عمل میکند — بدون اینکه لازم باشد برنامهنویس باشی.
-
یک پوشهٔ مخصوص این پروژه بساز و واردش شو:
New-Item -ItemType Directory -Path "$HOME\n8n-docker"; Set-Location "$HOME\n8n-docker" -
برای یک تست سریع، تایپ کن:
docker run -it --rm --name n8n-test -p 5678:5678 docker.n8n.io/n8nio/n8n-p 5678:5678یعنی پورت ۵۶۷۸ داخل کانتینر را به همان پورت روی خود ویندوزت وصل کن. -
مرورگرت را باز کن و برو به
http://localhost:5678.بار اول ممکن است ۱ تا ۳ دقیقه طول بکشد چون ایمیج باید دانلود شود.
-
برگرد به پنجرهٔ PowerShell و با Ctrl + C این تست را متوقف کن.
وقتی داری یک کانتینر جدید را فقط برای امتحان اجرا میکنی، پرچم --rm را اضافه کن؛ همین که Ctrl+C بزنی، کانتینر کامل پاک میشود و هیچ ردی روی کامپیوترت جا نمیگذارد.
🔬 برای کنجکاوها: چرا هنوز کسی از بیرون خانه نمیتواند این آدرس را باز کند؟
localhost یعنی «همین کامپیوتر»؛ پورت ۵۶۷۸ فقط روی شبکهٔ داخلی خودت باز است و روتر خانهات هم آن را پشت یک آدرس خصوصی پنهان کرده. مرحلههای ۵ تا ۷ دقیقاً همین را حل میکنند.
در مرورگر، http://localhost:5678 صفحهٔ n8n با فرم «Set up owner account» را نشان داد — یعنی همین الان n8n واقعی روی کامپیوترت اجرا شده، فقط هنوز فقط خودت میتوانی ببینیش.
آمادهسازی دامنه در Cloudflare
یک دامنه (domain) مثل اسم روی یک مغازه است؛ DNS هم مثل دفترچهراهنمای شهر است که میگوید فلان اسم مغازه دقیقاً کجاست. Cloudflare اینجا هم صاحب آن دفترچهراهنماست، هم کسی که جلوی مغازهات یک نگهبان امن (HTTPS) میگذارد — با این تفاوت که این نگهبان کاملاً رایگان است.
-
اگر دامنه نداری، از یک فروشندهٔ دامنه (مثلاً همان Cloudflare Registrar یا هر رجیستراری مثل Namecheap) یک دامنه بخر.
برای یک پروژهٔ شخصی، پسوندهایی مثل
.xyzیا.siteمعمولاً چندین برابر ارزانتر از.comهستند. -
برو به
dash.cloudflare.comو یک حساب رایگان بساز (یا وارد شو اگر داری). -
«Add a Site» را بزن، دامنهات را تایپ کن، و پلن Free را انتخاب کن.
-
Cloudflare دو آدرس Nameserver نشانت میدهد (چیزی شبیه
xxx.ns.cloudflare.com)؛ آنها را کپی کن و در پنل همان رجیستراری که دامنه را خریدی، بخش Nameservers را پیدا کن و جایگزینشان کن. -
صبر کن (چند دقیقه تا گاهی ۲۴ ساعت) تا در داشبورد Cloudflare وضعیت دامنه از Pending به Active تغییر کند.
قبل از رفتن سراغ ساخت تونل (مرحلهٔ بعد)، حتماً صبر کن وضعیت دامنه در Cloudflare سبز و Active شود؛ اگر زودتر بروی، دامنهات اصلاً در لیست گزینههای مرحلهٔ بعد نشان داده نمیشود.
⚡ جلوگیری از برگشتن و گیجشدن وسط مرحلهٔ بعدساختن حساب Cloudflare و استفاده از تونل کاملاً رایگان است؛ تنها هزینه، همان خرید سالانهٔ خود دامنه از رجیسترار است.
در داشبورد Cloudflare، جلوی اسم دامنهات بهجای Pending Nameserver Update، نوشتهٔ Active با یک تیک سبز میبینی.
ساخت تونل امن
بهجای اینکه در جلوی خانهات (روتر) را باز بگذاری تا هرکسی بتواند بیاید تو — که خطرناک است — یک لولهٔ خصوصی و رمزنگاریشده از داخل خانه به سمت یک ایستگاه امن بیرون (Cloudflare) میکشی. کسی که از بیرون میآید، اول به آن ایستگاه میرسد، نه مستقیم به در خانهات؛ به این میگویند «تونل» (Tunnel).
-
در داشبورد Cloudflare، از منوی سمت چپ برو به بخش Zero Trust و اگر اولین بار است، پلن رایگان (Free) را تایید کن.
-
مسیر Networks → Tunnels را باز کن و روی Create a tunnel بزن.
-
نوع Cloudflared را انتخاب کن، یک اسم بگذار (مثلاً
n8n-home)، و Save کن. -
در صفحهٔ بعد، زیر یک دستور نصب، یک رشتهٔ طولانی به اسم Token میبینی. فقط همان رشتهٔ توکن را کپی کن و موقتاً یک جای امن (مثلاً یک Notepad باز) نگه دار.
-
پایینتر همان صفحه، بخش Public Hostname را پر کن: زیر Subdomain بنویس
n8n، زیر Domain دامنهٔ خودت را انتخاب کن، Type را رویHTTPبگذار، و زیر URL بنویسn8n:5678— نهlocalhost، چون داخل شبکهٔ داکر،n8nاسم سرویس است، نه خود کامپیوترت.
هرکسی این توکن را داشته باشد میتواند بهجای تو به این تونل وصل شود. آن را در پیام یا فایل عمومی قرار نده.
خیلیها برای گرفتن HTTPS و دسترسی بیرونی سراغ سرورهای اختصاصی (VPS) یا VPN پولی میروند؛ برای این کاربرد، Cloudflare Tunnel دقیقاً همان کار را کاملاً مجانی انجام میدهد.
⚡ صرفهجویی در هزینهٔ ماهانهٔ یک VPS یا VPNدر لیست Tunnels داشبورد Zero Trust، تونلی با اسمی که انتخاب کردی میبینی. وضعیتش فعلاً ممکن است خاکستری (Inactive) باشد — طبیعی است، چون هنوز سمت کامپیوترت چیزی روشن نکردهایم؛ مرحلهٔ بعد همین را حل میکند.
اتصال نهایی و HTTPS واقعی
فایل docker-compose.yml مثل یک دستور غذای چندمرحلهای است که میگوید کدام ظرفهای غذا (کانتینرها) باید کنار هم روی میز باشند و چطور به هم وصل باشند — بهجای اینکه هر بار دستی هر ظرف را جدا سِرو کنی.
-
در همان پوشهٔ
n8n-docker، تایپ کنnotepad docker-compose.ymlو Enter بزن؛ به سؤال ساخت فایل جدید، بله را بزن. -
محتوای کادر اول زیر همین مرحله را کامل کپی و در Notepad پیست کن، بعد با Ctrl+S ذخیره و پنجره را ببند.
-
دوباره تایپ کن
notepad .env، محتوای کادر دوم را پیست کن.قبل از ذخیره، سه مقدار را با اطلاعات واقعی خودت جایگزین کن:
N8N_HOST(همانn8n.دامنهات)،CLOUDFLARE_TUNNEL_TOKEN(همان توکن مرحلهٔ قبل) و یک رمز قوی برایN8N_BASIC_AUTH_PASSWORD. -
برای ساختن یک کلید رمزنگاری تصادفی، در PowerShell تایپ کن:
-join ((48..57)+(97..102)|Get-Random -Count 32|%{[char]$_})یک رشتهٔ ۳۲کاراکتری تصادفی چاپ میشود؛ آن را کپی کن و در
.envجایCHANGE_ME_TO_A_RANDOM_LONG_STRINGبگذار، ذخیره و ببند. -
تایپ کن
docker compose up -d.هم n8n و هم cloudflared با هم، در پسزمینه (
-d)، روشن میشوند. -
تایپ کن
docker compose logs -f cloudflaredو دنبال خطی بگرد که در آن عبارتRegistered tunnel connectionباشد.برای خروج از حالت دنبالکردن لاگ، Ctrl+C بزن.
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
environment:
- N8N_HOST=${N8N_HOST}
- N8N_PROTOCOL=https
- N8N_PORT=5678
- WEBHOOK_URL=https://${N8N_HOST}/
- N8N_EDITOR_BASE_URL=https://${N8N_HOST}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
networks:
- n8n_net
# بهعمد هیچ ports تعریف نشده — دسترسی فقط از مسیر cloudflared باشد
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel run
environment:
- TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}
depends_on:
- n8n
networks:
- n8n_net
networks:
n8n_net:
driver: bridge
volumes:
n8n_data:
driver: localN8N_HOST=n8n.yourdomain.com GENERIC_TIMEZONE=Asia/Tehran N8N_ENCRYPTION_KEY=CHANGE_ME_TO_A_RANDOM_LONG_STRING N8N_BASIC_AUTH_USER=admin N8N_BASIC_AUTH_PASSWORD=CHANGE_ME_TO_A_STRONG_PASSWORD CLOUDFLARE_TUNNEL_TOKEN=PASTE_YOUR_TUNNEL_TOKEN_HERE
docker compose logs -f cloudflared دقیقاً نشانت میدهد تونل وصل شده یا نه؛ خط Registered tunnel connection یعنی وصل است، پر بودن از خطای قرمز یعنی توکن یا تنظیمات Public Hostname ایراد دارد.
بهجای اینکه هر بار docker compose up را بدون -d بزنی و پنجره را باز نگه داری، همیشه با -d اجرا کن تا در پسزمینه بماند و بتوانی PowerShell را ببندی.
🔬 برای کنجکاوها: چرا در docker-compose.yml برای n8n هیچ portsـی تعریف نکردیم؟
در آموزشهای معمولی Docker معمولاً یک پورت را با ports: به بیرون کانتینر وصل میکنند. اینجا عمداً این کار را نکردیم؛ چون میخواهیم تنها مسیر رسیدن به n8n، همان تونل Cloudflare باشد، نه یک پورت باز روی خود ویندوز که میتواند مستقیماً هدف حمله قرار بگیرد. برای تمرین، میتوانی عمداً یک کاراکتر از توکن داخل .env را پاک کنی، docker compose up -d بزنی، و در لاگ cloudflared خط خطا را ببینی — این دقیقاً همان چیزی است که اگر یک روز واقعاً توکن اشتباه شد، میبینی؛ بعد توکن درست را برگردان.
docker compose logs -f cloudflared خط Registered tunnel connection را نشان داد، و در یک پنجرهٔ جدید PowerShell، دستور docker ps دو کانتینر روشن (n8n و cloudflared) را با وضعیت Up نشان داد.
امنیت، تست و بکآپ
همانطور که یک مغازه هم یک در ورودی دارد (که هرکسی میتواند بیاید تو) و هم میتواند یک نگهبان دم در بگذارد که فقط افراد خاصی را راه بدهد، اینجا هم میتوانی روی همان تونل یک لایهٔ نگهبانی اضافه کنی.
-
گوشیت را از وایفای خانه جدا کن (اینترنت موبایل/دیتا را روشن کن) تا از یک شبکهٔ کاملاً متفاوت تست کنی.
-
در مرورگر گوشی برو به
https://n8n.دامنهات(همانی که در.envگذاشتی).باید اول یک فرم ورود (Basic Auth) با نامکاربری و رمزی که در
.envگذاشتی ببینی، و بعد صفحهٔ n8n با یک قفل HTTPS معتبر کنار آدرس. -
(پیشنهادی) برای یک لایهٔ امنیتی اضافه، به Zero Trust → Access → Applications → Add an application → Self-hosted برو، دامنهٔ
n8n.دامنهاترا انتخاب کن، و یک Policy بساز که فقط ایمیل خودت اجازهٔ ورود داشته باشد.Cloudflare قبل از رسیدن به صفحهٔ n8n، یک کد تایید به همان ایمیل میفرستد.
-
برای بکآپگرفتن از دیتای n8n (workflowها و credentialها)، در همان پوشهٔ پروژه تایپ کن:
docker run --rm -v n8n-docker_n8n_data:/data -v "${PWD}:/backup" alpine tar czf /backup/n8n-backup.tar.gz -C /data .یک فایل
n8n-backup.tar.gzدر همان پوشه ساخته میشود.
وقتی میخواهی موقتاً n8n را خاموش کنی، فقط docker compose down بزن؛ هرگز docker compose down -v نزن، چون -v یعنی حذف کامل volume، یعنی همهٔ workflowها و credentialها.
داکر خودش جلوی اسم volume و شبکه، اسم پوشه را میگذارد (مثلاً n8n-docker_n8n_data)؛ اگر بعداً اسم پوشه را عوض کنی، داکر فکر میکند یک پروژهٔ کاملاً جدید است و دیتای قبلیات را گم میکنی.
دقیقاً همین ترکیب — Docker + Cloudflare Tunnel — را خیلی از پروژههای خودمیزبان (self-hosted) دیگر هم مثل Nextcloud یا Home Assistant استفاده میکنند؛ وقتی سرور اختصاصی نداری ولی میخواهی از بیرون به یک سرویس روی کامپیوتر خودت برسی.
از روی اینترنت گوشی (نه وایفای خانه)، آدرس https://n8n.دامنهات را باز کردی، رمز Basic Auth را زدی، و صفحهٔ اصلی n8n را با قفل HTTPS سبز دیدی — یعنی از صفر تا صد این آموزش تمام شد.
🧠 آزمونک
ببین چقدر یاد گرفتی. اشتباه کردن هم بخشی از یادگیری است.
📇 برگهٔ تقلب
این بخش را چاپ کن یا نگه دار؛ خلاصهٔ همهچیز اینجاست.
docker compose up -d
docker compose down
docker ps
docker compose logs -f cloudflared
docker compose logs -f n8n
New-Item -ItemType Directory -Path X; Set-Location X
notepad .env
docker run --rm -v n8n-docker_n8n_data:/data -v "${PWD}:/backup" alpine tar czf /backup/n8n-backup.tar.gz -C /data .
docker --version
🔧 رفع اشکال
| چه میبینی؟ | چرا؟ | چه کار کنی؟ |
|---|---|---|
docker یا wsl شناخته نمیشود (not recognized) | پنجرهٔ PowerShell بعد از نصب دوباره باز نشده، یا نصب کامل نشده | یک پنجرهٔ PowerShell جدید باز کن؛ اگر بازهم نبود، Docker Desktop را ببند و دوباره باز کن، یا کامپیوتر را ریاستارت کن. |
| Docker Desktop بالا نمیآید و پیام دربارهٔ WSL میدهد | معمولاً یعنی WSL2 درست نصب یا فعال نشده | در PowerShell (مدیر) بزن wsl --update و بعد wsl --set-default-version 2، و یک ریاستارت دیگر بزن. |
http://localhost:5678 باز نمیشود | یا کانتینر n8n روشن نیست، یا پورت قبلاً توسط برنامهٔ دیگری گرفته شده | بزن docker ps و ببین n8n در لیست با وضعیت Up هست؛ اگر پورت اشغال بود، برنامهٔ دیگر (مثلاً یک n8n قبلی) را ببند. |
https://n8n.دامنهات از بیرون باز نمیشود، ولی localhost:5678 کار میکند | تونل Cloudflare درست وصل نشده یا Public Hostname اشتباه تنظیم شده | بزن docker compose logs -f cloudflared و دنبال خط قرمز بگرد؛ چک کن مقدار URL در تنظیمات Public Hostname دقیقاً n8n:5678 باشد، نه localhost:5678. |
| مرورگر میگوید گواهی (Certificate) نامعتبر است | دامنه هنوز کامل روی Cloudflare فعال نشده | چند دقیقه صبر کن و دوباره امتحان کن؛ در داشبورد Cloudflare چک کن وضعیت دامنه Active باشد. |
| بعد از ریاستارت کامپیوتر، n8n دیگر اجرا نمیشود | کانتینرها بهطور خودکار بعد از ریاستارت بالا نیامدهاند | در پوشهٔ پروژه بزن docker compose up -d؛ برای اینکه دیگر لازم نباشد دستی بزنی، در Docker Desktop → Settings → General گزینهٔ Start Docker Desktop when you log in را فعال کن. |
| نامکاربری یا رمز Basic Auth یادت رفته | در فایل .env گم شده یا عوض شده | notepad .env را باز کن، مقدارهای N8N_BASIC_AUTH_USER و N8N_BASIC_AUTH_PASSWORD را ببین؛ بعد از هر تغییر در .env حتماً یک بار docker compose up -d بزن تا اعمال شود. |
🎉 تمام شد!
حالا تو بلدی n8n را روی ویندوز خودت با Docker اجرا کنی و یک آدرس HTTPS واقعی و امن، از بیرون خانه، رویش داشته باشی.
🗺️ سهجا که همین الان به کارت میآید
وصلکردن webhook تلگرام یا فرم سایتت به همین آدرس؛ بازکردن n8nـت از موبایل وقتی بیرون از خانهای؛ نشاندادن یک دموی زنده به یک همکار یا مشتری، بدون توضیحدادن تنظیمات شبکه.
🚀 قدم بعدی: یک workflow ساده بساز — مثلاً هر روز ساعت ۹ صبح یک ایمیل یادآوری بفرستد — و مطمئن شو از گوشیات هم میتوانی واردش شوی و ببینیش.