# Host Caddy (root service). Place BEFORE catch-all reverse_proxy in each site block. # # CRITICAL: bare paths (no trailing slash) must redirect to slash, or the request # falls through to merchant/bank/exchange API → Taler JSON code 21. # # CORRECT (site-level named matcher — preferred): # @mon_bare path /monitoring /monitoring_err \ # /taler-monitoring-surface /taler-monitoring-surface_err \ # /taler-monitoring-aptdeploy /taler-monitoring-aptdeploy_err # redir @mon_bare {path}/ 302 # # ALSO OK inside handle (matcher must be `*`): # handle /taler-monitoring-surface { # redir * /taler-monitoring-surface/ 302 # } # # WRONG (Caddy footgun — causes merchant code 21 on bare URLs): # redir /taler-monitoring-surface/ 302 # → parsed as matcher=/taler-monitoring-surface/ to="302" # → Location: 302, or no-op then fallthrough to reverse_proxy # # root must be the *host directory* (…/monitoring-sites/{host}), and the # file_server matcher a path *prefix* (`/monitoring*`), so # /monitoring/index.html maps to {root}/monitoring/index.html. # # Disk layout: # /var/www/monitoring-sites/{host}/monitoring/index.html # /var/www/monitoring-sites/taler.hacktivism.ch/taler-monitoring-*/index.html # # Live apply on koopa (absolute path — ~ as root is /root): # sudo ${APPLY_MONITORING_LIVE} # Runtime-only (no sudo; hernani admin API): # curl -g -X POST http://[::1]:2019/load -H 'Content-Type: text/caddyfile' \ # --data-binary @${KOOPA_CADDY_DIR}/Caddyfile # --- only inside taler.hacktivism.ch { ... } --- @mon_bare path /monitoring /monitoring_err \ /taler-monitoring-surface /taler-monitoring-surface_err \ /taler-monitoring-aptdeploy /taler-monitoring-aptdeploy_err \ /taler-monitoring-mail /taler-monitoring-mail_err \ /taler-monitoring-mattermost /taler-monitoring-mattermost_err redir @mon_bare {path}/ 302 handle /taler-monitoring-surface_err* { root * /var/www/monitoring-sites/taler.hacktivism.ch file_server } handle /taler-monitoring-surface* { root * /var/www/monitoring-sites/taler.hacktivism.ch file_server } handle /taler-monitoring-aptdeploy_err* { root * /var/www/monitoring-sites/taler.hacktivism.ch file_server } handle /taler-monitoring-aptdeploy* { root * /var/www/monitoring-sites/taler.hacktivism.ch file_server } # --- bank + exchange + taler (each site block; set root host dir) --- @mon_bare path /monitoring /monitoring_err redir @mon_bare {path}/ 302 handle /monitoring_err* { root * /var/www/monitoring-sites/{host} file_server } handle /monitoring* { root * /var/www/monitoring-sites/{host} file_server }