User Registration
Allow users to create new accounts via the registration page.
Allow users to register using OAuth providers.
When both registration options are disabled, new users can only be created via invites or by administrators.
OAuth Configuration
Zipline supports OAuth authentication with Discord, GitHub, Google, and generic OIDC providers.OAuth Settings
Hide the local login form and only show OAuth buttons on the login page.
Disable OAuth registration, only allow existing users to login via OAuth.
Discord OAuth
Discord application client ID.
Discord application client secret.
Discord OAuth redirect URI. If not set, Zipline will auto-generate based on the request URL.
Comma-separated list of Discord user IDs that are allowed to authenticate. If empty, all users are allowed.
Comma-separated list of Discord user IDs that are explicitly denied authentication.
Discord Setup
- Go to Discord Developer Portal
- Create a new application
- Navigate to OAuth2 settings
- Add redirect URL:
https://your-domain.com/api/auth/oauth/discord - Copy Client ID and Client Secret
- Set the environment variables
GitHub OAuth
GitHub OAuth application client ID.
GitHub OAuth application client secret.
GitHub OAuth redirect URI. If not set, auto-generated.
GitHub Setup
- Go to GitHub Developer Settings
- Create a new OAuth App
- Set Homepage URL to your Zipline instance
- Set Authorization callback URL:
https://your-domain.com/api/auth/oauth/github - Copy Client ID and generate a Client Secret
- Set the environment variables
Google OAuth
Google OAuth 2.0 client ID.
Google OAuth 2.0 client secret.
Google OAuth redirect URI. If not set, auto-generated.
Google Setup
- Go to Google Cloud Console
- Create a new project or select existing
- Enable Google+ API
- Go to Credentials → Create OAuth 2.0 Client ID
- Set application type to “Web application”
- Add authorized redirect URI:
https://your-domain.com/api/auth/oauth/google - Copy Client ID and Client Secret
- Set the environment variables
Generic OIDC Provider
For custom OpenID Connect providers (Keycloak, Auth0, Okta, etc.).OIDC client ID.
OIDC client secret.
OIDC authorization endpoint URL.
OIDC token endpoint URL.
OIDC userinfo endpoint URL.
OIDC redirect URI. If not set, auto-generated.
OIDC Setup Examples
Keycloak
Keycloak
Auth0
Auth0
Authentik
Authentik
Multi-Factor Authentication (MFA)
Zipline supports two types of MFA: TOTP (Time-based One-Time Password) and Passkeys (WebAuthn).TOTP (2FA)
Enable TOTP-based two-factor authentication.
Issuer name displayed in authenticator apps.
- Navigate to their account settings
- Enable two-factor authentication
- Scan the QR code with an authenticator app (Google Authenticator, Authy, etc.)
- Enter the 6-digit code to confirm setup
TOTP codes are generated using the standard TOTP algorithm (RFC 6238) and are compatible with all major authenticator apps.
Passkeys (WebAuthn)
Enable passkey authentication using WebAuthn.
Relying Party ID for WebAuthn. Should be your domain name.
Origin URL for WebAuthn. Must match the URL users access Zipline from.
Passkey Setup Example
- Hardware security keys (YubiKey, etc.)
- Platform authenticators (Windows Hello, Touch ID, Face ID)
- Mobile device biometrics
Invite System
When user registration is disabled, the invite system controls access.Enable the invite system.
Length of generated invite codes.
- Custom expiration dates
- Maximum use limits
- Single-use or multi-use codes
Security Best Practices
OAuth Security
OAuth Security
- Always use HTTPS for production deployments
- Keep client secrets secure (use environment variables, not config files)
- Regularly rotate OAuth client secrets
- Use
OAUTH_DISCORD_ALLOWED_IDSto restrict access when needed - Set specific redirect URIs in provider settings (don’t use wildcards)
MFA Recommendations
MFA Recommendations
- Enable at least one MFA method for administrators
- Encourage users to enable 2FA on their accounts
- Keep backup codes secure
- Test passkey configuration in multiple browsers
Registration Control
Registration Control
- Disable public registration for private instances
- Use invite system for controlled access
- Enable
OAUTH_LOGIN_ONLYto prevent OAuth-based registration - Monitor new user registrations
Troubleshooting
OAuth Issues
Error: “redirect_uri_mismatch”- Ensure redirect URI in provider settings matches exactly
- Check for trailing slashes
- Verify HTTPS vs HTTP
- Client ID or secret is incorrect
- Client may be disabled in provider settings
- Check
FEATURES_OAUTH_REGISTRATION=true - Verify
OAUTH_LOGIN_ONLY=false
MFA Issues
TOTP codes not working- Ensure server time is synchronized (use NTP)
- Check that user’s device time is correct
- Verify the issuer name matches
- Verify
MFA_PASSKEYS_ENABLED=true - Check
MFA_PASSKEYS_RP_IDmatches your domain - Ensure
MFA_PASSKEYS_ORIGINincludes protocol (https://) - Browser must support WebAuthn
Next Steps
Security Configuration
Rate limiting and security settings
Customization
Website branding and themes