Upstream docs: https://github.com/dani-garcia/vaultwarden/wiki
Everything not listed in this document should behave the same as upstream Vaultwarden. If a feature, setting, or behavior is not mentioned here, the upstream documentation is accurate and fully applicable.
Vaultwarden is a lightweight, self-hosted Bitwarden-compatible password manager written in Rust. This package provides a managed instance with admin token generation, signup control, SMTP configuration, and automatic primary domain selection.
- Image and Container Runtime
- Volume and Data Layout
- Installation and First-Run Flow
- Configuration Management
- Network Access and Interfaces
- Actions (StartOS UI)
- Backups and Restore
- Health Checks
- Dependencies
- Limitations and Differences
- What Is Unchanged from Upstream
- Contributing
- Quick Reference for AI Consumers
This package runs 2 containers:
| Container | Image | Purpose |
|---|---|---|
| vaultwarden | vaultwarden/server (Alpine variant) |
Password manager server |
| argon2 | Custom dockerBuild |
Admin token Argon2id hashing (used only during token generation) |
- Architectures: x86_64, aarch64
- Entrypoint: Default upstream entrypoint for the vaultwarden container
| Volume | Mount Point | Contents |
|---|---|---|
main |
/data |
Encrypted vault database (SQLite), config, attachments, store.json |
Critical: This volume contains all your passwords and sensitive data. Ensure backups are secure and tested.
On first install:
config.jsonandstore.jsonare seeded with defaults- Auto-selects a
.localdomain as primary if not configured - A critical task is created prompting the user to run the Create Admin Token action
- On update, an important task is created for the Toggle Signups action to confirm signup state
No upstream setup wizard — admin token and primary domain are configured via StartOS actions.
| StartOS-Managed (via actions) | Upstream-Managed |
|---|---|
| Admin token (Argon2id hashed) | All vault data, user accounts, organizations |
| Signups enabled/disabled | User settings within the web vault |
| Primary domain (for links and invites) | |
| SMTP (disabled / system / custom) |
| Interface | ID | Type | Port | Path | Description |
|---|---|---|---|---|---|
| Web Vault | vault |
ui | 80 | / |
Primary user interface |
| Admin Portal | admin |
ui | 80 | /admin |
Administrator interface (requires admin token) |
Both interfaces share the same origin.
| Property | Value |
|---|---|
| Name | Enable Signups / Disable Signups (dynamic based on current state) |
| Purpose | Toggle new user registration on or off |
| Visibility | Enabled |
| Availability | Any (running or stopped) |
| Inputs | None |
| Outputs | Signups state toggled in config.json |
| Property | Value |
|---|---|
| Name | Create Admin Token / Update Admin Token (dynamic) |
| Purpose | Generate a secure admin token for the Admin Portal |
| Visibility | Enabled |
| Availability | Any (running or stopped) |
| Inputs | None |
| Outputs | 32-character random token (masked, copyable). Argon2id hash stored in config. |
Created as a critical task on first install.
| Property | Value |
|---|---|
| Name | Set Primary Domain |
| Purpose | Choose which URL serves as the primary domain for links and email invites |
| Visibility | Enabled |
| Availability | Any (running or stopped) |
| Inputs | Primary Domain (dynamic select from available interface URLs) |
| Outputs | Domain saved to config.json |
| Property | Value |
|---|---|
| Name | Configure SMTP |
| Purpose | Set up email sending for invitations and notifications |
| Visibility | Enabled |
| Availability | Any (running or stopped) |
| Inputs | SMTP configuration: Disabled, System (uses StartOS system SMTP, with optional custom "From" address), or Custom (host, port, from, username, password, security) |
| Outputs | SMTP settings saved to config |
- Backed up:
mainvolume (encrypted vault database, attachments, configuration) - Restore behavior: Volume restored in place; all vault data, users, and settings are preserved
- Important: Your vault data is encrypted with your master password. StartOS cannot recover data if you lose your master password.
| Check | Daemon | Method | Success Condition |
|---|---|---|---|
| Web Interface | primary | Port listening (80) | Port 80 responds |
None.
- No push notifications — requires Bitwarden's proprietary push relay
- Admin token required — must generate a token via action to access the admin portal
- SQLite database — uses embedded SQLite rather than an external database
- No Bitwarden Send storage limits enforced server-side — enforced by client only
- Full Bitwarden API compatibility
- Encrypted vault storage
- Password, card, identity, and note storage
- Secure password generator
- TOTP authenticator
- Organization support
- Emergency access
- Folder organization
- Browser auto-fill
- All official Bitwarden client compatibility (browser extensions, desktop, mobile, CLI)
See CONTRIBUTING.md for build instructions and development workflow.
package_id: vaultwarden
image: vaultwarden/server (Alpine), argon2 (custom dockerBuild)
architectures: [x86_64, aarch64]
volumes:
main: /data
ports:
vault: 80
dependencies: none
startos_managed_env_vars: []
actions:
- toggle-signups
- set-admin-token
- set-primary-domain
- manage-smtp