The GrampsWeb SPA has <base href="/"> hardcoded at build time, causing assets to load from / instead of /ahnenforschung/ when behind a reverse proxy. Instead of relying on nginx sub_filter (which may not be available), patch the HTML at container startup via GRAMPSWEB_SUBPATH env var. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>