Tagasi blogisse
August 19, 2026Juhendid

Kuidas paigaldada Caddy veebiserver automaatse HTTPS-iga

Paigalda Caddy Ubuntuile ametlikust hoidlast, kirjuta Caddyfile staatilistele saitidele ja pöördproksidele, mõista automaatseid sertifikaate, systemd, logisid ja tavalisi vigu Nginxist migreerimisel.

Kuidas paigaldada Caddy veebiserver automaatse HTTPS-iga

Caddy on veebiserver, mis hangib ja uuendab TLS-sertifikaate vaikimisi. Väikese VPS-i jaoks, mis majutab üht või kahte domeeni, eemaldab see terve klassi Certboti taimereid ja Nginx snippet-faile. Seadistuskeel (Caddyfile) on lühike. Pöördproksi, gzip ja HTTP/2 on tavalised funktsioonid, mitte nädalavahetus lisamoodulitega.

Nginx on mõnele poele endiselt õige valik: teil on juba lahingus testitud seadistused või vajate väga spetsiifilist moodulit. See juhend on teise tavalise juhtumi jaoks — tahad HTTPS-i, mis töötab värskel Hiddence VPS-il ilma include snippet'eid pähe õppimata. Paigaldame Caddy ametlikust apt hoidlast, selgitame, kuidas see Let's Encryptiga räägib, serveerime staatilist saiti, proksime kohalikku rakendust, majutame mitut domeeni, vaatame logisid ja katame tavalised pordi 80 kaklused Apache või vana Nginxiga.

Millal Caddy hästi sobib

Automaatne HTTPS on pealkiri, kuid igapäevane võit on vähem liikuvaid osi. Caddy kuulab 80 ja 443, suunab HTTP HTTPS-ile ja salvestab sertifikaadid oma andmekataloogi. Sul on endiselt vaja domeeni, mis osutab VPS-ile. Sul on endiselt vaja ACME-d mitte rikkuda (tulemüür 80/tcp, ükski teine protsess ei varasta :80). Jokermärgi sertifikaadid vajavad DNS-pakkuja moodulit — see on pikem tee kui ühe hosti sertifikaat.

  • Automaatne HTTP→HTTPS ja sertifikaadi uuendamine
  • Loetav Caddyfile pikkade serveriplokkide asemel
  • Võimekas pöördproksi Node'ile, Pythonile, PHP-FPM-ile lisaseadistusega või Dockeri taustatele
  • HTTP/2 ja kaasaegsed TLS-vaikeväärtused ilma šifritabelita
  • systemd üksus ametlikust paketist

Nõuded

Domeen peab sellele VPS-ile resolvima, enne kui Caddy saab ACME HTTP-01 tõestada. Kui DNS alles levib, Caddy väljastamine ebaõnnestub ja proovib uuesti; see näib nagu 'Caddy on katki', kui tegu on ainult DNS-iga. Peata Apache või Nginx esmalt, kui nemad omavad 80/443.

  • Ubuntu 22.04 või 24.04
  • Domeeni A-kirje VPS-i IP-le (ja AAAA, kui kasutad IPv6)
  • Pordid 80 ja 443 vabad ja tulemüüris lubatud
  • Root või sudo

Samm 1: Paigalda Caddy ametlikust hoidlast

Ära paigalda juhuslikku vana Caddyt Ubuntu vaikimisi universe'ist, kui tahad praegust TLS-i ja ACME käitumist. Caddy projekt dokumenteerib apt allika. Pärast paigaldust on caddy kasutaja olemas ja teenus on lubatud.

bash
ssh root@YOUR_VPS_IP
apt update && apt -y install debian-keyring debian-archive-keyring apt-transport-https curl gpg

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' | tee /etc/apt/sources.list.d/caddy-stable.list

apt update
apt -y install caddy

caddy version
systemctl status caddy --no-pager

Samm 2: Esimene Caddyfile — staatiline sait

Vaikimisi Caddyfile on /etc/caddy/Caddyfile. Asenda see oma domeeniga. Caddy üritab sertifikaati hankida niipea, kui seadistus laaditakse, kui hostinimi ei ole localhost. Pane saidifailid kataloogi, mida caddy kasutaja saab lugeda (sageli www-data-laadsed õigused, kuid pakett kasutab kasutajat caddy).

bash
mkdir -p /var/www/example
echo '<h1>It works</h1>' > /var/www/example/index.html
chown -R caddy:caddy /var/www/example

