With VibeNVR v1.31.0, I just shipped native OAuth 2.0 + OpenID Connect support for my open-source self-hosted NVR. Here's a quick overview of how it works and what decisions I made along the way.
Background
VibeNVR is a free, open-source, self-hosted Network Video Recorder — simple to deploy via Docker, no cloud required. In v1.31.0, the headline feature is first-class SSO support via OIDC.
What I implemented
Zero-trust subject mapping
Rather than trusting the IdP blindly, VibeNVR uses a strict subject mapping model: each local VibeNVR account must be explicitly linked to an IdP sub claim. This means even if someone authenticates successfully with your IdP, they can't access VibeNVR unless a corresponding local account exists.
SSO auto-redirect
When OIDC is configured, the local login screen is bypassed entirely. Users land directly on the IdP login page — no separate VibeNVR credentials to manage.
RP-initiated logout
Logging out of VibeNVR sends an end_session request to the IdP, cleanly terminating the session there too. No dangling sessions.
Compatible IdPs
Any OIDC-compliant provider works: Authentik, Keycloak, Authelia, and others.
Links
- GitHub: https://github.com/spupuz/VibeNVR
- Website & docs: https://www.vibenvr.org
- Release notes: https://github.com/spupuz/VibeNVR/releases/tag/v1.31.0
Happy to answer questions about the implementation!
Top comments (0)