diff --git a/docker/showerloop/Caddyfile.default.template b/docker/showerloop/Caddyfile.default.template index 42ad00c..09ec392 100644 --- a/docker/showerloop/Caddyfile.default.template +++ b/docker/showerloop/Caddyfile.default.template @@ -13,6 +13,14 @@ # Enable compression for text-based resources encode gzip zstd + # MIME type overrides for HLS streaming + mime { + # HLS playlist files + .m3u8 application/x-mpegURL + # HLS segment files + .ts video/MP2T + } + # Security headers header { # Cross-Origin headers @@ -38,8 +46,8 @@ # Frame Options (prevents clickjacking) X-Frame-Options "SAMEORIGIN" - # Frame ancestors (prevents embedding in other sites) - Content-Security-Policy "frame-ancestors 'none'" + # Update CSP to allow media content, scripts, and blob URLs + Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; media-src 'self' blob:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; block-all-mixed-content;" # Remove Server header -Server @@ -67,6 +75,14 @@ } header @htmlFiles Cache-Control "public, max-age=86400, must-revalidate" + # HLS file handling + @hlsFiles { + path *.m3u8 *.ts + method GET HEAD + } + header @hlsFiles Cache-Control "public, max-age=300" + header @hlsFiles Access-Control-Allow-Origin "*" + # Static file server file_server { root /srv # Root directory for serving static files diff --git a/docker/showerloop/public/components/index.html b/docker/showerloop/public/components/index.html index df2468a..0719b99 100644 --- a/docker/showerloop/public/components/index.html +++ b/docker/showerloop/public/components/index.html @@ -3,7 +3,7 @@ import * as utils from '/js/utils.modern.min.js'; window.utilsModule = utils; -