cat >/etc/caddy/Caddyfile <<'EOF'
example.com {
    root * /var/www/example
    file_server
    encode gzip
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

# Watch issuance:
journalctl -u caddy -f

Samm 3: Kohaliku rakenduse pöördproksi

Kui Gunicorn, Node või Docker kuulab 127.0.0.1:8000, peaks Caddy olema ainus avalik protsess. reverse_proxy direktiiv edastab Host ja X-Forwarded-* päised enamiku rakenduste jaoks mõistlikult. Kui rakendus genereerib absoluutseid HTTP URL-e, sea rakenduses trusted proxy / HTTPS lipud (Django SECURE_PROXY_SSL_HEADER, Express trust proxy jne).

bash
app.example.com {
    encode gzip
    reverse_proxy 127.0.0.1:8000
}

# Several hosts in one file are normal:
# blog.example.com {
#     root * /var/www/blog
#     file_server
# }

Samm 4: Tulemüür ja systemd

Luba 80 ja 443. Caddy üksus on caddy.service; reload piisab pärast Caddyfile muudatusi, kui protsess on terve. Kui muudad DNS-plugina keskkonnamuutujaid, on täielik taaskäivitus selgem. Sertifikaadid elavad vaikimisi /var/lib/caddy/.local/share/caddy/ all — lisa see tee varukoopiatesse, kui hoolid kiirusepiirangutest uuesti paigaldamisel.

bash
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

systemctl enable --now caddy
systemctl reload caddy

# Backup cert storage (path may vary slightly by version):
ls -la /var/lib/caddy/

Samm 5: Logid, tihendus ja päised

Juurdepääsulogid aitavad, kui bot vasardab teed või kui otsid 404 vigu. Saad logida saidi kohta. Lisa turvapäised, kui majutad brauserirakendust; ära kopeeri tohutut päisepaketti ilma HSTS-i mõistmata (kui sead pika max-age, mäletavad brauserid seda).

bash
example.com {
    root * /var/www/example
    file_server
    encode gzip
    log {
        output file /var/log/caddy/example.log
    }
    header {
        X-Content-Type-Options nosniff
        Referrer-Policy no-referrer-when-downgrade
        -Server
    }
}

mkdir -p /var/log/caddy
chown caddy:caddy /var/log/caddy
systemctl reload caddy

Samm 6: PHP ja muud lisad

Caddy oskab PHP-FPM-iga rääkida php_fastcgi direktiiviga. Sellest piisab paljudele WordPressi või Laravel hostidele, kuid php-fpm peab olema paigaldatud ja sokli tee peab kattuma. Kui sul on juba täiuslik Nginx PHP seadistus, on ühe õhtuga migreerimine valikuline — Caddy särab rohkem pöördproksi + staatiline + automaatne TLS.

bash
example.com {
    root * /var/www/example
    php_fastcgi unix//run/php/php8.3-fpm.sock
    file_server
}

# Confirm FPM is running:
systemctl status php8.3-fpm

Nginxist migreerimine ilma ootamatute katkestusteta

Peata Nginx enne Caddy käivitamist, muidu nad kaklevad 80/443 pärast. Langeta DNS TTL päev enne, kui liigutad ka IP-sid. Testi curl --resolve'iga, et saaksid uut VPS-i tabada enne A-kirje vahetamist. Hoia Nginx seadistused gitis nädal aega, juhuks kui pead tagasi võtma.

  • systemctl stop nginx && systemctl disable nginx
  • Paigalda Caddy, valideeri Caddyfile, käivita Caddy
  • curl -I --resolve example.com:443:NEW_IP https://example.com
  • Muuda DNS alles seejärel, kui IP on uus
  • Uuesti väljastamine on automaatne; ära käita samale hostinimele ka Certboti

Tõrkeotsing

ACME tõrked on peaaegu alati DNS, tulemüür või teine teenus pordil 80. Caddy logiread mainivad tls.obtain. Kui sait töötab HTTP-l, kuid mitte HTTPS-il, ei jõudnud väljastamine kunagi lõpuni. Kui näed liiga palju sertifikaate, tabasid Let's Encrypti kiirusepiiranguid — kasuta testimise ajal staging CA-d, mitte tootmist.

  • validate ebaõnnestub: Caddyfile süntaks, puuduv sulg
  • permission denied on root: chown caddy saidikataloogile
  • bind: address already in use — ss -tulpn | grep -E ':80|:443'
  • certificate timeout: dig +short domeen VPS-ilt, ufw allow 80
  • 502 reverse_proxy: taust all, või proksisid localhostile konteinerivõrgust valesti

Turvamärkused

Caddy TLS-vaikeväärtused on konservatiivsed. Sinu töö on rakenduse turvalisus ja SSH. Ära lülita Caddy admin API-t avalikul liidesel sisse. Vaikimisi admini otspunkt on kohalik; jäta see nii. Kui kasutad internetist Caddyfile'i, loe iga matcher — snippet, mis reverse_proxies /* sisemisele IP-le, võib muutuda avatud proksiks.

  • Ära paljasta admin API-t
  • Hoia pakett uuendatud
  • HSTS ainult siis, kui oled kindel, et HTTPS töötab kõigil hostinimedel
  • Eralda testi- ja tootmishostinimed, et kaitsta ACME kiirusepiiranguid

Näpunäited

  • caddy fmt --overwrite /etc/caddy/Caddyfile hoiab faili loetavana
  • Kasuta import snippet'eid, kui sul on palju sarnaseid saite
  • Dockeri jaoks on tavaline caddy:alpine image koos monteeritud Caddyfile'iga
  • Jokermärgi sertifikaadid vajavad DNS-moodulit ja API tokenit — kaitse seda tokenit
  • Loe journalctl -u caddy enne kogu faili ümberkirjutamist

Caddy VPS-il on: ametlik pakett, lühike Caddyfile, pordid 80/443 avatud, DNS juba serverile osutamas ja systemd reload pärast muudatusi. Kasuta seda staatilise failiserverina või pöördproksina Gunicorn, Node'i või Dockeri ees. Automaatne HTTPS töötab, kui ACME oskab pordil 80 vastata; kui väljastamine ebaõnnestub, paranda DNS ja pordikonfliktid enne Caddy süüdistamist. Varunda /var/lib/caddy, kui paigaldad sageli uuesti.