# ============================================================================== # KoalaSync - Production Caddy Configuration Example # ============================================================================== # This file provides examples of both a lightweight "Simple" configuration # and a production-hardened "Advanced" configuration. # Replace domains, reverse proxy locations, and directories with your actual setup. # ------------------------------------------------------------------------------ # OPTION A: Simple Configuration # ------------------------------------------------------------------------------ # Minimal configuration that serves the static website, enables gzip compression, # supports extension-less Clean URLs, and reverse proxies the relay server. # sync.koalastuff.net { # root * /var/www/koalasync/website/www # encode zstd gzip # # # Clean URLs support (resolves /join to join.html, etc.) # try_files {path} {path}.html {path}/ # file_server # } # # syncserver.koalastuff.net { # reverse_proxy localhost:3000 # } # ------------------------------------------------------------------------------ # OPTION B: Advanced Configuration (Production-Hardened) # ------------------------------------------------------------------------------ # Highly secure, optimized configuration using advanced HTTP security headers, # aggressive static assets caching, server signature concealment, and strict # hardware permission access policies. (security_headers) { header { # Enable HTTP Strict Transport Security (HSTS) Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # Prevent clickjacking attacks (Sameorigin) X-Frame-Options "SAMEORIGIN" # Prevent MIME-sniffing X-Content-Type-Options "nosniff" # Enable browser XSS protection X-XSS-Protection "1; mode=block" # Control referrer information Referrer-Policy "strict-origin-when-cross-origin" # Hide Caddy server stamp signature -Server } } sync.koalastuff.net { encode zstd gzip root * /var/www/koalasync/website/www # Clean URLs: Resolves paths without .html in the URL try_files {path} {path}.html {path}/ file_server # Static Caching for high-performance PageSpeed (1 year with validation) @static { file path *.ico *.css *.js *.png *.svg *.webp *.avif } header @static Cache-Control "public, max-age=31536000, must-revalidate" # Security Headers & Content Security Policy (CSP) import security_headers header { # CSP hardened with base-uri and form-action limits Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';" # Modern Permissions Policy (blocks browser hardware access for enhanced privacy) Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()" } } syncserver.koalastuff.net { import security_headers encode zstd gzip reverse_proxy KoalaSync:3000 }