DocsOperationSecurity
Security
What vuzon does to keep a self-hosted panel safe, what is left to you, and how to report a vulnerability privately.
What vuzon does
Credentials and sessions
- The panel password is stored as a scrypt hash in the data volume. There is no
AUTH_PASSvariable and it never exists in plain text. - Credentials are compared in constant time; login is rate-limited to 10 attempts / 15 min.
- Logging out from a live session invalidates the cookie server-side, not just the browser copy, and the revocation is written to disk so it survives a restart. A logout sent without a valid session only clears the caller’s own cookie — it cannot be used to sign everyone else out.
- Sessions expire 7 days after sign-in, enforced by the server on every request. The cookie’s
maxAgeonly asks the browser to forget it; a cookie copied off the wire stops working on its own.
The Cloudflare token
- The token is never logged and never returned to the browser.
- Cloudflare’s error text is logged server-side only. Upstream 401/403 are normalised to 502, so an API-permission problem can’t be mistaken for your own session expiring.
The HTTP surface
- Every API response ships a strict CSP,
nosniff,Referrer-PolicyandCache-Control: no-store. - vuzon refuses to start with an obviously unsafe configuration — a template
CF_API_TOKEN, an unwritable data directory — instead of coming up in a broken state.
The container
- Runs as a non-root user, read-only, with every capability dropped — see docker-compose.yml.
What is left to you
- Use an API token with least privilege — one zone, one account — never the Global API Key. See API token.
- Choose a panel password of at least 12 characters, and finish the setup wizard immediately — until you do, the panel has no owner. See Initial setup.
- If the panel is reachable from the internet, serve it over TLS and set
COOKIE_SECURE=1. See Reverse proxy & TLS. - Back up the
vuzon-datavolume and treat it as secret — see Backups.
vuzon is built for one person on a homelab or private network: a single account, no roles, no user management. It is not a multi-tenant deployment, and pointing it at the open internet without TLS and a reverse proxy is not a supported setup.
Reporting a vulnerability
Do not open a public issue. Report it privately via GitHub Security Advisories.