Problem
Caddy's external-access protection on tilsit.vip uses the basic_auth directive, which triggers the browser's native 401 pop-up. Password managers (1Password in particular) cannot auto-fill into that pop-up, so every remote session requires manually typing the credential.
Proposed solution
Rebuild the custom Caddy binary with the caddy-security plugin and switch the external block from basic_auth to a form-based authenticate / authorize flow. Session via JWT cookie. Single user, bcrypt in a local store, no MFA. The LAN-bypass matcher stays unchanged.
Implementation plan
Full scoping in docs/plans/2026-04-19-caddy-forms-auth.md — 8 tasks, ~5–6 hours wall-clock, with rollback steps.
Merged via #129.
Deliberately out of scope
- Multi-user (single user for now)
- MFA / TOTP
- OIDC / OAuth federation
- Password rotation UX
Each of these slots into caddy-security later without rearchitecting.
Problem
Caddy's external-access protection on
tilsit.vipuses thebasic_authdirective, which triggers the browser's native 401 pop-up. Password managers (1Password in particular) cannot auto-fill into that pop-up, so every remote session requires manually typing the credential.Proposed solution
Rebuild the custom Caddy binary with the
caddy-securityplugin and switch the external block frombasic_authto a form-basedauthenticate/authorizeflow. Session via JWT cookie. Single user, bcrypt in a local store, no MFA. The LAN-bypass matcher stays unchanged.Implementation plan
Full scoping in
docs/plans/2026-04-19-caddy-forms-auth.md— 8 tasks, ~5–6 hours wall-clock, with rollback steps.Merged via #129.
Deliberately out of scope
Each of these slots into
caddy-securitylater without rearchitecting.