Caddy: বক্সের বাইরে সার্টিফিকেটসহ সাইট
এমন ওয়েব সার্ভার যা নিজেই HTTPS সার্টিফিকেট নেয় ও নবায়ন করে। VPS-এ ইনস্টলেশন, ন্যূনতম Caddyfile এবং Nginx থেকে মাইগ্রেশন।
আপডেট: ২৩ আগস্ট, ২০২৬
Caddy, Nginx-এর মতোই কাজ করে, তবে Let's Encrypt সার্টিফিকেট নিজে থেকেই ইস্যু ও রিনিউ করে। একটি সাইটের কনফিগারেশন মাত্র তিন লাইনে হয়ে যায়, তাই VDS-এ প্রথম প্রজেক্টের জন্য কার্যকর HTTPS চালু করার সবচেয়ে ছোট পথ এটি।
ইনস্টলেশন
Debian এবং Ubuntu — অফিসিয়াল রিপোজিটরি থেকে:
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
> /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install -y caddy
AlmaLinux এবং CentOS Stream:
dnf install -y 'dnf-command(copr)'
dnf copr enable -y @caddy/caddy
dnf install -y caddy && systemctl enable --now caddy
আপনার প্রথম সাইট
পুরো কনফিগ /etc/caddy/Caddyfile-এ থাকে:
example.ru {
root * /var/www/example.ru
file_server
encode gzip zstd
}
mkdir -p /var/www/example.ru
echo '<h1>Works</h1>' > /var/www/example.ru/index.html
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy
প্রথম রিকোয়েস্টের কয়েক সেকেন্ড পরেই সাইটটি https://example.ru-এ খুলে যাবে। আর কিছু চালু করার দরকার নেই: Caddy নিজেই সার্টিফিকেট নিয়ে এসেছে এবং স্বয়ংক্রিয়ভাবে রিনিউ করবে।
অ্যাপ্লিকেশন প্রক্সি করা
যদি আপনার লোকাল পোর্টে কোনো Node.js বা Python সার্ভিস থাকে, তাহলে কনফিগ দেখতে এমন হয়:
api.example.ru {
reverse_proxy 127.0.0.1:3000
}
Caddy নিজেই X-Forwarded-For এবং X-Forwarded-Proto হেডার যোগ করে। স্কিম সম্পর্কে আরও জানতে দেখুন রিভার্স প্রক্সি।
একাধিক সাইট মানে একই ফাইলে একাধিক ব্লক, দেখুন একটি মেশিনে একাধিক সাইট।
আগে যা যাচাই করবেন
- ডোমেইনের A রেকর্ড প্যানেলের
/hosting/vds/m/<id>-এর “Overview”-তে দেওয়া মেশিনের ঠিকানায় পয়েন্ট করে; - মেশিনের ফায়ারওয়ালে 80 এবং 443 পোর্ট খোলা আছে এবং Nginx বা Apache দখল করেনি;
- ডোমেইনটি সত্যিই রিজলভ করে:
dig +short example.ru।
প্রথমটি করা না থাকলে সার্টিফিকেট ইস্যু ব্যর্থ হবে: Let's Encrypt-কে ডোমেইন নাম দিয়ে আপনার মেশিনে পৌঁছাতে হবে।
সাধারণ ত্রুটি
| লক্ষণ | কারণ |
|---|---|
could not get certificate | ডোমেইনটি মেশিনে পয়েন্ট করে না, অথবা 80 পোর্ট বন্ধ |
address already in use | Nginx বা Apache চলছে — একটিকে বন্ধ করুন |
| সাইটটি শুধু HTTP-তে খোলে | Caddyfile-এ নামের আগে :80 বা http:// দেওয়া আছে |
| অতিরিক্ত ইস্যু চেষ্টা | Let's Encrypt-এর সীমা — tls internal দিয়ে ডিবাগ করুন |
লগ: journalctl -u caddy -f।
Caddy সার্টিফিকেট
/var/lib/caddy/.local/share/caddy-এ সংরক্ষণ করে। “Access” ট্যাবে সিস্টেম রিইনস্টল করলে এই ডিরেক্টরিটি কপি করে রাখুন, নইলে রিইনস্টলের পর ইস্যু আবার শুরু থেকে হবে।