-
Notifications
You must be signed in to change notification settings - Fork 0
Caddy
Reverse proxy, která vyřídí HTTPS sama a bez konfigurace. Pro homelab je to nejrozumnější volba a stránka o ní je krátká, protože není o čem psát.
Caddyfile:
nas.example.cz {
reverse_proxy 127.0.0.1:5000
}
To je celé. Caddy si při startu vyžádá certifikát od Let's Encrypt, nastaví přesměrování z HTTP na HTTPS, poskládá správný řetěz certifikátů, nastaví hlavičky X-Forwarded-* a zapne WebSockety.
Srovnej to s ekvivalentem v nginxu. To je ten důvod.
nas.example.cz {
reverse_proxy 127.0.0.1:5000
}
foto.example.cz {
reverse_proxy 127.0.0.1:2283
request_body {
max_size 50GB
}
}
home.example.cz {
reverse_proxy 127.0.0.1:8123
}
git.example.cz {
reverse_proxy 127.0.0.1:3000
}
services:
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp" # HTTP/3
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
networks: [web]
volumes:
caddy_data:
caddy_config:Svazek caddy_data musí být trvalý. Jsou v něm certifikáty. Když ho ztratíš při každém restartu, budeš si o certifikáty žádat pořád dokola a Let's Encrypt tě po pár dnech omezí. Viz certifikáty.
V Compose se na ostatní služby odkazuješ jménem kontejneru:
foto.example.cz {
reverse_proxy immich:2283
}
Souvislosti v sítích v Dockeru.
Přesměrování:
example.cz {
redir https://www.example.cz{uri} permanent
}
Statické soubory:
example.cz {
root * /var/www/example
file_server
encode gzip zstd
}
Bezpečnostní hlavičky:
nas.example.cz {
reverse_proxy 127.0.0.1:5000
header {
Strict-Transport-Security "max-age=31536000"
X-Content-Type-Options nosniff
X-Frame-Options SAMEORIGIN
-Server
}
}
To -Server hlavičku odstraní.
Omezení podle IP:
proxmox.example.cz {
@nepovolene not remote_ip 192.168.1.0/24 10.10.0.0/24
respond @nepovolene "Nope" 403
reverse_proxy 127.0.0.1:8006
}
Základní přihlášení:
tajne.example.cz {
basic_auth {
martin $2a$14$hashhashhash
}
reverse_proxy 127.0.0.1:9000
}
Hash vygeneruješ přes caddy hash-password.
Vnitřní služba s vlastním certifikátem:
router.doma {
tls internal
reverse_proxy 192.168.1.1
}
tls internal vytvoří vlastní certifikační autoritu. Pro vnitřní služby, kde nemáš veřejnou doménu.
Pro *.example.cz potřebuješ DNS-01 ověření, které vyžaduje sestavení Caddy s pluginem pro tvého DNS poskytovatele:
FROM caddy:2-builder AS builder
RUN xcaddy build --with github.com/caddy-dns/cloudflare
FROM caddy:2
COPY --from=builder /usr/bin/caddy /usr/bin/caddy*.example.cz {
tls {
dns cloudflare {env.CF_API_TOKEN}
}
@nas host nas.example.cz
handle @nas {
reverse_proxy 127.0.0.1:5000
}
@foto host foto.example.cz
handle @foto {
reverse_proxy 127.0.0.1:2283
}
}
Podrobněji o rozdílu mezi HTTP-01 a DNS-01 v certifikátech.
caddy validate --config /etc/caddy/Caddyfile
caddy fmt --overwrite /etc/caddy/Caddyfile
systemctl reload caddy
journalctl -u caddy -f
docker compose logs -f caddy| Problém | Příčina |
|---|---|
| Certifikát se nevydá | port 80 není dostupný zvenku, nebo DNS nesměřuje sem |
502 |
služba za proxy neběží, nebo špatné jméno kontejneru |
| Po restartu nový certifikát | svazek /data není trvalý |
| Wildcard nefunguje | chybí DNS plugin, HTTP-01 wildcard neumí |
Když potřebuješ jemné ladění výkonu, exotické moduly, nebo když už máš nginx konfiguraci, kterou nechceš přepisovat. Pro všechno ostatní v homelabu je Caddy méně práce a méně chyb.
Našel jsi chybu nebo něco chybí? Založ issue nebo pošli pull request. — Psáno 2026, licence CC BY-SA 4.0
Základy
- Cesta paketu
- Vrstvy a zapouzdření
- MAC, ARP a přepínání
- Prefixy a masky
- Směrování
- DHCP a DNS
- Porty a spojení
- NAT a port forwarding
Domácí síť
IPv6
Linux firewall
TLS a reverse proxy
- TLS a HTTPS
- HTTP, QUIC a WebSocket
- Reverse proxy
- Caddy
- Nginx
- Traefik
- Certifikáty a Let's Encrypt
- Vlastní certifikační autorita
Kryptografie
- Stavební kameny
- Veřejný a soukromý klíč
- Diffie-Hellman
- Hashe, HMAC a podpisy
- Náhodnost a entropie
- TLS handshake
- Postkvantová kryptografie
- Šifrování disků a souborů
Virtualizace a kontejnery
Diagnostika
Vzdálený přístup
Provoz a bezpečnost
Praxe