Vaultwarden vs Bitwarden self-hosted: wat kiest u?
Twijfelt u tussen Vaultwarden en Bitwarden? De officiële server vereist 2 GB RAM en twaalf containers, terwijl Vaultwarden in één container draait. Lees welk systeem past.
Wat Vaultwarden en Bitwarden self-hosted daadwerkelijk zijn
De keuze tussen Vaultwarden en Bitwarden self-hosted is een keuze tussen twee servers die dezelfde client-API spreken, niet een keuze tussen twee wachtwoordmanagers. De eigen stack van Bitwarden draait ongeveer twaalf containers achter nginx, slaat alles op in Microsoft SQL Server en is gekoppeld aan een installatie-ID die u registreert met een e-mailadres. Vaultwarden is een onofficiële herimplementatie van de Bitwarden client-API, geschreven in Rust, die als één container draait met één SQLite-bestand. Uw browserextensie en uw telefoon kunnen het verschil niet zien, omdat beide op dezelfde endpoints antwoorden.
De versleuteling is in beide gevallen identiek. Bitwarden-clients versleutelen de kluis voordat er gegevens het apparaat verlaten, waardoor de server blobs opslaat die hij niet kan lezen; het kluisformaat is in beide gevallen eigendom van Bitwarden. Wat verschilt is hoeveel machinecapaciteit u huurt, wie de code onderhoudt, welke functies geld kosten en wat u zelf moet back-uppen.
De README van Vaultwarden is duidelijk over de status: "Dit project is niet geassocieerd met Bitwarden of Bitwarden, Inc." Het is een vrijwilligersproject zonder helpdesk en zonder garantie. Eén actieve beheerder werkt bij Bitwarden en draagt in zijn persoonlijke tijd bij, wat een gunst is en geen officiële ondersteuning.
De drie stacks die u kunt installeren
De meeste vergelijkingen missen dat Bitwarden twee verschillende zelfgehoste producten uitbrengt.
Bitwarden standard. De deployment van de leverancier, aangestuurd door een shell script.
curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
&& chmod 700 bitwarden.sh
./bitwarden.sh installHet installatieprogramma vraagt om uw domein, of u een Let's Encrypt-certificaat wilt aanvragen, een databasenaam, en een installatie-ID en -sleutel die u ophaalt via https://bitwarden.com/host door een e-mailadres in te voeren. ./bitwarden.sh start haalt vervolgens de images op en brengt de stack online. Bitwarden documenteert 2 GB RAM en 12 GB opslag als minimum, 4 GB en 25 GB als aanbevolen, en Docker Engine 26 of nieuwer met de Compose plugin. De database is een MSSQL Express-image, en die editie beperkt de relationele database tot 10 GB, tenzij u de deployment naar een externe database verwijst.
Bitwarden lite. Dit is de deployment die voorheen Bitwarden Unified heette. Deze verliet de bètafase en werd in december 2025 hernoemd. Eén applicatiecontainer plus een database naar keuze:
services:
bitwarden:
depends_on:
- db
env_file:
- settings.env
image: ghcr.io/bitwarden/lite
restart: always
ports:
- "80:8080"
volumes:
- bitwarden:/etc/bitwarden
db:
environment:
MARIADB_USER: "bitwarden"
MARIADB_PASSWORD: "super_strong_password"
MARIADB_DATABASE: "bitwarden_vault"
MARIADB_RANDOM_ROOT_PASSWORD: "true"
image: mariadb:10
restart: always
volumes:
- data:/var/lib/mysql
volumes:
bitwarden:
data:Deze accepteert MariaDB of MySQL, PostgreSQL, SQLite en MSSQL, en vereist 200 MB RAM en 1 GB opslag. Twee kanttekeningen komen uit de eigen documentatie van Bitwarden. Het is gedocumenteerd voor persoonlijk gebruik en home labs in plaats van zakelijk gebruik, en het maakt geen automatische databaseback-ups, dus die taak is volledig aan u.
Vaultwarden. Eén container, rechtstreeks uit de README van het project:
docker run --detach --name vaultwarden \
--env DOMAIN="https://vw.domain.tld" \
--volume /vw-data/:/data/ \
--restart unless-stopped \
--publish 127.0.0.1:8000:80 \
vaultwarden/server:latestDe publish-regel bindt poort 8000 uitsluitend aan loopback, en dat is bewust. Vaultwarden serveert platte HTTP en verwacht dat een reverse proxy TLS (transport layer security) ervoor afhandelt. TLS is hier niet optioneel: de web vault voert zijn encryptie uit met de WebCrypto API van de browser, die browsers alleen in een beveiligde context blootstellen. Daarom faalt de inlogpagina in de browser via platte http nog voordat uw server ooit wordt benaderd. De volledige Vaultwarden installatiehandleiding behandelt de proxy en het certificaat.
Hoeveel RAM verbruikt Vaultwarden in vergelijking met Bitwarden self-hosted?
De minimumvereisten van een leverancier geven aan onder welke voorwaarden de installer weigert te draaien, niet wat de werkelijke belasting van de software is. De onderstaande rijen zijn afkomstig van docker stats --no-stream bij installaties in ruststand, met één gebruiker per stuk, een kleine kluis en zonder bijlagen, op een Ubuntu 24.04-server met 4 GB RAM. De schijfruimte omvat de images plus de datamap na de eerste succesvolle start.
The data behind this chart
[
{
"label": "Vaultwarden (SQLite)",
"idle_ram_mb": 58,
"containers": 1,
"disk_gb": 0.4
},
{
"label": "Bitwarden lite + MariaDB",
"idle_ram_mb": 470,
"containers": 2,
"disk_gb": 1.6
},
{
"label": "Bitwarden standard (MSSQL)",
"idle_ram_mb": "2,400",
"containers": 12,
"disk_gb": 6.5
}
]Vaultwarden verbruikte in ruststand 58 MB in één container. De standaard Bitwarden-stack verbruikte in ruststand bijna 2,400 MB verdeeld over 12 containers, waarbij de MSSQL-container het grootste deel hiervan inneemt. Bitwarden lite kwam uit op 470 MB met de bijbehorende MariaDB-container. Voer hetzelfde commando uit op uw eigen server voordat u deze cijfers als vaststaand beschouwt, aangezien ze variëren op basis van het aantal gebruikers, bijlagen en synchronisatieverkeer, en omdat MSSQL meer geheugen in beslag neemt naarmate het langer draait.
Het praktische advies voor een kleine VPS: Vaultwarden met SQLite draait comfortabel op een abonnement van 1 GB, terwijl de standaard Bitwarden-stack daar niet eens op zal starten. Op een abonnement van 2 GB voldoet de standaard stack aan het gedocumenteerde minimum, maar blijft er zeer weinig ruimte over voor het besturingssysteem, waardoor de kernel out of memory killer een reëel risico vormt. Wanneer deze ingrijpt, print dmesg een regel met de naam van het proces dat is beëindigd, en bij deze stack is dat meestal sqlservr. Reserveer 4 GB voor de standaard implementatie.
Welke betaalde functies zijn gratis in Vaultwarden?
Het draaien van de Bitwarden-server kost niets, maar betaalde functies blijven vergrendeld totdat u een licentiebestand uploadt. Premium individuele accounts en elk betaald organisatieniveau (Families, Teams, Enterprise) hebben er een nodig. U downloadt dit bestand vanuit de cloud web vault, onder Settings en vervolgens Subscription voor een individu, of in de Admin Console onder Billing en vervolgens Subscription voor een organisatie, en uploadt het naar uw eigen instantie. Organisatielicenties worden uitgegeven op basis van de installation ID die is opgeslagen in ./bwdata/env/global.override.env. Een self-hosted organisatie behoudt daarom een betaald abonnement en maakt voor facturering nog steeds verbinding met de cloud van Bitwarden.
Vaultwarden schakelt dezelfde functies in zonder licentie en zonder abonnement. De project-wiki somt ze op:
- organisaties, collecties en groepen
- bestandsbijlagen
- tweestapsverificatie via e-mail, Duo, YubiKey en FIDO2
- Emergency Access
- Bitwarden Send
- persoonlijke API-sleutels
- SSO via OpenID Connect
SSO is de nieuwste van deze functies en wordt geconfigureerd met SSO_ENABLED, SSO_AUTHORITY, SSO_CLIENT_ID en SSO_CLIENT_SECRET. Het authenticeert alleen de inlogpoging. De wiki is expliciet over het feit dat een hoofdwachtwoord nog steeds vereist is en niet wordt beheerd door uw identiteitsprovider, omdat dat wachtwoord de sleutel afleidt die de kluis ontsleutelt. Wijs SSO_AUTHORITY naar de discovery issuer van een self-hosted Authentik identiteitsprovider en gebruikers loggen daar in, waarna ze ontgrendelen met hun hoofdwachtwoord. De waarde moet overeenkomen met het issuer-veld dat het discovery-eindpunt retourneert, zonder het /.well-known/openid-configuration-achtervoegsel aan het einde.
Wat u niet krijgt van Vaultwarden is een leverancier. Bitwarden beschikt over SOC 2 Type 2 en ISO 27001, publiceert auditrapporten van derden en voert een privaat HackerOne bug bounty-programma uit. Deze hebben betrekking op de code en dienst van Bitwarden in plaats van op de server die u heeft geïnstalleerd, maar als een auditor een genoemde leverancier achter uw wachtwoordbeheerder vereist, is een door vrijwilligers gemaakte herimplementatie een lastig gesprek.
Werken de officiële Bitwarden-apps met Vaultwarden?
Ja. Vaultwarden implementeert de client-API, waardoor de browserextensies, desktop-apps, mobiele apps en de meegeleverde web-vault er allemaal mee werken. In elke client stelt u de URL van de zelfgehoste server in op het omgevingsscherm voordat u inlogt, niet daarna.
Eén functie vereist extra configuratie: pushmeldingen naar de mobiele apps. Zonder deze meldingen synchroniseert de app wanneer u deze opent of op basis van een eigen timer. Een wachtwoord dat op uw laptop is gewijzigd, verschijnt daardoor pas op uw telefoon zodra u de app opent. Vaultwarden kan gebruikmaken van de push-relay van Bitwarden, waarvoor een installatie-ID en sleutel nodig zijn van dezelfde https://bitwarden.com/host-pagina die het officiële installatieprogramma gebruikt.
PUSH_ENABLED=true
PUSH_INSTALLATION_ID=<your installation id>
PUSH_INSTALLATION_KEY=<your installation key>Servers in de EU-regio hebben ook PUSH_RELAY_URI=https://api.bitwarden.eu en PUSH_IDENTITY_URI=https://identity.bitwarden.eu nodig. De wiki beschrijft twee valkuilen die het waard zijn om te kennen voordat u hier een uur aan debuggen besteedt. Een app die is geïnstalleerd via F-Droid of Neo Store heeft geen Firebase-ondersteuning en zal nooit een pushmelding ontvangen, ongeacht wat de server doet. Bij een app die verbinding maakte vóór Vaultwarden 1.30.2 moeten de gegevens worden gewist, zodat de app een push-token kan registreren.
Hoe veilig is een herimplementatie?
De auditgeschiedenis van Bitwarden is lang en openbaar. Cure53 voerde reviews uit in 2018, 2021, 2022 en 2023. IOActive en Mandiant beoordeelden de clients in 2024, Fracture Labs voerde in 2024 en 2025 web- en netwerkassessments uit, Unit 42 onderzocht de mobiele apps in 2025 en de Applied Cryptography Group van de ETH Zürich controleerde de cryptografie in 2025.
Vaultwarden is ook door externe partijen onderzocht, wat mensen verrast die aannemen dat niemand ernaar kijkt. Het Duitse Bundesamt für Sicherheit in der Informationstechnik (BSI) liet mgm security partners het project tussen februari en mei 2024 testen in het kader van het Caos 3.0-codeanalyseproject; die review classificeerde twee bevindingen als hoog risico. Daarnaast rapporteerde ERNW een authenticatie-omzeiling die versies onder 1.32.5 trof (CVE-2024-55225), welke in november 2024 werd verholpen. Versie 1.37.0, uitgebracht in juli 2026, bevatte fixes voor SSRF (server-side request forgery) via het icon-endpoint, ongeautoriseerde toegang tot ciphers tussen organisaties en het omzeilen van organisatiebeleid bij directory-imports.
Deze geschiedenis toont een project met een werkend proces voor het openbaar maken van kwetsbaarheden. Het wijst ook op het aanvalsoppervlak dat steeds terugkeert: de beheerpagina. Behandel die pagina daarom als het gevoelige onderdeel dat het is. Deze blijft uitgeschakeld tenzij ADMIN_TOKEN is ingesteld, en u dient een hash op te slaan in plaats van het plaintext-token.
docker run --rm -it vaultwarden/server /vaultwarden hashDit commando genereert een Argon2 PHC-string (password hashing competition format) die u in ADMIN_TOKEN kunt plakken. Schakel HTTPS in voordat u de beheerpagina activeert, omdat het token in het verzoek wordt meegestuurd; een plaintext-token op een onbeveiligde HTTP-verbinding is leesbaar voor alles op het netwerkpad. Houd /admin waar mogelijk buiten het openbare internet en combineer dit met standaard serverbeveiliging, zoals het beperken van SSH-toegang op de server.
Wat er misgaat bij wijzigingen in de officiële API
Dit is het risico dat mensen onderschatten. Bitwarden brengt de clients uit en deze clients werken zichzelf 's nachts bij via app stores. Vaultwarden moet dit volgen. Wanneer een client-release het API-contract wijzigt, krijgt een niet-bijgewerkte Vaultwarden te maken met een client die al is overgestapt. Hierdoor kunnen inlogpogingen of synchronisaties mislukken op apparaten die u niet eens heeft aangeraakt.
De release notes bevatten een concreet voorbeeld. Vaultwarden 1.37.0 vermeldt: "Deze update is vereist voor ondersteuning van clients met versie 2026.7.0+, update alstublieft voordat u problemen met deze clients meldt." Sinds augustus 2026 is de huidige release 1.37.1, gepubliceerd op 29 juli 2026.
Twee gewoontes houden dit proces voorspelbaar. Pin een specifieke image-tag in plaats van latest, zodat een automatische pull uw server niet om 3 uur 's nachts onverwacht bijwerkt. Houd daarnaast de release-feed in de gaten en voer upgrades bewust uit. Lees eerst de notes, want ingrijpende wijzigingen worden alleen daar vermeld. Versie 1.35.5 maakte bijvoorbeeld bij de upgrade elk bestaand 'remember'-token voor tweefactorauthenticatie ongeldig, waardoor gebruikers werden uitgelogd bij een stap waarvan zij dachten dat deze was opgeslagen.
De standaard Bitwarden-implementatie kent het spiegelbeeld van dit probleem. Upgrades verlopen via ./bitwarden.sh updateself en ./bitwarden.sh update, waarbij de update database-migraties uitvoert. Een back-up die vóór de migratie is gemaakt, is geen rollback voor het schema daarna. Maak daarom altijd een back-up en noteer de versie waarvan u de back-up heeft gemaakt.
Backups, het punt waar gebruikers daadwerkelijk kluizen verliezen
De datadirectory van Vaultwarden is de server. Bewaar het volgende:
db.sqlite3- elk
rsa_key*-bestand, inclusiefrsa_key.pemenrsa_key.der attachments/config.jsonsends/
Kopieer db.sqlite3 niet met cp terwijl de container draait. SQLite kan bezig zijn met schrijven, waardoor de kopie een corrupte database kan zijn die er goed uitziet totdat u deze herstelt. Gebruik in plaats daarvan de online backup-API:
sqlite3 data/db.sqlite3 ".backup '/path/to/backups/db-$(date '+%Y%m%d-%H%M').sqlite3'"Sinds 1.32.1 bevat de image ook een ingebouwd /vaultwarden backup-commando. Hoe dan ook staat de snapshot op dezelfde schijf als het origineel totdat u deze verplaatst. Verplaats de data daarom naar een externe locatie met restic snapshots naar off-site opslag volgens een schema. De rsa_key-bestanden zijn net zo belangrijk als de database: de server ondertekent sessietokens met die sleutel. Een database die wordt hersteld naast een vers gegenereerde sleutel logt daarom iedereen uit en maakt lopende uitnodigingen voor organisaties ongeldig.
Bitwarden standard maakt meer back-ups van zichzelf. De mssql-container schrijft elke nacht database-back-ups naar ./bwdata/mssql/backups en bewaart deze 30 dagen, zolang de container draait. U kunt ook handmatig een back-up forceren:
docker exec -i bitwarden-mssql /backup-db.shDe directories die u moet bewaren zijn ./bwdata/env (omgevingsvariabelen, inclusief wachtwoorden voor de database en certificaten), ./bwdata/core/attachments, ./bwdata/mssql/data en ./bwdata/core/aspnet-dataprotection. Die laatste wordt vaak vergeten. Deze bevat materiaal voor gegevensbescherming op framework-niveau, inclusief authenticatietokens en bepaalde databasekolommen. Het herstellen van de database zonder deze directory maakt de beschermde kolommen onleesbaar. Bitwarden lite maakt geen automatische back-ups; als u voor lite kiest, bent u zelf verantwoordelijk voor een dump-schema, net zoals bij Vaultwarden.
Migreren in beide richtingen
Migratie verloopt via de clients, niet via de servers, omdat exporteren en importeren clientfuncties zijn. Hierdoor is de procedure voor beide richtingen identiek.
Elke gebruiker exporteert gegevens vanuit de webkluis of de desktop-app, maakt een account aan op de nieuwe server en voert een import uit. De formaten zijn platte tekst .json, platte tekst .csv, versleuteld .json en een .zip die de JSON plus bestandsbijlagen voor individuele kluizen bevat. Betaalkaarten, identiteiten, opgeslagen passkeys en SSH-sleutels blijven alleen behouden in de JSON-vormen; een CSV-migratie verwijdert deze gegevens dus zonder waarschuwing. Geen enkel exportformaat bevat items in de prullenbak of Sends, en gegevens die eigendom zijn van een organisatie maken geen deel uit van een individuele export.
Behandel een export in platte tekst als een live geheim, want dat is het: uw volledige kluis in leesbare tekst op schijf. Exporteer het, importeer het en verwijder het in één sessie. Verstuur het nooit via e-mail of chat.
Eén valkuil treft gebruikers tijdens de migratie. Een versleutelde export die gekoppeld is aan uw account kan niet worden geïmporteerd in een ander account, en het verplaatsen van servers betekent per definitie een ander account. Kies in plaats daarvan voor de met een wachtwoord beveiligde exportoptie, aangezien deze draagbaar is.
De overstap van Vaultwarden naar de standaard Bitwarden is de lastigere richting, omdat de organisatiestructuur niet wordt meegenomen in een export. U moet de organisatie op de nieuwe server opnieuw aanmaken, de gebruikers opnieuw uitnodigen en elke gebruiker moet zijn eigen kluis importeren. Plan hiervoor een onderhoudsvenster in plaats van dit op de dag zelf te moeten ontdekken.
Welke versie moet u draaien?
Draai Vaultwarden als u een privégebruiker bent, een gezin heeft of een homelab op een 1 GB of 2 GB VPS beheert. Organisaties, Emergency Access en Send zijn gratis inbegrepen, het geheugengebruik in ruststand is vergelijkbaar met dat van één browsertabblad, en de back-up bestaat uit een SQLite-bestand plus een kleine map. Deze combinatie is de reden waarom het de markt voor zelfgehost wachtwoordbeheer domineert.
Draai de eigen server van Bitwarden wanneer andere mensen er professioneel afhankelijk van zijn: een bedrijf dat een supportcontract nodig heeft, een compliance-vereiste die de leverancier bij naam noemt, of enterprise-functies waarvoor u al betaalt. Reserveer 4 GB voor de standaardimplementatie en behandel het licentiebestand en de installation ID als onderdeel van de implementatie in plaats van als administratieve rompslomp.
Bitwarden lite bevindt zich in een lastig middengebied. Het is code van de leverancier met een fractie van de systeemeisen, wat oprecht aantrekkelijk is, maar Bitwarden documenteert het enkel voor persoonlijk gebruik en homelabs en het beschikt niet over automatische back-ups. U draagt de operationele last van Vaultwarden zonder de gratis functieset van Vaultwarden. Kies hiervoor wanneer code van de leverancier voor u zwaarder weegt dan de functies, en u bereid bent de database zelf te beheren.
Als u nog beslist wat de server verder gaat hosten, plaatst de bredere shortlist voor self-hosting deze keuze naast de andere services die strijden om hetzelfde RAM-geheugen.
FAQ
Is Vaultwarden veilig genoeg als wachtwoordmanager voor serieus gebruik?
Voor persoonlijk en familiair gebruik wel, mits aan bepaalde voorwaarden wordt voldaan. De clients versleutelen de kluis voordat deze de server bereikt, waardoor Vaultwarden nooit uw hoofdwachtwoord of gegevens in leesbare tekst ziet. De software is extern gecontroleerd: BSI liet mgm security partners de software testen tussen februari en mei 2024, en ERNW rapporteerde een authenticatie-omzeiling die in 1.32.5 is verholpen. Houd de versie up-to-date, schakel de beheerpagina uit of beveilig deze met een Argon2-hash ADMIN_TOKEN, en bied de service uitsluitend aan via HTTPS. Een bedrijf dat behoefte heeft aan ondersteuning door de leverancier of auditdocumentatie, dient de officiële Bitwarden-server te draaien.
Hoeveel RAM verbruikt Vaultwarden in vergelijking met de zelfgehoste Bitwarden-stack?
Bij metingen op inactieve installaties met docker stats --no-stream verbruikte Vaultwarden met SQLite ongeveer 58 MB in één container, terwijl de standaard Bitwarden-implementatie rond de 2,400 MB verbruikte verdeeld over 12 containers, waarbij het grootste deel werd ingenomen door de MSSQL-database. Bitwarden adviseert 2 GB als minimum en 4 GB als aanbevolen geheugen voor de standaard stack, en 200 MB voor Bitwarden lite. Vaultwarden draait probleemloos op een VPS met 1 GB RAM.
Heb ik een Bitwarden-licentie nodig om zelf te hosten?
Niet voor een gratis individuele kluis. Het draaien van de server is gratis. Een licentiebestand is vereist om premium individuele functies en betaalde organisatieplannen (zoals Families, Teams en Enterprise) te ontgrendelen. U downloadt dit bestand vanuit de cloud-webkluis en uploadt het naar uw eigen instantie. Licenties voor organisaties worden gekoppeld aan de installatie-ID die is opgeslagen in ./bwdata/env/global.override.env. Vaultwarden vereist geen licentie en schakelt de organisatiefuncties zelf in.
Kan ik later overstappen van Vaultwarden naar Bitwarden, of andersom?
Ja, in beide richtingen, via de clients. Elke gebruiker exporteert de kluis vanuit de webkluis of desktop-app en importeert deze in de nieuwe server nadat daar een account is aangemaakt. De .zip-export bevat bijlagen voor individuele kluizen, en de JSON-bestanden bevatten creditcards, identiteiten, passkeys en SSH-sleutels. Items in de prullenbak en 'Sends' worden niet meegenomen in exportformaten. Items die eigendom zijn van een organisatie moeten afzonderlijk door een eigenaar worden geëxporteerd. Plan daarom het opnieuw aanmaken van de organisatie en het opnieuw uitnodigen van gebruikers op de nieuwe server.