دواپس و لینوکس
SSL با DuckDNS و Let's Encrypt
هر پروژهای به یک دامنه خریداریشده نیاز ندارد. برای هوملبها، پروژههای شخصی و آزمایشهای VPS کوچک، DuckDNS بهعلاوه Let's Encrypt به شما HTTPS رایگان با تمدید خودکار میدهد. من این پشته را مرتب برای پروژههای جانبی و محیطهای staging استفاده میکنم.
DuckDNS چیست؟
DuckDNS یک سرویس DNS پویای رایگان است. یک زیردامنه مثل myapp.duckdns.org میگیرید که به IP سرورتان اشاره میکند — و اگر IP شما تغییر کند (رایج در اتصالهای خانگی) خودکار بهروز میشود.
راهاندازی DuckDNS
- در duckdns.org یک حساب بسازید.
- یک زیردامنه اضافه و توکنتان را یادداشت کنید.
- اسکریپت بهروزرسانی را روی سرورتان نصب کنید:
mkdir ~/duckdns
echo 'echo url="https://www.duckdns.org/update?domains=myapp&token=YOUR-TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -' > ~/duckdns/duck.sh
chmod 700 ~/duckdns/duck.sh
# cron هر ۵ دقیقه
*/5 * * * * ~/duckdns/duck.sh
گرفتن یک گواهی Let's Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d myapp.duckdns.org
Certbot مالکیت دامنه را اعتبارسنجی میکند، گواهی را نصب و Nginx را برای HTTPS پیکربندی میکند. تمدید از طریق تایمر systemd خودکار است.
گواهیهای Let's Encrypt هر ۹۰ روز منقضی میشوند. تمدید خودکار Certbot این را مدیریت میکند — اما با یک اجرای آزمایشی تأیید کنید که کار میکند.
sudo certbot renew --dry-run
اشتباهات رایج
- پورت ۸۰ باز نیست. اعتبارسنجی HTTP لِتسانکریپت نیازمند دسترسی به پورت ۸۰ از اینترنت است.
- بهروز نشدن DuckDNS. اگر IP شما تغییر کند و DuckDNS دنبالش نکند، تمدید گواهی شکست میخورد.
- استفاده از DuckDNS برای سایتهای تجاری تولیدی. برای پروژههای شخصی خوب است؛ برای هر چیز روبهروی مشتری یک دامنه واقعی بگیرید.
بهترین شیوهها
- حتی با تمدید خودکار، انقضای گواهی را مانیتور کنید — هشدارها شکستها را زود میگیرند.
- کل ترافیک HTTP را در Nginx به HTTPS هدایت کنید.
- توکن DuckDNS خود را محرمانه نگه دارید؛ مثل یک رمز عبور با آن رفتار کنید.
جمعبندی
DuckDNS و Let's Encrypt با هم به شما روی هر جعبهای با IP عمومی HTTPS رایگان میدهند — عالی برای هوملبها و آزمایشها. DuckDNS را راهاندازی کنید، Certbot را اجرا، تمدید خودکار را تأیید کنید و تمام. HTTPS اختیاری نیست، حتی برای پروژههای جانبی.