{ } {$DOMAIN} { root * /srv encode gzip handle { try_files {path} /index.html file_server } header /assets/*.js { Service-Worker-Allowed "/" } handle_path /3m/* { reverse_proxy 3m:8001 } handle_path /chat { reverse_proxy ergo:8097 } handle_path /voice { reverse_proxy grumble:8443 } handle_path /video/* { rewrite /video / reverse_proxy mediamtx:8889 } } {$HOST_DOMAIN} { header Access-Control-Allow-Origin * header Access-Control-Allow-Origin i.cef.icu header Access-Control-Allow-Origin cef.icu @uploads { path_regexp hash ^/uploads/(.*)/.* } rewrite @uploads /uploads/{re.hash.1} respond /uploads/ 403 respond /pfp/ 403 handle_path /embed/* { reverse_proxy imagor:8000 header -Cache-Control header -Expires header Cache-Control "public, max-age=604800" } reverse_proxy minio:9000 { @error status 500 404 handle_response @error { root * /srv try_files /assets/theme-cef/blankIcon.png file_server } } }