Kā instalēt Caddy tīmekļa serveri ar automātisku HTTPS
Instalējiet Caddy Ubuntu no oficiālās krātuves, uzrakstiet Caddyfile statiskām vietnēm un reversajiem starpniekiem, saprotiet automātiskos sertifikātus, systemd, žurnālus un biežas kļūdas, migrējot no Nginx.

Caddy ir tīmekļa serveris, kas pēc noklusējuma iegūst un atjauno TLS sertifikātus. Nelielam VPS, kas mitina vienu vai divus domēnus, tas noņem veselu Certbot taimeru un Nginx fragmentu failu klasi. Konfigurācijas valoda (Caddyfile) ir īsa. Reversais starpnieks, gzip un HTTP/2 ir parastas funkcijas, nevis nedēļas nogale ar papildu moduļiem.
Nginx joprojām ir pareizā izvēle dažām komandām: jums jau ir kaujā pārbaudītas konfigurācijas vai vajag ļoti konkrētu moduli. Šis ceļvedis ir otram parastajam gadījumam — vēlaties HTTPS, kas darbojas svaigā Hiddence VPS, nemācoties include fragmentus no galvas. Instalēsim Caddy no oficiālās apt krātuves, izskaidrosim, kā tas runā ar Let's Encrypt, apkalposim statisku vietni, starpniekosim vietēju lietotni, mitināsim vairākus domēnus, paskatīsimies žurnālus un apskatīsim parastās 80. porta cīņas ar Apache vai vecu Nginx.
Kad Caddy labi der
Automātiskais HTTPS ir virsraksts, bet ikdienas ieguvums ir mazāk kustīgu daļu. Caddy klausās 80 un 443, novirza HTTP uz HTTPS un glabā sertifikātus savā datu katalogā. Jums joprojām vajag domēnu, kas norāda uz VPS. Jums joprojām vajag nesalauzt ACME (ugunsmūris 80/tcp, neviens cits process nezog :80). Aizstājējzīmes sertifikātiem vajag DNS sniedzēja moduli — tas ir garāks ceļš nekā viena resursdatora sertifikāts.
- Automātiska HTTP→HTTPS un sertifikāta atjaunošana
- Lasāms Caddyfile garu servera bloku vietā
- Spējīgs reversais starpnieks Node, Python, PHP-FPM ar papildu konfigurāciju vai Docker aizmugurēm
- HTTP/2 un moderni TLS noklusējumi bez šifru izklājlapas
- systemd vienība no oficiālās pakotnes
Prasības
Domēnam jāizšķiras uz šo VPS, pirms Caddy var pierādīt ACME HTTP-01. Ja DNS joprojām izplatās, Caddy izsniegšana neizdosies un mēģinās atkārtoti; tas izskatās pēc «Caddy ir salūzis», kad tas ir tikai DNS. Vispirms apturiet Apache vai Nginx, ja tie pārvalda 80/443.
- Ubuntu 22.04 vai 24.04
- Domēna A ieraksts uz VPS IP (un AAAA, ja izmantojat IPv6)
- 80. un 443. ports brīvs un atļauts ugunsmūrī
- Root vai sudo
1. solis: instalējiet Caddy no oficiālās krātuves
Neinstalējiet nejaušu vecu Caddy no noklusējuma Ubuntu universe, ja vēlaties aktuālu TLS un ACME uzvedību. Caddy projekts dokumentē apt avotu. Pēc instalācijas caddy lietotājs pastāv un pakalpojums ir iespējots.
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-pager2. solis: pirmais Caddyfile — statiska vietne
Noklusējuma Caddyfile ir /etc/caddy/Caddyfile. Aizstājiet to ar savu domēnu. Caddy mēģinās iegūt sertifikātu, tiklīdz konfigurācija ielādējas, ja resursdatora nosaukums nav localhost. Vietnes failus lieciet katalogā, ko caddy lietotājs var lasīt (bieži www-data stila atļaujas, bet pakotne izmanto lietotāju caddy).
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 -f3. solis: vietējās lietotnes reversais starpnieks
Ja Gunicorn, Node vai Docker klausās 127.0.0.1:8000, Caddy jābūt vienīgajam publiskajam procesam. reverse_proxy direktīva pārsūta Host un X-Forwarded-* galvenes lielākajai daļai lietotņu saprātīgi. Ja lietotne ģenerē absolūtus HTTP URL, lietotnē iestatiet trusted proxy / HTTPS karogus (Django SECURE_PROXY_SSL_HEADER, Express trust proxy utt.).
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
# }4. solis: ugunsmūris un systemd
Atļaujiet 80 un 443. Caddy vienība ir caddy.service; reload pietiek pēc Caddyfile labojumiem, ja process ir vesels. Ja maināt DNS spraudņa vides mainīgos, pilna restartēšana ir skaidrāka. Sertifikāti pēc noklusējuma dzīvo /var/lib/caddy/.local/share/caddy/ — iekļaujiet to ceļu dublējumos, ja rūp ātruma limiti pārinstalēšanas laikā.
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/5. solis: žurnāli, saspiešana un galvenes
Piekļuves žurnāli palīdz, kad bots dauza ceļu vai kad novēršat 404. Varat žurnalizēt pa vietnēm. Pievienojiet drošības galvenes, ja mitināt pārlūka lietotni; nekopējiet milzīgu galveņu paketi, nesaprotot HSTS (kad iestatāt garu max-age, pārlūki to atceras).
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 caddy6. solis: PHP un citi papildinājumi
Caddy var runāt ar PHP-FPM ar php_fastcgi direktīvu. Tas pietiek daudziem WordPress vai Laravel mitinājumiem, bet joprojām vajag instalētu php-fpm un sakrītošu ligzdas ceļu. Ja jau ir perfekta Nginx PHP konfigurācija, migrācija vienā vakarā ir izvēles — Caddy vairāk spīd reversajā starpniekā + statiskajā + automātiskajā TLS.
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-fpmMigrācija no Nginx bez negaidītiem dīkstāves pārsteigumiem
Apturiet Nginx pirms Caddy palaišanas, citādi tie cīnīsies par 80/443. Dienu iepriekš pazeminiet DNS TTL, ja pārvietojat arī IP. Testējiet ar curl --resolve, lai varētu trāpīt jaunajam VPS pirms A ieraksta maiņas. Nginx konfigurācijas nedēļu turiet git, ja vajadzēs atcelt.
- systemctl stop nginx && systemctl disable nginx
- Instalējiet Caddy, pārbaudiet Caddyfile, palaidiet Caddy
- curl -I --resolve example.com:443:NEW_IP https://example.com
- Tikai tad mainiet DNS, ja IP ir jauns
- Atkārtota izsniegšana ir automātiska; nepalaižiet arī Certbot pret to pašu resursdatora nosaukumu
Problēmu novēršana
ACME kļūmes gandrīz vienmēr ir DNS, ugunsmūris vai cits pakalpojums 80. portā. Caddy žurnāla rindas min tls.obtain. Ja vietne darbojas HTTP, bet ne HTTPS, izsniegšana nekad netika pabeigta. Ja redzat pārāk daudz sertifikātu, trāpījāt Let's Encrypt ātruma limitus — testējot izmantojiet staging CA, ne ražošanu.
- validate neizdodas: Caddyfile sintakse, trūkst iekavas
- permission denied on root: chown caddy vietnes katalogam
- bind: address already in use — ss -tulpn | grep -E ':80|:443'
- certificate timeout: dig +short domēnu no VPS, ufw allow 80
- 502 reverse_proxy: aizmugure nestrādā vai starpniekojāt uz localhost no konteinera tīkla nepareizi
Drošības piezīmes
Caddy TLS noklusējumi ir konservatīvi. Jūsu darbs ir lietotnes drošība un SSH. Neieslēdziet Caddy administratora API publiskā saskarnē. Noklusējuma administratora galapunkts ir vietējs; atstājiet to tā. Ja izmantojat Caddyfile no interneta, lasiet katru matcher — fragments, kas reverse_proxies /* uz iekšēju IP, var kļūt par atvērtu starpnieku.
- Neeksponējiet administratora API
- Turiet pakotni atjauninātu
- HSTS tikai tad, kad esat pārliecināti, ka HTTPS darbojas visiem resursdatora nosaukumiem
- Atdaliet testa un ražošanas resursdatora nosaukumus, lai aizsargātu ACME ātruma limitus
Padomi
- caddy fmt --overwrite /etc/caddy/Caddyfile saglabā failu lasāmu
- Izmantojiet import fragmentus, kad ir daudz līdzīgu vietņu
- Docker bieži ir caddy:alpine attēls ar piemontētu Caddyfile
- Aizstājējzīmes sertifikātiem vajag DNS moduli un API pilnvaru — aizsargājiet to pilnvaru
- Lasiet journalctl -u caddy pirms visa faila pārrakstīšanas
Caddy VPS ir: oficiāla pakotne, īss Caddyfile, 80/443 porti atvērti, DNS jau norāda uz serveri un systemd reload pēc labojumiem. Izmantojiet to kā statisku failu serveri vai reverso starpnieku priekšā Gunicorn, Node vai Docker. Automātiskais HTTPS darbojas, kad ACME var atbildēt 80. portā; ja izsniegšana neizdodas, labojiet DNS un portu konfliktus, pirms vainojat Caddy. Dublējiet /var/lib/caddy, ja bieži pārinstalējat.