صحنهٔ نمایشی آکادمی ویونیکس؛ کاربر نشسته، نمایشگر رو به کاربر و نمودار مفهومی Traefik و HTTP3.

WIUNIX ACADEMY

آموزش راه‌اندازی Traefik با Let’s Encrypt و HTTP/3 در اوبونتو و دبیان

با Traefik یک ورودی HTTPS با بک‌اند محلی و داشبورد خصوصی بسازید؛ staging و production را جدا کنید، HTTP/3 را واقعاً بررسی کنید و وضعیت گواهی را قابل بازیابی نگه دارید.

متوسط65 دقیقه مطالعهبه‌روزرسانی
محیطت را انتخاب کن

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

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

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

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

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

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

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

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

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

از اینجا شروع کن

در پایان چه چیزی خواهی داشت؟

لبهٔ TLS معتبر با HTTP/3، مدیریت خصوصی و وضعیت ACME قابل بازیابی.

01app.example.com · TCP443 / UDP443مرورگر ← TLS معتبر و HTTP3
02Traefik 3.7.15file provider و HTTP-01 روی TCP80
03127.0.0.1:8081بک‌اند آزمایشی؛ مدیریت جدا روی 8080
سیستم‌عامل‌ها و نسخه‌های پوشش‌داده‌شده

پنج مسیر سیستم‌عامل با مستندات بررسی شده‌اند و آزمون نصب کامل نیستند. صدور و تمدید ACME عمومی، مالکیت DNS، QUIC اینترنتی و هویت SSH باید در محیط خواننده بررسی شوند؛ شواهد اجرای ایزوله جدا ثبت می‌شود. مقادیر شخصی ورودی آزموده‌نشده‌اند. تصاویر DEMO شاهد کارمند، تأسیسات یا نتیجهٔ آزمون نیستند.

قبل از شروع

  • سرور لینوکسی اختصاصی و تازه با معماری amd64 یا arm64، sudo و کنسول یا SSH مستقل.
  • دامنهٔ تحت اختیار و IPv4 عمومی مستقیم؛ بدون پروکسی رقیب و AAAA ناخواسته.
  • مجوز ورودی TCP80 و TCP443 و UDP443، DNS و HTTPS خروجی و بررسی شرایط CA.
  • کلاینت مستقل سازگار با TLS و HTTP3 و محل رمزگذاری‌شدهٔ بازیابی.

از درخواست اینترنتی تا بک‌اند محلی

در پایان، درخواست دامنهٔ app.example.com از Traefik عبور می‌کند و پاسخ مشخص بک‌اند را می‌گیرد؛ گواهی با ACME مدیریت می‌شود و کنار HTTP/1.1 و HTTP/2، مسیر HTTP/3 هم آماده است. مخاطب، مدیر سروری است که با DNS، SSH و systemd آشناست. حدود ۶۵ دقیقه، جدا از زمان انتشار DNS و صدور گواهی، در نظر بگیرید. بک‌اند این تمرین فقط یک فایل آزمایشی بی‌خطر است؛ راه‌اندازی اپلیکیشن واقعی به بررسی امنیت و نیازهای همان برنامه احتیاج دارد.

مرز دسترسی‌ها را از ابتدا مشخص کنید

از یک سرور تازه و اختصاصی با IPv4 عمومی و قابل دسترس 203.0.113.10 استفاده کنید که وب‌سرور دیگری روی آن فعال نباشد. پورت عمومی TCP/80 برای HTTP-01 و TCP/443 و UDP/443 برای HTTPS و HTTP/3 ثابت‌اند؛ تغییر دلخواه آن‌ها به تنظیم DNS و دسترسی کلاینت هم وابسته است و در این سناریو ارائه نمی‌شود. بک‌اند و پنل مدیریت فقط به 127.0.0.1 متصل می‌شوند. این معماری تک‌سرور است و افزونگی ندارد. CDN، تبدیل پورت با NAT، گواهی wildcard و انتشار IPv6 در محدودهٔ تمرین نیست؛ تا وقتی مسیر IPv6 را جداگانه کامل نکرده‌اید، رکورد AAAA نسازید.

پیش از کپی، مثال‌ها را با محیط خود هماهنگ کنید

