Bitwarden zelf hosten met Docker: Complete installatiegids
Een praktische gids om je eigen Bitwarden-wachtwoordkluis te draaien met Docker, van initiële serverinstallatie tot configuratie, updates en veelvoorkomende troubleshooting.
In dit artikel loodst ik je door het installeren van Bitwarden met Docker op een schone Ubuntu-server, het configureren van HTTPS met Let's Encrypt en het oplossen van veelvoorkomende installatieproblemen.
Als je net begint met Docker, kun je beter eerst onzeIntroduction to Docker ofIntermediate Docker cursussen volgen — leer eerst de basis voordat je meerdere containers gaat beheren.
Wat houdt Bitwardens Docker-implementatie in?
Bitwarden heeft een officiëleDocker-gebaseerde installatie waarmee je een wachtwoordmanager volledig naar eigen wens kunt draaien.
Alles wat je hoeft te doen is één installatiescript uitvoeren. Je hoeft geen databases of webservers handmatig te installeren of code te schrijven. Docker haalt vooraf geconfigureerde containers op, zet de onderlinge netwerken op en start alles. Updaten werkt hetzelfde: voer het updatescript uit en Docker regelt de rest.
Bitwardens Docker-setup draait als meerdere samenwerkende containers. Je krijgt een web vault-container voor de gebruikersinterface, een API-container voor verzoekafhandeling, een databasecontainer voor versleutelde vaultdata en ondersteunende services voor bijlagen en iconen. Docker Compose orkestreert deze containers zodat ze met elkaar kunnen communiceren.
Alles is vooraf voor je geconfigureerd.
Deze multi-container aanpak betekent dat elke component geïsoleerd draait. Als je de database moet aanpassen, kun je alleen die container herstarten zonder de webinterface te raken. Wil je logs nakijken, dan heeft elke service z’n eigen logstream.
De officiële implementatie gebruikt Docker Compose om alles via één configuratiebestand te beheren, waardoor het geheel makkelijker te begrijpen en te onderhouden is dan een traditionele serverinstallatie.
Vereisten voordat je Bitwarden met Docker draait
Je hebt een paar dingen nodig voordat je Bitwarden kunt draaien, maar geen daarvan vereist enterprise-hardware of complexe setups.
Een Linux-server of VM is je startpunt.Ubuntu Server is eigenlijk alles wat je nodig hebt. Je kunt een cloudinstantie gebruiken van AWS, DigitalOcean of Linode. Een basisinstantie met 2GB RAM en 20GB opslag is genoeg om Bitwarden te draaien voor persoonlijk gebruik of kleine teams.
Docker en Docker Compose verzorgen de eigenlijke installatie. Je installeert Docker Engine (niet Docker Desktop) en Docker Compose als aparte pakketten. De meeste Linux-distributies bieden beide in hun pakketbeheer aan.
Een domeinnaam is vereist omdat Bitwarden HTTPS nodig heeft. Je kunt het niet op een IP-adres draaien. Je moet je domein vooraf naar het IP-adres van je server laten verwijzen.
Poorten 80 en 443 moeten open staan op je server. Poort 80 handelt HTTP-verkeer en certificaatvalidatie af, terwijl poort 443 het eigenlijke HTTPS-verkeer bedient. Configureer je firewall en de security groups van je cloudprovider om inkomende verbindingen op beide poorten toe te staan.
Je hebt ook basisvaardigheden op de command line nodig. Je maakt via SSH verbinding met je server, voert installatiescripts uit en bewerkt configuratiebestanden. Als je mappen kunt navigeren en commando’s met sudo kunt draaien, ben je er klaar voor.
En dat is het! Er zijn dingen die je moet weten, zeker, maar vrijwel iedereen die een beetje technisch is kan het. Ik laat je zo zien hoe.
Bitwarden installeren met Docker (officiële methode)
Deze walkthrough gebruikt een DigitalOcean Ubuntu-droplet en Cloudflare voor domein- en DNS-beheer. Je bent vrij om andere providers en services te gebruiken — maar als je zonder gedoe wilt meeklikken, raad ik aan hetzelfde te kiezen.
Je omgeving instellen
Maak eerst een DigitalOcean-droplet met Ubuntu 24.04 LTS. De Basic-droplet van $12/maand (2GB RAM, 1 CPU, 50GB SSD) draait Bitwarden prima voor persoonlijk gebruik of kleine teams. Kies een datacenterregio dicht bij jou voor betere responstijden. Vergeet niet een bestaande SSH-sleutel toe te voegen of een nieuwe te maken.
Noteer na het opstarten van de droplet het openbare IP-adres in het DigitalOcean-dashboard.
Details van de DigitalOcean-droplet
Configureer vervolgens DNS in Cloudflare. Log in bij je Cloudflare-account en voeg een A-record toe dat je domein naar het IP-adres van de droplet wijst:
Type: A
Naam: vault (of je gewenste subdomein)
IPv4-adres: het IP van je droplet
Proxystatus: Uit (grijze wolk)
Zet Cloudflares proxy uit voor de initiële setup. Let's Encrypt heeft directe toegang tot je server nodig om domeineigendom te verifiëren. Je kunt de proxy weer inschakelen nadat Bitwarden draait en certificaten zijn gegenereerd.
Ik heb een van mijn actieve domeinen gebruikt voor dit artikel:
Cloudflare DNS-configuratie
DNS-propagatie duurt een paar minuten. Voer dit shellcommando uit om te verifiëren dat de wijzigingen zichtbaar zijn:
Je zou versienummers voor beide commando’s moeten zien.
Versies van Docker en Docker Compose
Daarna laat ik je zien hoe je Bitwarden installeert.
De Bitwarden-installer downloaden en voorbereiden
De officiële installer van Bitwarden staat in hun GitHub-repository. Je kunt hem rechtstreeks naar je server downloaden:
curl-Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux"&&chmod +x bitwarden.shMogelijk gemaakt door
Dit downloadt het installatiescript en maakt het uitvoerbaar. Het script regelt alles: van Docker-images downloaden en configuratiebestanden maken tot het opzetten van de directorystructuur.
De volgende stap is een map maken waarin Bitwarden z’n data opslaat:
Het script maakt een bwdata-map aan die alle configuratiebestanden, certificaten, logs en databasebestanden van Bitwarden bevat. Hier staat alles, dus maak regelmatig een back-up van deze map.
De installatie uitvoeren
De installer stelt je een aantal vragen. Beantwoord ze zorgvuldig, want als je hier fouten maakt, moet je opnieuw beginnen.
Voer je domeinnaam in precies zoals die in je DNS-records staat. Als je vault.yourdomain.com in Cloudflare hebt ingesteld, voer dan exact die string in. Neem geen https:// of afsluitende slashes op.
Kies Let's Encrypt voor SSL-certificaten. De installer regelt automatisch het genereren en vernieuwen van certificaten. Als je Cloudflares proxy (de oranje wolk) gebruikt, moet je die mogelijk tijdelijk uitschakelen tijdens de eerste setup zodat Let's Encrypt je domein kan verifiëren.
Voer je e-mailadres in. Hier ontvang je herinneringen voor het verlopen van certificaten.
Bitwarden-installatie (1)
Bitwarden haalt vervolgens de benodigde Docker-images op. Dat duurt een minuutje, en daarna volgt een nieuwe reeks prompts.
Kies een naam voor de database. Je hoeft hier niet creatief te zijn, vault werkt prima.
Bitwarden-installatie (2)
Daarna gaat de installatie door met het downloaden van extra Docker-images.
Haal de installatie-ID en -sleutel op. Open deBitwarden Host-pagina en voer je admin-e-mail en regio in. Je krijgt dan beide waarden — kopieer/plak ze wanneer hier tijdens de installatie om wordt gevraagd.
Bitwarden installatie-ID en -sleutel
En dat is het — de installatie is voltooid:
Bitwarden-installatie (3)
Het script genereert configuratiebestanden in ./bwdata/config.yml en ./bwdata/env/global.override.env. Je kunt deze bestanden later direct bewerken als je instellingen wilt wijzigen.
Docker haalt alle vereiste images op en start de containers. Dit duurt de eerste keer enkele minuten. Het script toont de voortgang terwijl elke container start.
Bitwarden-installatie (4)
Na een paar minuten zou je de melding Bitwarden is up and running! in de terminal moeten zien. Dat betekent dat de installatie is geslaagd en dat je klaar bent voor de volgende stap.
Bitwarden-installatie (5)
De installatie verifiëren
Open je domein in een browser. Je zou de Bitwarden-inlogpagina moeten zien met een geldig HTTPS-certificaat.
Bitwarden-inlogpagina
Zie je een certificaatwaarschuwing, dan kon Let's Encrypt waarschijnlijk je domein niet verifiëren. Controleer of:
Je DNS-records naar het juiste IP-adres verwijzen
Poorten 80 en 443 open staan in je firewall
Als je Cloudflares proxy gebruikt, schakel die dan tijdelijk uit
Klik op "Create Account" om je eerste gebruiker aan te maken. Dit account wordt de eigenaar van je vault, dus gebruik een sterk masterwachtwoord dat je niet vergeet. Bitwarden kan dit wachtwoord niet herstellen — als je het kwijtraakt, is je vaultdata weg.
Bitwarden-gebruiker aanmaken
Log na het aanmaken van je account in om te verifiëren dat alles werkt. Je kunt een test-loginitem maken en controleren of het goed wordt opgeslagen.
Een loginitem toevoegen aan Bitwarden
Dit werkt zoals verwacht, dus ik ga terug naar de terminal om ook daar te verifiëren dat alles goed draait.
Voer dit commando uit om te controleren of alle containers draaien:
Opstartproblemen komen meestal door poortconflicten of permissieproblemen.
Poortconflicten ontstaan als iets anders poort 80 of 443 gebruikt. Stop de conflicterende service of wijzig de poorten van Bitwarden in ./bwdata/config.yml.
Mislukte database-initialisaties duiden meestal op permissieproblemen. Controleer of de Docker-gebruiker kan schrijven naar de bwdata-map:
sudochown-R root:root /opt/bitwarden/bwdata
sudochmod-R755 /opt/bitwarden/bwdataMogelijk gemaakt door
Fouten bij het genereren van certificaten betekenen dat Let's Encrypt je server niet kon bereiken. Verifieer dat je domein naar het juiste IP wijst en dat je firewall inkomend verkeer op poorten 80 en 443 toestaat.
Als containers blijven herstarten, controleer dan de beschikbare schijfruimte en geheugen. Bitwarden heeft minimaal 2GB RAM nodig om alle services te draaien.
HTTPS en certificaten configureren
Bitwarden vereist HTTPS voor alle verbindingen. Er is geen manier om het via gewoon HTTP te draaien.
De browserextensies en mobiele apps van Bitwarden weigeren verbinding te maken met HTTP-endpoints. Het protocol vereist versleutelde verbindingen om je vaultdata tijdens transport te beschermen.
Het installatiescript zet Let's Encrypt-certificaten op. Let's Encrypt is een gratis certificaatautoriteit die SSL/TLS-certificaten uitgeeft en vernieuwingen afhandelt. Toen je tijdens de installatie je domein invoerde, configureerde het script automatische certificaatgeneratie via het ACME-protocol van Let's Encrypt.
Certificaten verlopen na 90 dagen, maar Bitwardens Docker-setup bevat automatische vernieuwing. Een cronjob controleert op verlopen certificaten en vernieuwt ze tijdig. Je hoeft zelf niets te doen.
Aangepaste certificaten zijn in enkele situaties logisch. Als je Bitwarden achter een reverse proxy draait die al SSL-terminatie regelt, kun je Let's Encrypt uitschakelen en de proxy certificaten laten beheren. Als je organisatie een interne certificaatautoriteit heeft, kun je Bitwarden daarop instellen.
Om aangepaste certificaten te gebruiken, bewerk je ./bwdata/config.yml en stel je ssl_certificate_path en ssl_key_path in op je certificaatbestanden.
Als dat lukt, zou de automatische cronjob voor vernieuwing in de toekomst moeten werken.
E-mail (SMTP) configuratie
Bitwarden heeft e-mail nodig om gebruikersuitnodigingen, links voor wachtwoordherstel en codes voor tweefactorauthenticatie te versturen.
Zonder SMTP kunnen gebruikers hun wachtwoord niet resetten. Je kunt geen teamleden uitnodigen voor je organisatie. Noodtoegang werkt niet. Het systeem werkt wel, maar je verliest cruciale functies voor accountherstel en gebruikersbeheer.
SMTP-instellingen staan in ./bwdata/env/global.override.env.
SMTP-instellingenbestand
Open dit bestand en voeg de configuratie van je e-mailprovider toe:
globalSettings__mail__replyToEmail=[email protected]globalSettings__mail__smtp__host=smtp.gmail.com
globalSettings__mail__smtp__port=587globalSettings__mail__smtp__ssl=false
globalSettings__mail__smtp__username=[email protected]globalSettings__mail__smtp__password=your-app-passwordMogelijk gemaakt door
Het formaat gebruikt dubbele underscores om geneste configuratie aan te geven. Elke __ scheidt een niveau in de instellingenhiërarchie.
Vergeet niet Bitwarden te herstarten nadat je het bestand hebt bewerkt:
Test de e-mailbezorging door een wachtwoordreset aan te vragen of een testmail te sturen via het adminpaneel.
Hier zijn enkele veelgemaakte SMTP-fouten die je wilt vermijden:
Je normale e-mailwachtwoord gebruiken in plaats van een app-specifiek wachtwoord. De meeste providers vereisen een apart wachtwoord voor SMTP-toegang. Gmail noemt dit "App-wachtwoorden" en je maakt ze aan in de beveiligingsinstellingen van je Google-account.
Verkeerde poortnummers. Poort 587 is voor STARTTLS-verbindingen, poort 465 voor SSL/TLS, en poort 25 is meestal geblokkeerd door cloudproviders. Als de ene poort niet werkt, probeer een andere.
SSL/TLS-verwarring. Stel ssl=false in voor STARTTLS op poort 587, of ssl=true voor directe SSL op poort 465. Het door elkaar halen van deze instellingen veroorzaakt verbindingsfouten.
Firewall die uitgaande SMTP blokkeert. Sommige cloudproviders blokkeren standaard poort 25 uitgaand. Gebruik in plaats daarvan poorten 587 of 465, die zelden geblokkeerd zijn.
Als e-mails niet verzonden worden, bekijk dan de logs van de API-container:
Zoek naar SMTP-verbindingsfouten of authenticatiemislukkingen. De logs tonen precies wat er misging met de e-mailbezorging.
Bitwarden updaten en back-uppen
Bij een zelfgehoste installatie horen de lasten van handmatige back-ups en updates. Gelukkig zijn die eenvoudig uit te voeren.
Bitwarden updaten
Stop Bitwarden en maak een back-up van je data voordat je update. Updates kunnen mislukken of problemen introduceren, en je hebt een manier nodig om terug te draaien als er iets misgaat.
Het updatescript haalt de nieuwste Docker-images op, werkt indien nodig configuratiebestanden bij en herstart alle containers. Dit duurt meestal een paar minuten.
Bitwarden updaten
Controleer na het voltooien van de update of alles werkt door in te loggen op je web vault en te checken of je data intact is.
Als de update iets breekt, herstel dan simpelweg je back-up:
sudo ./bitwarden.sh stop
sudorm-rf bwdata/
sudotar-xzf bitwarden-backup-YYYYMMDD.tar.gz
sudo ./bitwarden.sh startMogelijk gemaakt door
Back-ups
De bwdata-map bevat alles wat Bitwarden nodig heeft om te draaien. Je zou deze map regelmatig moeten back-uppen.
Deze map bevat onder meer:
Je vaultdatabase met alle versleutelde wachtwoorden
SSL-certificaten
Configuratiebestanden
Logs en bijlagen
Docker Compose-definities
Stop Bitwarden vóór het back-uppen om dataconsistentie te garanderen:
sudo ./bitwarden.sh stop
sudotar-czf bitwarden-backup-$(date +%Y%m%d).tar.gz bwdata/
sudo ./bitwarden.sh startMogelijk gemaakt door
Bewaar back-ups op meerdere locaties. Houd er één op de server, één op een andere machine en één in de cloud als het kan.
Om te herstellen vanuit een back-up: stop Bitwarden, verwijder de huidige bwdata-map, pak je back-up uit en start opnieuw. Dit is hetzelfde proces als terugdraaien na een mislukte update.
Je kunt back-ups zelfs automatiseren met een cronjob die dagelijks of wekelijks draait, afhankelijk van hoe vaak je vaultdata verandert.
Veelvoorkomende problemen bij het draaien van Bitwarden in Docker
Zelfs met een schone installatie kun je problemen tegenkomen. Zo pak je de meest voorkomende aan.
Poortconflicten treden op als een andere service al poort 80 of 443 gebruikt. Check wat deze poorten gebruikt:
Zie je Apache, Nginx of een andere webserver draaien, dan moet je die service stoppen of de poorten van Bitwarden wijzigen. Om poorten te wijzigen, bewerk ./bwdata/config.yml en stel http_port en https_port in op andere waarden, zoals 8080 en 8443. Herstart daarna:
Onthoud dat Bitwarden minstens enkele GB vrije ruimte nodig heeft om goed te draaien.
Niet-werkende SMTP voorkomt wachtwoordresets en gebruikersuitnodigingen. Test je SMTP-instellingen eerst door de API-logs te bekijken wanneer je een e-mail probeert te verzenden:
Trigger een poging tot wachtwoordreset en let op SMTP-fouten in de logs. Dit zijn de meest voorkomende oorzaken:
Verkeerde gebruikersnaam of wachtwoord (gebruik app-specifieke wachtwoorden, niet je gewone wachtwoord)
Verkeerde poort- of SSL-instellingen
Firewall blokkeert uitgaande SMTP-verbindingen
E-mailprovider vereist extra authenticatiestappen
Je kunt verifiëren of je SMTP-instellingen in ./bwdata/env/global.override.env exact overeenkomen met de documentatie van je provider. Zelfs kleine typfouten in hostnaam of poort breken e-mailbezorging.
Herstart Bitwarden na het corrigeren van de SMTP-instellingen en test opnieuw.
Bitwarden vs Vaultwarden (favoriet onder Docker-gebruikers)
Vaultwarden is een onofficiële, door de community onderhouden implementatie van de Bitwarden-server, geschreven in Rust.
Het heeft geen band met Bitwarden Inc., maar is compatibel met alle officiële Bitwarden-clients. Je gebruikt dezelfde browserextensies, mobiele apps en desktopapplicaties. Het verschil zit volledig aan de serverkant.
Waarom gebruikers voor Vaultwarden kiezen
Lager resourcegebruik. Vaultwarden draait in één lichte container die minder dan 100MB RAM nodig heeft. De officiële Bitwarden gebruikt meerdere containers en heeft minstens 2GB nodig. Als je op een kleine VPS of Raspberry Pi draait, is Vaultwarden logischer.
Eenvoudigere setup. Eén container betekent minder bewegende delen. Geen aparte databasecontainer, geen aparte webcontainer. Je trekt één image binnen, configureert één container en klaar.
Sommige premiumfuncties werken zonder betaalde licentie. Vaultwarden schakelt functies in zoals bestandsbijlagen en noodtoegang die bij de officiële Bitwarden een premiumabonnement vereisen.
Afbakening en nadelen van Vaultwarden
Het is een communityproject. Updates komen van vrijwilligers, niet van een bedrijf met toegewijd supportteam.
Geen officiële support. Bitwarden Inc. helpt je niet met Vaultwarden-problemen. Je bent aangewezen op communityfora en GitHub-issues.
Potentiële compatibiliteitsissues. Wanneer Bitwarden nieuwe functies uitbrengt, moet Vaultwarden bijbenen. Er is meestal enige vertraging voordat nieuwe functionaliteit werkt.
Welke moet je gebruiken?
Gebruik de officiële Bitwarden als je enterprise-support wilt, gegarandeerde compatibiliteit met alle functies en de ruggensteun van het bedrijf dat de clients bouwt. De resourcevereisten maken minder uit als je een voldoende maatgevormde VPS hebt.
Kies Vaultwarden als je op beperkte hardware draait, een eenvoudigere setup wilt of premiumfuncties nodig hebt zonder te betalen. Begrijp wel dat je officiële support inruilt voor efficiënt resourcegebruik.
Beide werken goed voor zelfhosten en beide beschermen je wachtwoorden met dezelfde versleuteling waarop de clients vertrouwen.
Basisprincipes voor goede beveiliging
Het is vanzelfsprekend, maar Bitwarden bewaart je wachtwoorden, dus je wilt meer bescherming dan alleen encryptie. Volg deze best practices.
Houd je server up-to-date. Beveiligingspatches zijn belangrijk, dus voer regelmatig updates uit. Hier is een commando om dat te doen:
Je kunt automatische beveiligingsupdates instellen zodat kritieke patches zonder handmatige tussenkomst worden geïnstalleerd. Op Ubuntu installeer je unattended-upgrades:
sudoaptinstall unattended-upgrades -ysudo dpkg-reconfigure --priority=low unattended-upgradesMogelijk gemaakt door
Beperk toegang tot het adminpaneel. De admininterface van Bitwarden staat op /admin en gebruikt een aparte admin-token voor authenticatie. Genereer tijdens de installatie een sterke token en bewaar die veilig. Stel het adminpaneel niet bloot aan het publieke internet als het niet hoeft.
Als je externe admin-toegang nodig hebt, gebruik dan SSH-tunneling of een VPN in plaats van /admin publiek toegankelijk te laten.
Gebruik overal HTTPS. Schakel HTTPS nooit uit en omzeil geen certificaatwaarschuwingen. Als je certificaten niet werken, los dat op in plaats van een workaround te gebruiken. Bitwarden-clients weigeren om goede redenen verbinding via HTTP.
Volg Bitwarden-releases. Abonneer je op Bitwardens GitHub-releases of check hun blog voor beveiligingsupdates. Lees de releasenotes voordat je update om te begrijpen wat er is veranderd.
Schakel tweefactorauthenticatie in op je vaultaccount. Zelfs als iemand je masterwachtwoord steelt, blokkeert 2FA ongeautoriseerde toegang. Gebruik een authenticator-app of hardware key.
Gebruik een firewall. Ter referentie: zo kun je UFW configureren om alleen de benodigde poorten toe te staan:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableMogelijk gemaakt door
Blokkeer de rest standaard.
Check af en toe de logs op ongebruikelijke activiteit. Zoek naar mislukte inlogpogingen of onverwachte API-calls:
Zoals je ziet, betekent Bitwarden zelf hosten dat je af en toe wat werk hebt. Dat is de prijs voor volledige controle.
Conclusie
Docker maakt het eenvoudig om Bitwarden zelf te hosten en je hebt geen enterprise-infrastructuur nodig.
Het officiële installatiescript doet alles voor je. Je krijgt automatische updates, certificaatbeheer en een werkende vault in minder dan een uur — bij mij duurde het ongeveer 15 minuten, inclusief het inrichten van de compute-instantie en DNS-setup. De meeste gebruikers hebben niet meer nodig dan wat ik in dit artikel heb behandeld.
Begin met de basissetup op één server. Word vertrouwd met back-ups, updates en basistroubleshooting voordat je reverse proxies, externe databases of high availability-setups toevoegt. Die geavanceerde configuraties lossen problemen op die je waarschijnlijk nog niet hebt.
Als je je wachtwoorden niet aan derden wilt toevertrouwen, is dit de manier. Maar het is ook belangrijk het niet te ingewikkeld te maken en iets te breken. Draai de officiële Docker-implementatie, maak er regelmatig een back-up van en je hebt een solide wachtwoordmanager onder jouw controle.
Senior Data Scientist, gevestigd in Kroatië. Top Tech-schrijver met meer dan 700 gepubliceerde artikelen en meer dan 10 miljoen weergaven. Auteur van het boek Machine Learning Automation with TPOT.
FAQs
How can I ensure high availability for my Bitwarden self-hosted instance?⌄
High availability vereist het draaien van meerdere Bitwarden-instanties achter een load balancer met een gedeelde externe database zoals PostgreSQL of MySQL. Je moet elke instantie configureren om verbinding te maken met dezelfde database en gedeelde opslag voor bijlagen te gebruiken. Voor de meeste installaties voor persoonlijk gebruik en kleine teams bieden reguliere back-ups en een gedocumenteerd herstelproces voldoende bescherming zonder de complexiteit van een HA-architectuur.
What are the best practices for configuring SMTP in Bitwarden?⌄
Gebruik app-specifieke wachtwoorden in plaats van je normale e-mailwachtwoord, en controleer dat je SMTP-instellingen exact overeenkomen met de documentatie van je provider. Test e-mailbezorging altijd na de configuratie door een wachtwoordreset te starten of de testfunctie in het adminpaneel te gebruiken. Sla SMTP-gegevens veilig op in het global.override.env-bestand en beperk bestandspermissies om ongeautoriseerde toegang te voorkomen.
How do I troubleshoot a 502 Bad Gateway error in Bitwarden?⌄
Controleer of alle containers draaien met sudo docker ps en let op containers met status "Restarting". Bekijk de logs van de nginx- en API-containers met sudo docker logs bitwarden-nginx en sudo docker logs bitwarden-api om de falende service te identificeren. Veelvoorkomende oorzaken zijn een API-container die niet start door databaseverbindingsproblemen, onvoldoende geheugen of certificaatproblemen die de reverse proxy blokkeren.
Can I use custom server ports with Bitwarden?⌄
Ja, bewerk ./bwdata/config.yml en wijzig http_port en https_port naar je voorkeur, zoals 8080 en 8443. Herstart Bitwarden na het wijzigen van de poorten met sudo ./bitwarden.sh restart. Onthoud dat je bij niet-standaard poorten het poortnummer in de domein-URL moet opnemen wanneer je de vault benadert.
How do I enable logging to syslog in Bitwarden?⌄
De Docker-containers van Bitwarden loggen standaard naar stdout/stderr, die Docker automatisch opvangt. Je kunt deze logs doorsturen naar syslog door de loggingdriver van Docker in de containerinstellingen te configureren of een logaggregatietool zoals Fluentd of Logstash te gebruiken. Voor eenvoudige syslogintegratie gebruik je Docker’s syslog-loggingdriver door --log-driver=syslog toe te voegen aan je containerconfiguratie, al vereist dit handmatige aanpassing van het Docker Compose-bestand.
In dit artikel loodst ik je door het installeren van Bitwarden met Docker op een schone Ubuntu-server, het configureren van HTTPS met Let's Encrypt en het oplossen van veelvoorkomende installatieproblemen.
Als je net begint met Docker, kun je beter eerst onze Introduction to Docker of Intermediate Docker cursussen volgen — leer eerst de basis voordat je meerdere containers gaat beheren.
Wat houdt Bitwardens Docker-implementatie in?
Bitwarden heeft een officiële Docker-gebaseerde installatie waarmee je een wachtwoordmanager volledig naar eigen wens kunt draaien.
Alles wat je hoeft te doen is één installatiescript uitvoeren. Je hoeft geen databases of webservers handmatig te installeren of code te schrijven. Docker haalt vooraf geconfigureerde containers op, zet de onderlinge netwerken op en start alles. Updaten werkt hetzelfde: voer het updatescript uit en Docker regelt de rest.
Bitwardens Docker-setup draait als meerdere samenwerkende containers. Je krijgt een web vault-container voor de gebruikersinterface, een API-container voor verzoekafhandeling, een databasecontainer voor versleutelde vaultdata en ondersteunende services voor bijlagen en iconen. Docker Compose orkestreert deze containers zodat ze met elkaar kunnen communiceren.
Alles is vooraf voor je geconfigureerd.
Deze multi-container aanpak betekent dat elke component geïsoleerd draait. Als je de database moet aanpassen, kun je alleen die container herstarten zonder de webinterface te raken. Wil je logs nakijken, dan heeft elke service z’n eigen logstream.
De officiële implementatie gebruikt Docker Compose om alles via één configuratiebestand te beheren, waardoor het geheel makkelijker te begrijpen en te onderhouden is dan een traditionele serverinstallatie.
Vereisten voordat je Bitwarden met Docker draait
Je hebt een paar dingen nodig voordat je Bitwarden kunt draaien, maar geen daarvan vereist enterprise-hardware of complexe setups.
Een Linux-server of VM is je startpunt. Ubuntu Server is eigenlijk alles wat je nodig hebt. Je kunt een cloudinstantie gebruiken van AWS, DigitalOcean of Linode. Een basisinstantie met 2GB RAM en 20GB opslag is genoeg om Bitwarden te draaien voor persoonlijk gebruik of kleine teams.
Docker en Docker Compose verzorgen de eigenlijke installatie. Je installeert Docker Engine (niet Docker Desktop) en Docker Compose als aparte pakketten. De meeste Linux-distributies bieden beide in hun pakketbeheer aan.
Een domeinnaam is vereist omdat Bitwarden HTTPS nodig heeft. Je kunt het niet op een IP-adres draaien. Je moet je domein vooraf naar het IP-adres van je server laten verwijzen.
Poorten 80 en 443 moeten open staan op je server. Poort 80 handelt HTTP-verkeer en certificaatvalidatie af, terwijl poort 443 het eigenlijke HTTPS-verkeer bedient. Configureer je firewall en de security groups van je cloudprovider om inkomende verbindingen op beide poorten toe te staan.
Je hebt ook basisvaardigheden op de command line nodig. Je maakt via SSH verbinding met je server, voert installatiescripts uit en bewerkt configuratiebestanden. Als je mappen kunt navigeren en commando’s met sudo kunt draaien, ben je er klaar voor.
En dat is het! Er zijn dingen die je moet weten, zeker, maar vrijwel iedereen die een beetje technisch is kan het. Ik laat je zo zien hoe.
Bitwarden installeren met Docker (officiële methode)
Deze walkthrough gebruikt een DigitalOcean Ubuntu-droplet en Cloudflare voor domein- en DNS-beheer. Je bent vrij om andere providers en services te gebruiken — maar als je zonder gedoe wilt meeklikken, raad ik aan hetzelfde te kiezen.
Je omgeving instellen
Maak eerst een DigitalOcean-droplet met Ubuntu 24.04 LTS. De Basic-droplet van $12/maand (2GB RAM, 1 CPU, 50GB SSD) draait Bitwarden prima voor persoonlijk gebruik of kleine teams. Kies een datacenterregio dicht bij jou voor betere responstijden. Vergeet niet een bestaande SSH-sleutel toe te voegen of een nieuwe te maken.
Noteer na het opstarten van de droplet het openbare IP-adres in het DigitalOcean-dashboard.
Details van de DigitalOcean-droplet
Configureer vervolgens DNS in Cloudflare. Log in bij je Cloudflare-account en voeg een A-record toe dat je domein naar het IP-adres van de droplet wijst:
Type:
ANaam:
vault(of je gewenste subdomein)IPv4-adres: het IP van je droplet
Proxystatus: Uit (grijze wolk)
Zet Cloudflares proxy uit voor de initiële setup. Let's Encrypt heeft directe toegang tot je server nodig om domeineigendom te verifiëren. Je kunt de proxy weer inschakelen nadat Bitwarden draait en certificaten zijn gegenereerd.
Ik heb een van mijn actieve domeinen gebruikt voor dit artikel:
Cloudflare DNS-configuratie
DNS-propagatie duurt een paar minuten. Voer dit shellcommando uit om te verifiëren dat de wijzigingen zichtbaar zijn:
Je zou het IP-adres van je droplet in de response moeten zien.
Nslookup-resultaten
Je kunt nu via SSH verbinding maken met je droplet:
En je bent binnen:
Verbinding maken met de Ubuntu-instantie
Oké, de eerste stap is het updaten van de systeempakketten. Voer het volgende commando uit:
Nu ben je klaar om Docker en Bitwarden te installeren.
Zoals eerder vermeld heb je zowel Docker als Docker Compose nodig. Voer deze commando’s uit om ze te installeren:
En verifieer nu de installatie:
Je zou versienummers voor beide commando’s moeten zien.
Versies van Docker en Docker Compose
Daarna laat ik je zien hoe je Bitwarden installeert.
De Bitwarden-installer downloaden en voorbereiden
De officiële installer van Bitwarden staat in hun GitHub-repository. Je kunt hem rechtstreeks naar je server downloaden:
Dit downloadt het installatiescript en maakt het uitvoerbaar. Het script regelt alles: van Docker-images downloaden en configuratiebestanden maken tot het opzetten van de directorystructuur.
De volgende stap is een map maken waarin Bitwarden z’n data opslaat:
Je kunt het installatiescript daarheen verplaatsen:
En tot slot, voer de installer uit:
Het script maakt een
bwdata-map aan die alle configuratiebestanden, certificaten, logs en databasebestanden van Bitwarden bevat. Hier staat alles, dus maak regelmatig een back-up van deze map.De installatie uitvoeren
De installer stelt je een aantal vragen. Beantwoord ze zorgvuldig, want als je hier fouten maakt, moet je opnieuw beginnen.
Voer je domeinnaam in precies zoals die in je DNS-records staat. Als je
vault.yourdomain.comin Cloudflare hebt ingesteld, voer dan exact die string in. Neem geenhttps://of afsluitende slashes op.Kies Let's Encrypt voor SSL-certificaten. De installer regelt automatisch het genereren en vernieuwen van certificaten. Als je Cloudflares proxy (de oranje wolk) gebruikt, moet je die mogelijk tijdelijk uitschakelen tijdens de eerste setup zodat Let's Encrypt je domein kan verifiëren.
Voer je e-mailadres in. Hier ontvang je herinneringen voor het verlopen van certificaten.
Bitwarden-installatie (1)
Bitwarden haalt vervolgens de benodigde Docker-images op. Dat duurt een minuutje, en daarna volgt een nieuwe reeks prompts.
Kies een naam voor de database. Je hoeft hier niet creatief te zijn,
vaultwerkt prima.Bitwarden-installatie (2)
Daarna gaat de installatie door met het downloaden van extra Docker-images.
Haal de installatie-ID en -sleutel op. Open de Bitwarden Host-pagina en voer je admin-e-mail en regio in. Je krijgt dan beide waarden — kopieer/plak ze wanneer hier tijdens de installatie om wordt gevraagd.
Bitwarden installatie-ID en -sleutel
En dat is het — de installatie is voltooid:
Bitwarden-installatie (3)
Het script genereert configuratiebestanden in
./bwdata/config.ymlen./bwdata/env/global.override.env. Je kunt deze bestanden later direct bewerken als je instellingen wilt wijzigen.Het enige wat nu nog rest, is Bitwarden starten:
Docker haalt alle vereiste images op en start de containers. Dit duurt de eerste keer enkele minuten. Het script toont de voortgang terwijl elke container start.
Bitwarden-installatie (4)
Na een paar minuten zou je de melding
Bitwarden is up and running!in de terminal moeten zien. Dat betekent dat de installatie is geslaagd en dat je klaar bent voor de volgende stap.Bitwarden-installatie (5)
De installatie verifiëren
Open je domein in een browser. Je zou de Bitwarden-inlogpagina moeten zien met een geldig HTTPS-certificaat.
Bitwarden-inlogpagina
Zie je een certificaatwaarschuwing, dan kon Let's Encrypt waarschijnlijk je domein niet verifiëren. Controleer of:
Klik op "Create Account" om je eerste gebruiker aan te maken. Dit account wordt de eigenaar van je vault, dus gebruik een sterk masterwachtwoord dat je niet vergeet. Bitwarden kan dit wachtwoord niet herstellen — als je het kwijtraakt, is je vaultdata weg.
Bitwarden-gebruiker aanmaken
Log na het aanmaken van je account in om te verifiëren dat alles werkt. Je kunt een test-loginitem maken en controleren of het goed wordt opgeslagen.
Een loginitem toevoegen aan Bitwarden
Dit werkt zoals verwacht, dus ik ga terug naar de terminal om ook daar te verifiëren dat alles goed draait.
Voer dit commando uit om te controleren of alle containers draaien:
Je zou meerdere containers moeten zien met namen als
bitwarden-web,bitwarden-api,bitwarden-dben andere.Draaiende containers
Als containers op "Restarting" staan of ontbreken, bekijk dan de logs met deze commando’s:
Opstartproblemen komen meestal door poortconflicten of permissieproblemen.
Poortconflicten ontstaan als iets anders poort 80 of 443 gebruikt. Stop de conflicterende service of wijzig de poorten van Bitwarden in
./bwdata/config.yml.Mislukte database-initialisaties duiden meestal op permissieproblemen. Controleer of de Docker-gebruiker kan schrijven naar de
bwdata-map:Fouten bij het genereren van certificaten betekenen dat Let's Encrypt je server niet kon bereiken. Verifieer dat je domein naar het juiste IP wijst en dat je firewall inkomend verkeer op poorten 80 en 443 toestaat.
Als containers blijven herstarten, controleer dan de beschikbare schijfruimte en geheugen. Bitwarden heeft minimaal 2GB RAM nodig om alle services te draaien.
HTTPS en certificaten configureren
Bitwarden vereist HTTPS voor alle verbindingen. Er is geen manier om het via gewoon HTTP te draaien.
De browserextensies en mobiele apps van Bitwarden weigeren verbinding te maken met HTTP-endpoints. Het protocol vereist versleutelde verbindingen om je vaultdata tijdens transport te beschermen.
Het installatiescript zet Let's Encrypt-certificaten op. Let's Encrypt is een gratis certificaatautoriteit die SSL/TLS-certificaten uitgeeft en vernieuwingen afhandelt. Toen je tijdens de installatie je domein invoerde, configureerde het script automatische certificaatgeneratie via het ACME-protocol van Let's Encrypt.
Certificaten verlopen na 90 dagen, maar Bitwardens Docker-setup bevat automatische vernieuwing. Een cronjob controleert op verlopen certificaten en vernieuwt ze tijdig. Je hoeft zelf niets te doen.
Aangepaste certificaten zijn in enkele situaties logisch. Als je Bitwarden achter een reverse proxy draait die al SSL-terminatie regelt, kun je Let's Encrypt uitschakelen en de proxy certificaten laten beheren. Als je organisatie een interne certificaatautoriteit heeft, kun je Bitwarden daarop instellen.
Om aangepaste certificaten te gebruiken, bewerk je
./bwdata/config.ymlen stel jessl_certificate_pathenssl_key_pathin op je certificaatbestanden.Aangepaste certificaten gebruiken
Herstart Bitwarden daarna:
Als certificaatvernieuwing mislukt, controleer dan eerst de logs:
Veelvoorkomende oorzaken van mislukte vernieuwing zijn:
Los het onderliggende probleem op en trigger dan handmatig de vernieuwing:
Als dat lukt, zou de automatische cronjob voor vernieuwing in de toekomst moeten werken.
E-mail (SMTP) configuratie
Bitwarden heeft e-mail nodig om gebruikersuitnodigingen, links voor wachtwoordherstel en codes voor tweefactorauthenticatie te versturen.
Zonder SMTP kunnen gebruikers hun wachtwoord niet resetten. Je kunt geen teamleden uitnodigen voor je organisatie. Noodtoegang werkt niet. Het systeem werkt wel, maar je verliest cruciale functies voor accountherstel en gebruikersbeheer.
SMTP-instellingen staan in
./bwdata/env/global.override.env.SMTP-instellingenbestand
Open dit bestand en voeg de configuratie van je e-mailprovider toe:
Het formaat gebruikt dubbele underscores om geneste configuratie aan te geven. Elke
__scheidt een niveau in de instellingenhiërarchie.Vergeet niet Bitwarden te herstarten nadat je het bestand hebt bewerkt:
Test de e-mailbezorging door een wachtwoordreset aan te vragen of een testmail te sturen via het adminpaneel.
Hier zijn enkele veelgemaakte SMTP-fouten die je wilt vermijden:
Je normale e-mailwachtwoord gebruiken in plaats van een app-specifiek wachtwoord. De meeste providers vereisen een apart wachtwoord voor SMTP-toegang. Gmail noemt dit "App-wachtwoorden" en je maakt ze aan in de beveiligingsinstellingen van je Google-account.
Verkeerde poortnummers. Poort 587 is voor STARTTLS-verbindingen, poort 465 voor SSL/TLS, en poort 25 is meestal geblokkeerd door cloudproviders. Als de ene poort niet werkt, probeer een andere.
SSL/TLS-verwarring. Stel
ssl=falsein voor STARTTLS op poort 587, ofssl=truevoor directe SSL op poort 465. Het door elkaar halen van deze instellingen veroorzaakt verbindingsfouten.Firewall die uitgaande SMTP blokkeert. Sommige cloudproviders blokkeren standaard poort 25 uitgaand. Gebruik in plaats daarvan poorten 587 of 465, die zelden geblokkeerd zijn.
Als e-mails niet verzonden worden, bekijk dan de logs van de API-container:
Zoek naar SMTP-verbindingsfouten of authenticatiemislukkingen. De logs tonen precies wat er misging met de e-mailbezorging.
Bitwarden updaten en back-uppen
Bij een zelfgehoste installatie horen de lasten van handmatige back-ups en updates. Gelukkig zijn die eenvoudig uit te voeren.
Bitwarden updaten
Stop Bitwarden en maak een back-up van je data voordat je update. Updates kunnen mislukken of problemen introduceren, en je hebt een manier nodig om terug te draaien als er iets misgaat.
Maak een back-up van de volledige
bwdata-map:Verplaats deze back-up naar een veilige plek, zoals een externe schijf of een andere server.
Update Bitwarden nu met dit commando:
Het updatescript haalt de nieuwste Docker-images op, werkt indien nodig configuratiebestanden bij en herstart alle containers. Dit duurt meestal een paar minuten.
Bitwarden updaten
Controleer na het voltooien van de update of alles werkt door in te loggen op je web vault en te checken of je data intact is.
Als de update iets breekt, herstel dan simpelweg je back-up:
Back-ups
De
bwdata-map bevat alles wat Bitwarden nodig heeft om te draaien. Je zou deze map regelmatig moeten back-uppen.Deze map bevat onder meer:
Stop Bitwarden vóór het back-uppen om dataconsistentie te garanderen:
Bewaar back-ups op meerdere locaties. Houd er één op de server, één op een andere machine en één in de cloud als het kan.
Om te herstellen vanuit een back-up: stop Bitwarden, verwijder de huidige
bwdata-map, pak je back-up uit en start opnieuw. Dit is hetzelfde proces als terugdraaien na een mislukte update.Je kunt back-ups zelfs automatiseren met een cronjob die dagelijks of wekelijks draait, afhankelijk van hoe vaak je vaultdata verandert.
Veelvoorkomende problemen bij het draaien van Bitwarden in Docker
Zelfs met een schone installatie kun je problemen tegenkomen. Zo pak je de meest voorkomende aan.
Poortconflicten treden op als een andere service al poort 80 of 443 gebruikt. Check wat deze poorten gebruikt:
Zie je Apache, Nginx of een andere webserver draaien, dan moet je die service stoppen of de poorten van Bitwarden wijzigen. Om poorten te wijzigen, bewerk
./bwdata/config.ymlen stelhttp_portenhttps_portin op andere waarden, zoals 8080 en 8443. Herstart daarna:Certificaatfouten tonen zich als browserwaarschuwingen of Bitwarden dat weigert te starten. Check de nginx-containerlogs met dit commando:
Let op ACME-challengefouten of validatiefouten van certificaten. Dit zijn de meest voorkomende oorzaken:
Los het DNS- of firewallprobleem op en vraag daarna handmatig certificaten aan:
Containers die niet starten, betekenen meestal databaseproblemen of ontbrekende bestanden. Controleer welke containers draaien met:
Containers met status "Exited" of "Restarting" hebben problemen. Bekijk hun logs:
Database-initialisatiefouten duiden op permissieproblemen in de
bwdata-map. Fix permissies:Als containers nog steeds niet starten, controleer de schijfruimte:
Onthoud dat Bitwarden minstens enkele GB vrije ruimte nodig heeft om goed te draaien.
Niet-werkende SMTP voorkomt wachtwoordresets en gebruikersuitnodigingen. Test je SMTP-instellingen eerst door de API-logs te bekijken wanneer je een e-mail probeert te verzenden:
Trigger een poging tot wachtwoordreset en let op SMTP-fouten in de logs. Dit zijn de meest voorkomende oorzaken:
Je kunt verifiëren of je SMTP-instellingen in
./bwdata/env/global.override.envexact overeenkomen met de documentatie van je provider. Zelfs kleine typfouten in hostnaam of poort breken e-mailbezorging.Herstart Bitwarden na het corrigeren van de SMTP-instellingen en test opnieuw.
Bitwarden vs Vaultwarden (favoriet onder Docker-gebruikers)
Vaultwarden is een onofficiële, door de community onderhouden implementatie van de Bitwarden-server, geschreven in Rust.
Het heeft geen band met Bitwarden Inc., maar is compatibel met alle officiële Bitwarden-clients. Je gebruikt dezelfde browserextensies, mobiele apps en desktopapplicaties. Het verschil zit volledig aan de serverkant.
Waarom gebruikers voor Vaultwarden kiezen
Afbakening en nadelen van Vaultwarden
Welke moet je gebruiken?
Gebruik de officiële Bitwarden als je enterprise-support wilt, gegarandeerde compatibiliteit met alle functies en de ruggensteun van het bedrijf dat de clients bouwt. De resourcevereisten maken minder uit als je een voldoende maatgevormde VPS hebt.
Kies Vaultwarden als je op beperkte hardware draait, een eenvoudigere setup wilt of premiumfuncties nodig hebt zonder te betalen. Begrijp wel dat je officiële support inruilt voor efficiënt resourcegebruik.
Beide werken goed voor zelfhosten en beide beschermen je wachtwoorden met dezelfde versleuteling waarop de clients vertrouwen.
Basisprincipes voor goede beveiliging
Het is vanzelfsprekend, maar Bitwarden bewaart je wachtwoorden, dus je wilt meer bescherming dan alleen encryptie. Volg deze best practices.
Houd je server up-to-date. Beveiligingspatches zijn belangrijk, dus voer regelmatig updates uit. Hier is een commando om dat te doen:
Je kunt automatische beveiligingsupdates instellen zodat kritieke patches zonder handmatige tussenkomst worden geïnstalleerd. Op Ubuntu installeer je
unattended-upgrades:Beperk toegang tot het adminpaneel. De admininterface van Bitwarden staat op
/adminen gebruikt een aparte admin-token voor authenticatie. Genereer tijdens de installatie een sterke token en bewaar die veilig. Stel het adminpaneel niet bloot aan het publieke internet als het niet hoeft.Als je externe admin-toegang nodig hebt, gebruik dan SSH-tunneling of een VPN in plaats van
/adminpubliek toegankelijk te laten.Gebruik overal HTTPS. Schakel HTTPS nooit uit en omzeil geen certificaatwaarschuwingen. Als je certificaten niet werken, los dat op in plaats van een workaround te gebruiken. Bitwarden-clients weigeren om goede redenen verbinding via HTTP.
Volg Bitwarden-releases. Abonneer je op Bitwardens GitHub-releases of check hun blog voor beveiligingsupdates. Lees de releasenotes voordat je update om te begrijpen wat er is veranderd.
Schakel tweefactorauthenticatie in op je vaultaccount. Zelfs als iemand je masterwachtwoord steelt, blokkeert 2FA ongeautoriseerde toegang. Gebruik een authenticator-app of hardware key.
Gebruik een firewall. Ter referentie: zo kun je UFW configureren om alleen de benodigde poorten toe te staan:
Blokkeer de rest standaard.
Check af en toe de logs op ongebruikelijke activiteit. Zoek naar mislukte inlogpogingen of onverwachte API-calls:
Zoals je ziet, betekent Bitwarden zelf hosten dat je af en toe wat werk hebt. Dat is de prijs voor volledige controle.
Conclusie
Docker maakt het eenvoudig om Bitwarden zelf te hosten en je hebt geen enterprise-infrastructuur nodig.
Het officiële installatiescript doet alles voor je. Je krijgt automatische updates, certificaatbeheer en een werkende vault in minder dan een uur — bij mij duurde het ongeveer 15 minuten, inclusief het inrichten van de compute-instantie en DNS-setup. De meeste gebruikers hebben niet meer nodig dan wat ik in dit artikel heb behandeld.
Begin met de basissetup op één server. Word vertrouwd met back-ups, updates en basistroubleshooting voordat je reverse proxies, externe databases of high availability-setups toevoegt. Die geavanceerde configuraties lossen problemen op die je waarschijnlijk nog niet hebt.
Als je je wachtwoorden niet aan derden wilt toevertrouwen, is dit de manier. Maar het is ook belangrijk het niet te ingewikkeld te maken en iets te breken. Draai de officiële Docker-implementatie, maak er regelmatig een back-up van en je hebt een solide wachtwoordmanager onder jouw controle.
Klaar om meer over Docker te leren? Begin met onze Containerization and Virtualization Concepts-cursus en zie het daarna in actie met Docker and Kubernetes.