Password, optional Google, and WebAuthn
Use strong passwords, enable security-key second factor, and register a spare key. Google OAuth is optional and must use the exact deployed callback URL.
Security is a shared boundary
Keel includes application controls for authentication, authorization, browser hardening, and backups. A self-hosted deployment is still only as private as its machine, network, HTTPS configuration, updates, and recovery plan.
Use strong passwords, enable security-key second factor, and register a spare key. Google OAuth is optional and must use the exact deployed callback URL.
The instance owner controls server-wide settings. Workspace roles govern content. Public deployments should set an email allowlist and disable sign-ups in environment configuration.
Keel sends a content security policy, framing protections, no-sniff rules, limited browser permissions, and private or no-store caching for user-specific routes.
Set a backup passphrase, keep it outside the Keel host, store a copy off-machine, and prove that a separate install can restore it.
Before exposing Keel
Do not publish an open registration page and promise to lock it down later. Configure the intended owner and allowed accounts before the first public request reaches the server.
Use localhost for local work or a real HTTPS origin for network use. WebAuthn and secure session cookies depend on it.
Set the owner email, allowed emails, and disabled sign-ups in the environment. Treat those settings as deployment secrets and policy.
Enable proxy trust only when a reverse proxy you control sets the forwarding headers. Incorrect trust can defeat per-address limits.
Watch releases, update dependencies and hosts, and test recovery. A passing health endpoint is not a recovery plan.
Use GitHub private vulnerability reporting. Include the affected version, deployment type, reproduction steps, impact, and a safe proof of concept. Never attach real notes, passwords, tokens, passphrases, databases, or private deployment addresses.