دامنهٔ تازه، IP عمومی، پورت‌های آزاد و متفاوت بک‌اند و مدیریت و پوشه‌های اختصاصی را همین ابتدا انتخاب کنید. مسیر پوشه باید با / شروع شود و داخل پوشهٔ دیگرِ این تمرین نباشد؛ بررسی مرحلهٔ بعد این رابطه را پیش از ساخت فایل کنترل می‌کند. مسیر فایل آزمایشی می‌تواند چند سطح داشته باشد. کاربر و پورت SSH مربوط به دسترسی مجاز فعلی شماست و حساب جدیدی ایجاد نمی‌کند. تنظیمات اعمال‌شده و پیشرفت حالت شخصی در sessionStorage همین تب، زبان، مقاله و محیط می‌مانند؛ پیشرفت مثال پیش‌فرض در localStorage است. این مقادیر به لینک اشتراک یا تنظیمات سرور فرستاده نمی‌شوند و به معنی آزموده‌شدن محیط شما نیستند. رمز، کلید خصوصی و توکن را در این بخش ننویسید.

01

قدم بعدی

سرور و مسیرهای انتخاب‌شده را بررسی کنید

کنسول یا راه دسترسی مستقلی نگه دارید. اگر Traefik، یکی از دو سرویس نام‌برده، فایل اجرایی مقصد یا پوشه‌های انتخابی متعلق به کار دیگری است، ادامه ندهید. سیستم‌عامل، معماری، ساعت و پورت‌های در حال استفاده را ببینید. این راهنما فقط amd64 و arm64 لینوکس را پوشش می‌دهد. پیام نبودن پوشه در سرور تازه طبیعی است؛ چیزی را برای خالی‌کردن مسیر حذف نکنید.

Bash

سرور لینوکسی اختصاصی

cat /etc/os-release
dpkg --print-architecture
timedatectl status
systemctl list-unit-files 'traefik*' 'academy-traefik-origin*'
sudo ss -lntup
ls -l /usr/local/bin/traefik
sudo ls -ld '/etc/traefik-academy' '/var/lib/traefik-academy' '/srv/traefik-academy-origin' '/var/backups/traefik-academy'
از کجا بدانم درست انجام شد؟

سیستم و معماری و ساعت درست است؛ پورت یا فایل متعلق به سرویس دیگری تداخل ندارد.

02

قدم بعدی

پوشهٔ موجود یا تودرتو را رد کنید

این بررسی چیزی نمی‌سازد و مسیر ریشه، میان‌بر خانه، پوشهٔ موجود و مسیرهای تودرتو را رد می‌کند. مالکیت و لینک‌های نمادین پوشه‌های والد را هم بررسی کنید؛ ظاهر مسیر، مالکیت واقعی فایل‌سیستم را ثابت نمی‌کند. برای عبور از خطا، پوشهٔ موجود را پاک نکنید.

Bash

سرور لینوکسی اختصاصی

sudo bash -eu <<'CHECK'
paths=('/etc/traefik-academy' '/var/lib/traefik-academy' '/srv/traefik-academy-origin' '/var/backups/traefik-academy')
for a in "${paths[@]}"; do
  [[ "$a" = /* && "$a" != / && ! -e "$a" && ! -L "$a" ]]
  for b in "${paths[@]}"; do
    [[ "$a" = "$b" ]] && continue
    case "$a/" in "$b/"*) printf 'Nested directory rejected\n' >&2; exit 1;; esac
  done
done
printf 'Directory preflight passed\n'
CHECK
از کجا بدانم درست انجام شد؟

پیام موفقیت بررسی پوشه‌ها دیده می‌شود؛ خروج ناموفق یعنی توقف.

03

قدم بعدی

DNS و فایروال را بدون قطع SSH آماده کنید

در ارائه‌دهندهٔ DNS، رکورد A دامنهٔ app.example.com را روی 203.0.113.10 بگذارید؛ مسیر مستقیم و بدون پروکسی CDN باشد. رکورد AAAA ناخواسته را از روند عادی تغییرات خود اصلاح کنید. از دستگاهی خارج از سرور، رکوردهای A، AAAA و CAA را بررسی کنید؛ اگر CAA دارید، باید letsencrypt.org را مجاز کند. در فایروال ارائه‌دهنده و فایروال فعلی میزبان، ورودی TCP/80، TCP/443 و UDP/443 را مجاز کنید و دسترسی مدیریت و SSH را نگه دارید. DNS به resolver مجاز و HTTPS خروجی برای دریافت فایل و ACME هم لازم است. قوانین را خالی نکنید و فایروال تازه‌ای را کورکورانه فعال نکنید. پورت‌های 8081 و 8080 عمومی نمی‌شوند. شنوندهٔ محلی، دسترسی از اینترنت را ثابت نمی‌کند.

Bash

کلاینت مستقل و پنل DNS و فایروال

dig +short A app.example.com
dig +short AAAA app.example.com
dig CAA app.example.com
از کجا بدانم درست انجام شد؟

رکورد A برابر 203.0.113.10 است؛ AAAA ناخواسته و مانع CAA وجود ندارد و سه مجوز عمومی بررسی شده‌اند.

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