← شروع آموزش

WIUNIX ACADEMY

آموزش Cloudflare Tunnel و Access برای وب‌اپ داخلی در Ubuntu و Debian

صفحهٔ 2 از 5؛ مراحل قبلی و پیش‌نیازها را پیش از ادامه مرور کن.

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخه را انتخاب کن تا مراحل، دستورها و راه‌حل‌ها برای همان محیط نمایش داده شوند.

Ubuntu 26.10بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر می‌کنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری می‌شوند و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شوند. پیش از اجرا، DNS، گواهی‌ها و سیاست شبکهٔ واقعی را بررسی کن.

آی‌پی، دامنه یا پورت مثال‌ها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای به‌روز‌شده را کپی کن.

تنظیم مقادیر برای محیط من8 مقدار قابل‌تغییر
04

قدم بعدی

پیش‌نیازها را از مخزن توزیع نصب کنید

بسته‌های زیر روی سرور کانکتور نصب می‌شوند. پیش‌فرض بررسی‌شده Ubuntu 26.10 است؛ نسخه‌های LTS و Debian از انتخاب‌گر در دسترس‌اند. این دستور کل سیستم را ارتقا نمی‌دهد. وب‌سرور Python فقط برای فایل نشانهٔ آزمایشی است و سرور اپلیکیشن تولیدی محسوب نمی‌شود.

Bash

محل اجرا در توضیح همین گام

sudo apt-get update
sudo apt-get install --no-install-recommends ca-certificates curl gnupg python3 dnsutils
از کجا بدانم درست انجام شد؟

نصب بدون خطای امضا یا مخزن تمام می‌شود.

05

قدم بعدی

مخزن امضاشدهٔ رسمی cloudflared را اضافه کنید

مخزن رسمی، شاخهٔ any را برای توزیع‌های مبتنی بر Debian توصیه می‌کند؛ نام نسخهٔ Ubuntu را حدس نزنید. کلید فعلی را با HTTPS بگیرید و اثرانگشت را ببینید و URL کلید و دستورالعمل جاری فروشنده را در فرایند مستقل تأیید منبع سازمان بررسی کنید. صفحهٔ مخزن URL کلید را می‌دهد؛ اگر سازمان اثرانگشت منتشرشده از کانال مستقل می‌خواهد، پیش از اعتماد به کلید آن را تهیه کنید. در صورت اختلاف متوقف شوید؛ بررسی امضای APT را خاموش نکنید. signed-by اعتماد این کلید را به همین مخزن محدود می‌کند. اگر فایل مخزن یا کلید را سازمان مدیریت می‌کند، آن را جایگزین نکنید.

Bash

محل اجرا در توضیح همین گام

sudo install -d -m 0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
gpg --show-keys --fingerprint /usr/share/keyrings/cloudflare-main.gpg
printf '%s\n' 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update
apt-cache policy cloudflared
sudo apt-get install --no-install-recommends cloudflared
cloudflared --version
cloudflared tunnel run --help
از کجا بدانم درست انجام شد؟

بستهٔ امضاشدهٔ فروشنده نصب شده و راهنما token-file را می‌شناسد. نسخه باید تحت نگهداری و دست‌کم 2025.4.0 باشد؛ شمارهٔ نصب‌شده را ثبت کنید.

06

قدم بعدی

مسیر خروجی لازم را تأیید کنید

طبق فهرست جاری رسمی، خروجی UDP روی ۷۸۴۴ برای QUIC و TCP روی همان پورت برای HTTP/2 لازم است؛ DNS باید به resolver مجاز برسد. دانلود بسته HTTPS می‌خواهد و اعتبارسنجی JWT در کانکتور نیز به نشانی cloudflareaccess.com تیم شما روی HTTPS نیاز دارد. پورت ۴۴۳ جای ۷۸۴۴ را نمی‌گیرد. قوانین ورودی و مدیریت را دست نزنید و پورتی برای origin باز نکنید. حالت auto در صورت مسدودبودن UDP می‌تواند به HTTP/2 برگردد. موفقیت تست TCP، موفقیت QUIC یا اجازهٔ ورود کاربر را ثابت نمی‌کند.

Bash

محل اجرا در توضیح همین گام

getent ahostsv4 region1.v2.argotunnel.com
getent ahostsv4 region2.v2.argotunnel.com
dig SRV _v2-origintunneld._tcp.argotunnel.com
از کجا بدانم درست انجام شد؟

نام مقصدها resolve می‌شود؛ خروجی لازم تأیید شده و اتصال واقعی بعد از شروع کانکتور بررسی خواهد شد.

07

قدم بعدی

origin آزمایشی و مستقل بسازید

روی همان سرور و فقط در پوشهٔ تازه، یک فایل نشانهٔ غیرمحرمانه بسازید. پوشهٔ خانگی، سورس، توکن یا بکاپ را با این وب‌سرور ارائه نکنید. لوپ‌بک باید ثابت بماند. کاربر وب‌سرور فقط به پوشهٔ نشانه دسترسی خواندن دارد؛ توکن متعلق به root خواهد بود.

Bash

محل اجرا در توضیح همین گام

sudo bash -eu <<'ORIGIN' &&
test ! -e '/srv/academy-origin'
test ! -e /etc/systemd/system/academy-origin.service
install -d -m 0755 '/srv/academy-origin'
install -d -m 0755 "$(dirname '/srv/academy-origin/health.txt')"
printf '%s\n' 'academy-tunnel-origin-ok' > '/srv/academy-origin/health.txt'
chmod 0644 '/srv/academy-origin/health.txt'
ORIGIN
sudoedit /etc/systemd/system/academy-origin.service
از کجا بدانم درست انجام شد؟

فایل نشانه ساخته شده و ویرایشگر واحد سرویس اختصاصی باز است.

فایل سرویس origin

محتوای فایل است؛ در ترمینال اجرا نکنید. سرویس با کاربر بدون امتیاز و فقط روی 127.0.0.1:8080 گوش می‌دهد.

ini · /etc/systemd/system/academy-origin.service
[Unit]
Description=Academy loopback marker origin
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
ExecStart=/usr/bin/python3 -m http.server 8080 --bind 127.0.0.1 --directory /srv/academy-origin
Restart=on-failure
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true

[Install]
WantedBy=multi-user.target
08

قدم بعدی

پاسخ خود origin را بررسی کنید

روی سرور، ابتدا ساختار فایل و سپس پاسخ دقیق را بررسی کنید؛ وضعیت ۲۰۰ به‌تنهایی کافی نیست. آدرس شنونده نباید wildcard در IPv4 یا IPv6 باشد. از دستگاه دیگری، پورت انتخابی روی IP شبکه یا عمومی این سرور نباید پاسخ بدهد. اگر پاسخ داد، همین‌جا متوقف شوید و قبل از ساخت مسیر عمومی، دسترسی مستقیم را ببندید.

Bash

محل اجرا در توضیح همین گام

sudo systemd-analyze verify /etc/systemd/system/academy-origin.service
sudo systemctl daemon-reload
sudo systemctl enable --now academy-origin.service
curl --fail --silent --show-error --noproxy '*' http://127.0.0.1:8080/health.txt
sudo ss -lntp 'sport = :8080'
از کجا بدانم درست انجام شد؟

بدنهٔ پاسخ academy-tunnel-origin-ok است و شنونده فقط روی 127.0.0.1:8080 قرار دارد.

همهٔ آموزش‌های آکادمی ↗