diff --git a/containers/caddy/Caddyfile b/containers/caddy/Caddyfile index 81906fe..f51d8c9 100644 --- a/containers/caddy/Caddyfile +++ b/containers/caddy/Caddyfile @@ -2,6 +2,22 @@ email [EMAIL] } +# Snippet riutilizzabile: mostra errorr.html quando il backend non risponde +# (502/503/504). Va importato dentro il blocco di ogni sito che fa reverse_proxy. +(gateway_error) { + handle_errors { + @gateway_error expression `{http.error.status_code} in [502, 503, 504]` + handle @gateway_error { + root * /etc/caddy/html + rewrite * /error.html + file_server + } + handle { + respond "{http.error.status_code} {http.error.status_text}" {http.error.status_code} + } + } +} + # Ogni servizio ha il proprio file in /srv/containers/caddy/sites/*.caddy # (sorgente in git: containers//.caddy) import /etc/caddy/sites/*.caddy diff --git a/containers/caddy/caddy.container b/containers/caddy/caddy.container index d348118..86bbbed 100644 --- a/containers/caddy/caddy.container +++ b/containers/caddy/caddy.container @@ -15,9 +15,10 @@ Image=docker.io/library/caddy:latest #AutoUpdate=registry Network=internal.network -# mkdir -p /srv/containers/caddy/{sites,data,config} +# mkdir -p /srv/containers/caddy/{sites,data,html,config} Volume=/srv/containers/caddy/Caddyfile:/etc/caddy/Caddyfile:ro Volume=/srv/containers/caddy/sites:/etc/caddy/sites:ro +Volume=/srv/containers/caddy/html:/etc/caddy/html:ro # Persistenti: qui Caddy tiene i certificati Let's Encrypt e lo stato ACME, # NON vanno cancellati o si perdono i certificati (rate limit LE in caso di richieste ripetute) diff --git a/containers/caddy/error.html b/containers/caddy/error.html new file mode 100644 index 0000000..a606276 --- /dev/null +++ b/containers/caddy/error.html @@ -0,0 +1,86 @@ + + + + + + + + + + + Update in progress... + + + + + +
+
+ + +

+ Update in progress... + +

+ +

+ We are updating the software to the new version. Please try again in a few minutes.
If this screen has been present for some time, please contact us. + +

+
+
+ + + \ No newline at end of file diff --git a/containers/gitea/gitea.caddy b/containers/gitea/gitea.caddy index d9dbff1..0836f6e 100644 --- a/containers/gitea/gitea.caddy +++ b/containers/gitea/gitea.caddy @@ -1,4 +1,6 @@ code.[DOMAIN] { + import gateway_error + request_body { max_size 1GB } diff --git a/containers/llamacpp/llamacpp.caddy b/containers/llamacpp/llamacpp.caddy index 3bf9a9c..59f9c19 100644 --- a/containers/llamacpp/llamacpp.caddy +++ b/containers/llamacpp/llamacpp.caddy @@ -1,4 +1,6 @@ [domain] { + import gateway_error + # Security Headers header { Strict-Transport-Security "max-age=31536000; includeSubDomains" diff --git a/containers/mattermost/mattermost.caddy b/containers/mattermost/mattermost.caddy index 127852e..d6a4f6f 100644 --- a/containers/mattermost/mattermost.caddy +++ b/containers/mattermost/mattermost.caddy @@ -1,4 +1,6 @@ mattermost.example.com { + import gateway_error + request_body { max_size 50MB } diff --git a/containers/navidrome/navidrome.caddy b/containers/navidrome/navidrome.caddy index 6e2d96c..5bd218c 100644 --- a/containers/navidrome/navidrome.caddy +++ b/containers/navidrome/navidrome.caddy @@ -1,4 +1,6 @@ music.[DOMAIN] { + import gateway_error + request_body { max_size 50MB } diff --git a/containers/nextcloud/collaboraoffice.caddy b/containers/nextcloud/collaboraoffice.caddy index 6ac1a9a..8730ead 100644 --- a/containers/nextcloud/collaboraoffice.caddy +++ b/containers/nextcloud/collaboraoffice.caddy @@ -1,4 +1,6 @@ office.[DOMAIN] { + import gateway_error + @browser path /browser* reverse_proxy @browser collaboraoffice:9980 diff --git a/containers/nextcloud/nextcloud.caddy b/containers/nextcloud/nextcloud.caddy index b01d642..9ee3cb2 100644 --- a/containers/nextcloud/nextcloud.caddy +++ b/containers/nextcloud/nextcloud.caddy @@ -1,4 +1,6 @@ cloud.[DOMAIN] { + import gateway_error + # Warning HSTS Nextcloud header Strict-Transport-Security "max-age=15552000; includeSubDomains" diff --git a/containers/odoo/odoo.caddy b/containers/odoo/odoo.caddy index 4d0e20f..815b620 100644 --- a/containers/odoo/odoo.caddy +++ b/containers/odoo/odoo.caddy @@ -1,4 +1,6 @@ odoo.[DOMAIN] { + import gateway_error + # Upload di allegati/import di grandi dimensioni request_body { max_size 200MB diff --git a/containers/qwentts/qwentts.caddy b/containers/qwentts/qwentts.caddy index b240387..1c0e113 100644 --- a/containers/qwentts/qwentts.caddy +++ b/containers/qwentts/qwentts.caddy @@ -1,4 +1,6 @@ qwentts.example.com { + import gateway_error + request_body { max_size 100MB } diff --git a/containers/vibevoice/vibevoice.caddy b/containers/vibevoice/vibevoice.caddy index 113af82..0e0ea06 100644 --- a/containers/vibevoice/vibevoice.caddy +++ b/containers/vibevoice/vibevoice.caddy @@ -1,4 +1,6 @@ vibevoice.example.com { + import gateway_error + request_body { max_size 100MB }