Files
gitea/docs/reverse-proxy-caddy.md

1.4 KiB

Reverse proxy Caddy

Caddyfile attuale:

your-domain.com {
    reverse_proxy gitea:3000
}

Caddy gestisce da solo certificato Let's Encrypt, rinnovi, redirect HTTP→HTTPS e WebSocket (/-/ws, aggiornamenti in tempo reale) con reverse_proxy. Passa Host e X-Forwarded-Proto correttamente.

Requisiti in Gitea

[server]
ROOT_URL = https://your-domain.com/
DOMAIN   = your-domain.com
[security]
REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = 172.16.0.0/12   ; subnet rete docker compose (verificare)

Senza trusted proxies corretto Gitea (e fail2ban/log) vede l'IP del container Caddy invece del client.

Sub-path (sconsigliato)

git.example.com {
    route /git/* {
        uri strip_prefix /git
        reverse_proxy gitea:3000
    }
}

ROOT_URL = https://git.example.com/git/. Il proxy non deve decodificare %2F. Il registry container richiede /v2 alla radice del dominio.

Comandi

docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile
docker compose logs caddy

Il certificato non viene emesso se 80/443 non sono raggiungibili o il DNS non punta all'IP pubblico. Per test senza rate limit, usare in Caddyfile la direttiva globale { acme_ca https://acme-staging-v02.api.letsencrypt.org/directory }.

Limiti upload

Caddy non limita il body di default; i limiti sono in Gitea ([attachment] MAX_SIZE, [repository.upload], [packages] LIMIT_SIZE_*).