Self-hosted Bitwarden-compatible password manager. Vaultwarden is a lightweight Rust implementation of
the Bitwarden server API, compatible with all official Bitwarden clients (iOS, Android, browser extensions,
desktop apps). Supports SQLite, PostgreSQL, and MySQL backends.
Set domain before creating any user accounts
Vaultwarden 1.33+ crashes at startup if domain is empty. Even when the server starts, leaving domain unset breaks
WebSocket notifications, attachment URLs, and all email links (invites, 2FA, password reset). Always configure
domain with your full public HTTPS URL before first use. When that URL includes a path, the chart automatically
prefixes startup, readiness, and liveness probe paths with it.
Vaultwarden 1.37.3 compatibility update
Vaultwarden 1.37.0 fixes security advisories covering icon-endpoint SSRF, cross-organization access, organization
policy and import authorization, Send access counts, and unauthenticated WebSocket flooding. It is also required for
Bitwarden clients 2026.7.0 and newer. HelmForge pins 1.37.3, retaining compatibility with Bitwarden clients 2026.8.0
and newer and adding password-change, authentication and database migration fixes. Upgrade older deployments.
Key Features
Bitwarden compatible — works with all official Bitwarden clients and browser extensions
Multiple database backends — SQLite (default), PostgreSQL, or MySQL
Database auto-detection — database.mode: auto selects backend by configuration precedence
Argon2 admin token — hardened admin panel with Argon2 PHC token support
Signups disabled by default — new registrations blocked until explicitly enabled
SMTP integration — email for invites, 2FA codes, and password reset
NetworkPolicy — optional ingress/egress policy for network isolation
S3 backup — supports SQLite tar, pg_dump, and mysqldump based on active backend
Use an Argon2 PHC hash for the admin token in production
Setting admin.token to a plain text string works but exposes the token via bcrypt-equivalent checks.
Argon2 is significantly more secure. Generate one using the container itself:
docker run --rm -it vaultwarden/server:1.37.3 /vaultwarden hash# or with argon2 CLI:echo -n 'your-password' | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
Store the resulting $argon2id$... string in admin.token or in a Kubernetes Secret via
admin.existingSecret.
Configuration Reference
Core
Parameter
Type
Default
Description
nameOverride
string
""
Override the chart name.
fullnameOverride
string
""
Override the full release name.
commonLabels
object
{}
Extra labels added to all resources.
clusterDomain
string
cluster.local
Kubernetes cluster domain.
domain
string
""
Required. Public HTTPS URL for Vaultwarden.
Image
Parameter
Type
Default
Description
image.repository
string
docker.io/vaultwarden/server
Vaultwarden container image.
image.tag
string
"1.37.3"
Image tag.
image.pullPolicy
string
IfNotPresent
Image pull policy.
imagePullSecrets
array
[]
Pull secrets for private registries.
Vaultwarden Settings
Parameter
Type
Default
Description
vaultwarden.signupsAllowed
boolean
false
Allow new user self-registration. Disabled by default.
vaultwarden.signupsVerify
boolean
false
Require email verification for new signups.
vaultwarden.signupsDomainsWhitelist
array
[]
Restrict signups to specific email domains when signupsAllowed: false.
vaultwarden.invitationsAllowed
boolean
true
Allow admin to invite users by email.
vaultwarden.invitationOrgName
string
Vaultwarden
Organization name shown in invitation emails.
vaultwarden.invitationExpirationHours
integer
120
Hours before invite and verification tokens expire.
vaultwarden.sendsAllowed
boolean
true
Allow Bitwarden Send file and text sharing.
vaultwarden.emergencyAccessAllowed
boolean
true
Allow emergency access features.
vaultwarden.emailChangeAllowed
boolean
true
Allow users to change their email addresses.
vaultwarden.orgEventsEnabled
boolean
false
Enable organization event logging.
vaultwarden.orgCreationUsers
string
""
Who may create organizations: "" (all), "none", or comma-separated emails.
vaultwarden.passwordIterations
integer
600000
Server-side PBKDF2 iterations for password hashing.
vaultwarden.passwordHintsAllowed
boolean
true
Allow users to set password hints.
vaultwarden.showPasswordHint
boolean
false
Show hints on the login page (avoid if SMTP is configured).
vaultwarden.websocket.enabled
boolean
true
Enable WebSocket notifications for real-time vault sync.
vaultwarden.logLevel
string
info
Log verbosity.
vaultwarden.proxy.ipHeader
string
X-Real-IP
Header used to identify the real client IP behind a reverse proxy.
vaultwarden.proxy.trustedProxies
string
local
Peers allowed to supply the configured client IP header.
vaultwarden.rateLimit.unauthenticated.seconds
integer
60
Average seconds between protected unauthenticated requests from one IP.
vaultwarden.rateLimit.unauthenticated.maxBurst
integer
50
Shared burst budget for protected unauthenticated endpoints.
signupsAllowed defaults to false
New user self-registration is disabled by default. To create the first accounts, either temporarily set
signupsAllowed: true (then revert), use invitationsAllowed: true and invite via the admin panel, or restrict to
specific email domains with signupsDomainsWhitelist.
Admin Panel
Parameter
Type
Default
Description
admin.token
string
""
Admin panel token. Use Argon2 PHC hash for production.
admin.existingSecret
string
""
Existing secret containing the admin token.
admin.existingSecretTokenKey
string
admin-token
Key inside the existing secret.
SMTP
Parameter
Type
Default
Description
smtp.enabled
boolean
false
Enable SMTP for email notifications.
smtp.host
string
""
SMTP server hostname.
smtp.port
integer
587
SMTP port.
smtp.from
string
""
Sender email address.
smtp.fromName
string
Vaultwarden
Sender display name.
smtp.security
string
starttls
Connection security: starttls, force_tls, or off.
smtp.username
string
""
SMTP authentication username.
smtp.password
string
""
SMTP password (prefer existingSecret).
smtp.existingSecret
string
""
Existing secret containing the SMTP password.
smtp.existingSecretPasswordKey
string
smtp-password
Key inside the existing secret.
smtp.timeout
integer
15
SMTP connection timeout in seconds.
smtp.debug
boolean
false
Enable verbose SMTP troubleshooting logs.
smtp.acceptInvalidCerts
boolean
false
Accept invalid TLS certificates. Not recommended.
smtp.acceptInvalidHostnames
boolean
false
Accept invalid TLS hostnames. Not recommended.
Database
Auto-detection precedence when database.mode: auto:
database.external.host or database.external.existingSecret → external DB
postgresql.enabled: true → PostgreSQL subchart
mysql.enabled: true → MySQL subchart
SQLite fallback
Parameter
Type
Default
Description
database.mode
string
auto
Database mode: auto, sqlite, external, postgresql, or mysql.
database.sqlite.enableWal
boolean
true
Enable SQLite WAL mode for better read concurrency.
database.connection.retries
integer
15
Startup retries for database connection. 0 = infinite.
database.connection.timeout
integer
30
Timeout in seconds when acquiring a connection.
database.connection.idleTimeout
integer
600
Seconds before idle connections are closed.
database.connection.minConnections
integer
2
Minimum pool size.
database.connection.maxConnections
integer
10
Maximum pool size.
database.external.vendor
string
postgres
External database vendor: postgres or mysql.
database.external.host
string
""
External database hostname.
database.external.port
string
""
External database port.
database.external.name
string
vaultwarden
Database name.
database.external.username
string
vaultwarden
Database username.
database.external.password
string
""
Database password (prefer existingSecret).
database.external.existingSecret
string
""
Existing secret with a complete DATABASE_URL value.
database.external.existingSecretUrlKey
string
database-url
Key inside the existing secret.
database.external.parameters
string
""
Optional query string appended to the generated DATABASE_URL.
Persistence
Parameter
Type
Default
Description
data.persistence.enabled
boolean
true
Enable PVC for /data (SQLite DB, attachments, sends, icons).
data.persistence.size
string
5Gi
PVC size.
data.persistence.storageClass
string
""
StorageClass for the PVC.
data.persistence.accessMode
string
ReadWriteOnce
PVC access mode.
data.persistence.existingClaim
string
""
Use an existing PVC.
data.persistence.selectorLabels
object
{}
Label selectors for pre-bound PV matching (useful for DR restores).
Service
Parameter
Type
Default
Description
service.type
string
ClusterIP
Kubernetes service type.
service.port
integer
80
Service port.
service.targetPort
integer
80
Container port.
service.annotations
object
{}
Annotations for the Service.
Ingress
Parameter
Type
Default
Description
ingress.enabled
boolean
false
Enable an Ingress resource.
ingress.ingressClassName
string
traefik
Ingress class name.
ingress.annotations
object
{}
Annotations for the Ingress (e.g. cert-manager).
ingress.hosts
array
[]
Ingress host and path rules.
ingress.tls
array
[]
TLS configuration.
NetworkPolicy
Parameter
Type
Default
Description
networkPolicy.enabled
boolean
false
Create a NetworkPolicy for Vaultwarden.
networkPolicy.extraEgress
array
[]
Additional native egress rules when egress is enabled, for example SMTP or external databases.
networkPolicy.ingress.allowSameNamespace
boolean
true
Allow traffic from pods in the same namespace.
networkPolicy.ingress.additionalFrom
array
[]
Extra ingress peer selectors.
networkPolicy.egress.enabled
boolean
false
Enable egress policy (blocks all egress when enabled, add rules).
networkPolicy.egress.allowDns
boolean
true
Allow DNS egress (port 53) when egress is restricted.
networkPolicy.egress.additionalTo
array
[]
Extra egress peer selectors.
Backup
The backup CronJob automatically selects the correct dump tool based on the active database:
SQLite — tar + cp via Alpine (archives /data)
PostgreSQL — pg_dump
MySQL — mysqldump
For an HTTPS S3-compatible endpoint signed by a private or self-signed CA, set backup.s3.caSecret to a Secret containing the CA certificate and select its key with backup.s3.caKey. The certificate is mounted in the MinIO Client trust directory. Prefer this verified path over backup.s3.insecureSkipVerify, which disables certificate verification for every S3 operation. The two settings are mutually exclusive.
If domain includes a path such as https://example.com/vaultwarden, the chart renders the default health endpoint
as /vaultwarden/alive. Custom probe paths that already include the domain path are preserved.