Skip to content
VDS · ওয়েবসাইট ও ওয়েব সার্ভার

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 useNginx বা Apache চলছে — একটিকে বন্ধ করুন
সাইটটি শুধু HTTP-তে খোলেCaddyfile-এ নামের আগে :80 বা http:// দেওয়া আছে
অতিরিক্ত ইস্যু চেষ্টাLet's Encrypt-এর সীমা — tls internal দিয়ে ডিবাগ করুন

লগ: journalctl -u caddy -f।

Caddy সার্টিফিকেট /var/lib/caddy/.local/share/caddy-এ সংরক্ষণ করে। “Access” ট্যাবে সিস্টেম রিইনস্টল করলে এই ডিরেক্টরিটি কপি করে রাখুন, নইলে রিইনস্টলের পর ইস্যু আবার শুরু থেকে হবে।