Skip to content

Self-host Bitwarden

updated Aug 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Jul 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

The official self-hostable Bitwarden server — full vendor support and enterprise SSO. Heavier than Vaultwarden, but the right pick when you need a supported, on-prem deployment.

Key facts

LicenseAGPL-3.0
StackC#, SQL Server
Min RAM2048 MB
Official imageyes
Difficulty
Our recommendation

Pick Bitwarden's official server when you need the vendor-supported deployment — enterprise SSO, the System Administrator Portal, a support contract behind your organisation's vault — and can run the whole stack it ships: `bitwarden.sh` stands up the C#/.NET services behind nginx with an MSSQL Express database (10 GB relational-size cap, no extra licence). Upstream asks for 2 GB of RAM and 12 GB of storage minimum, 4 GB and 25 GB recommended. The source is AGPLv3 except `/bitwarden_license`, which is under the Bitwarden License. For a personal or family vault, Vaultwarden is the lighter unofficial server that Bitwarden's own FAQ says its clients are expected to mostly work with.

Follow the Bitwarden deploy guide →

What you need

  • Any VPS with at least 2048 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • About an afternoon — budget time for troubleshooting
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# Official Bitwarden self-host installer
curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux"
chmod +x bitwarden.sh
./bitwarden.sh install   # prompts for domain + install id/key
./bitwarden.sh start

What you take on

Bitwarden's self-host guide is thorough, but the install has prerequisites the four-line snippet hides:

non-negotiableYou need an installation id and key from bitwarden.com/host before ./bitwarden.sh install; they register the install, authenticate to the push relay and validate paid-feature licences. Upstream says treat them as secrets and never share one pair across installations, and pick the US or EU region to match the cloud account you will license from.
non-negotiableDo not install as root: the guide creates a bitwarden user in the docker group and runs everything from /opt/bitwarden. Ports 80 and 443 must be free (custom ports mean editing ./bwdata/config.yml then ./bitwarden.sh rebuild), the protocol must be consistent end to end — mixing HTTPS at the proxy with HTTP internally "causes connection, authentication, and syncing errors" — and running under a subfolder is unsupported.
non-negotiableNothing works until SMTP is set: fill the globalSettings__mail__smtp__* values in ./bwdata/env/global.override.env (and adminSettings__admins for the admin portal), then ./bitwarden.sh restart; new accounts need email verification. Premium and organisation features are unlocked by uploading a licence file from a paid cloud account, and an organisation licence must be refreshed within 60 days of renewal or the organisation is disabled.
non-negotiableUpdate with ./bitwarden.sh updateself then ./bitwarden.sh update; self-hosted releases lag the cloud by several days, so the admin portal can advertise an update you cannot pull yet. Back up the whole ./bwdata directory: nightly MSSQL dumps land in ./bwdata/mssql/backups for 30 days, but env, core/attachments and core/aspnet-dataprotection are not in them.
non-negotiableThe 2 GB floor is upstream's minimum (Linux Standard Deployment: 2 GB RAM, 12 GB storage, x64 1.4 GHz; 4 GB and 25 GB recommended). If that is too much, "Bitwarden lite" (ghcr.io/bitwarden/lite, the renamed Unified beta) is a single container needing at least 200 MB that can use SQLite, PostgreSQL, MySQL/MariaDB or MSSQL — but upstream scopes it to personal use and home labs, and it takes no nightly backups.

An alternative to

Head-to-head

More in Password manager

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.