caddy

Caddy používám jako hlavní vstupní bránu (web server a reverse proxy) pro všechny služby běžící na ctrlf.cz. Jeho hlavní předností je automatická správa HTTPS certifikátů (přes Let's Encrypt), jednoduchá syntaxe a vysoký výkon.

Caddy automaticky žádá o certifikáty pro všechny definované domény, obnovuje je a přesměrovává HTTP provoz na HTTPS, aniž by to bylo nutné explicitně konfigurovat u každé domény zvlášť.

Reverse Proxy

Většina služeb je konfigurována v režimu reverse proxy. To znamená, že Caddy přijme požadavek z internetu (např. na pocket-id.ctrlf.cz) a přepošle jej na konkrétní port na localhostu (např. localhost:1411), kde běží samotná aplikace (často v Dockeru).
Uživatel tak komunikuje pouze s Caddy přes standardní port 443 a o interních portech služeb neví.

Pokročilé směrování (Route & Handle)

U složitějších aplikací, jako je například dashboard (dash.ctrlf.cz) nebo video streamy, je potřeba specificky směrovat různé typy požadavků.

Autentizace a zabezpečení

Forward Auth (TinyAuth)

Pro služby, které nemají vlastní přihlašování nebo je potřeba je extra zabezpečit, používám centralizovanou autentizaci pomocí snippetu (tinyauth_forwarder).
Tento snippet využívá direktivu forward_auth, která každý požadavek nejprve pošle na ověřovací službu (běžící na portu 7147). Pokud uživatel není přihlášen, je přesměrován na login. Pokud přihlášen je, Caddy předá požadavek do cílové aplikace i s hlavičkami identifikujícími uživatele (X-Auth-User).
Toto je aplikováno například na dockge.ctrlf.cz.

Omezení na lokální síť (@local)

Některé služby (arr-stack: Radarr, Sonarr, Prowlarr atd.) jsou sice definované na veřejné doméně, ale přístup k nim je omezen pouze pro zařízení uvnitř lokální sítě (např. přes VPN/Tailscale).
Definice @local kontroluje remote_ip (rozsah 10.0.0.0/24).

PHP aplikace (Nextcloud)

Pro hostování PHP aplikací, jako je Nextcloud, Caddy neslouží jen jako proxy, ale komunikuje přímo s PHP procesem pomocí protokolu FastCGI.