Vaultwarden hosten op een Managed VPS: uw wachtwoorden op uw eigen server

Vaultwarden hosten op een Managed VPS betekent dat u uw wachtwoorden en die van uw team bewaart op een machine die van u is, en die ons team bijwerkt en dag en nacht in de gaten houdt. Vaultwarden is opensourcesoftware onder de AGPL-3.0-licentie. Deze gids volgt de officiële documentatie: de installatie met Docker Compose, HTTPS, het sluiten van de registraties, het beheerderstoken, wat de kluis beschermt, de database, e-mails, back-ups en updates.

Simon Vasconcelos Lee Door Gepubliceerd op 8 november 2026Leestijd: 15 minuten

Alle gidsen

In het kort

  1. Dankzij de AGPL-3.0-licentie draait u Vaultwarden vrij, in een bedrijf of elders; wijzigt u het, dan biedt u de code van uw versie aan wie ze gebruikt.
  2. Installeer het met Docker Compose: één image, een lokaal gepubliceerde poort en een gegevensmap, achter een reverse proxy.
  3. HTTPS is onmisbaar voor de webkluis: bied Vaultwarden aan onder een eigen domeinnaam en geef die naam op in DOMAIN.
  4. Maak uw account aan en sluit daarna de registraties met SIGNUPS_ALLOWED: standaard kan iedereen die de instantie bereikt zich registreren. Een sterk hoofdwachtwoord en tweestapsverificatie beschermen vervolgens de kluis.
  5. Maak elke dag een back-up van de database en de bijlagen, test het terugzetten, en werk bij met docker compose pull.

Wat Vaultwarden doet

Vaultwarden is een server voor wachtwoordbeheer, geschreven in Rust en bedoeld voor self-hosting. De wiki richt het op particulieren, gezinnen en organisaties van menselijke omvang. De webkluis wordt meegeleverd in de Docker-images.

Het implementeert een API die compatibel is met de officiële Bitwarden-clients, in de browser, op de computer en op de telefoon. De README preciseert dat het project niet verbonden is met Bitwarden of Bitwarden, Inc., en vraagt elk probleem, welke client u ook gebruikt, rechtstreeks aan het project te melden in plaats van bij de officiële supportkanalen.

De wiki somt ook op wat ontbreekt ten opzichte van de officiële server, zoals aanmelden met een passkey, aangepaste rollen en bepaalde bedrijfsbeleidsregels. Ze preciseert dat functies die vooral voor grote organisaties nuttig zijn geen prioriteit van het project zijn: lees die lijst als u ze nodig hebt.

Wat de AGPL-3.0-licentie toestaat

Vaultwarden wordt gepubliceerd onder de GNU Affero General Public License, versie 3. De tekst kent een onbeperkte toestemming toe om het ongewijzigde programma te draaien. U kunt de image die het project publiceert dus gebruiken voor uw bedrijf en uw team, zonder een licentie te kopen.

Artikel 13 voegt een voorwaarde toe die eigen is aan de AGPL: als u het programma wijzigt, moet uw versie iedereen die het op afstand, via het netwerk, gebruikt de mogelijkheid bieden de broncode gratis te verkrijgen.

De installatie met Docker Compose

De README beveelt de containerimages aan. Maak op een server waar Docker is geïnstalleerd een map aan en plaats daarin dit compose.yaml, overgenomen uit de README en de wiki:

compose.yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data/:/data/
    ports:
      - 127.0.0.1:8000:80
Terminal
docker compose up -d

Uw domeinnaam wijst met A- en AAAA-records naar de server, en de bezoekers komen binnen op de poorten 80 en 443. Zolang de reverse proxy er niet staat, blijft de webkluis onbruikbaar: ga rechtstreeks naar de volgende sectie.

Het project noemt geen cijfers voor geheugen of processor; het presenteert zich alleen als oplossing voor de gevallen waarin de officiële, resource-hongerige dienst niet past. De grootte hangt af van het aantal accounts en het volume aan bijlagen. Beschrijf op een managed VPS uw gebruik aan ons, dan raden wij u de passende grootte aan.

HTTPS en WebSocket: de reverse proxy

De webkluis steunt op de Web Crypto API, die browsers voorbehouden aan beveiligde contexten: de README zegt dat ze pas werkt als HTTPS is ingeschakeld, en de wiki noemt HTTPS “pretty much required”, ongeveer verplicht. Het project beveelt een reverse proxy voor Vaultwarden aan en raadt de TLS af die in zijn framework Rocket is ingebouwd.

Neem een erkend certificaat, zoals die van Let's Encrypt, dat de wiki aanbeveelt: met een zelfondertekend certificaat weigeren sommige platformen de verbinding. Het certificaat moet zijn volledige keten bevatten, anders maken Android-apparaten geen verbinding.

De WebSocket-meldingen, standaard actief, laten de browser, de desktopapp en de extensie weten dat een item is gewijzigd. Ze lopen via de hoofdpoort voor HTTP, en de proxy moet de headers Upgrade en Connection doorgeven. De mobiele apps gebruiken de native meldingen van hun systeem, die apart worden ingesteld.

Met Caddy

De wiki raadt aan eerst naar Caddy te kijken als u geen voorkeur hebt: het schakelt HTTPS zelf in, verkrijgt het Let's Encrypt-certificaat en ondersteunt WebSocket. De instelling uit de wiki geeft ook het echte adres van de bezoeker door aan Vaultwarden, voor zijn logboeken:

Caddyfile
vault.example.com {
  reverse_proxy 127.0.0.1:8000 {
    header_up X-Real-IP {remote_host}
  }
}

Met Nginx en Certbot

Dit blok neemt het Nginx-voorbeeld uit de wiki over, teruggebracht tot poort 80 zodat Certbot HTTPS kan plaatsen:

Nginx-blok
upstream vaultwarden-default {
  zone vaultwarden-default 64k;
  server 127.0.0.1:8000;
  keepalive 2;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      "";
}

server {
    listen 80;
    listen [::]:80;
    server_name vault.example.com;

    client_max_body_size 525M;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    location / {
      proxy_pass http://vaultwarden-default;
    }
}

Certbot plaatst daarna het certificaat en zorgt voor de vernieuwing ervan:

Terminal
sudo certbot --nginx

WebSocket controleren

Open de ontwikkelaarstools van de browser, tabblad netwerk, filter WS, en meld u daarna opnieuw aan bij de kluis: een antwoord 101 op /notifications/hub bevestigt de verbinding. Een andere test uit de wiki: open de kluis in twee browsers, hernoem een item in de ene, en de wijziging verschijnt meteen in de andere.

De registraties sluiten

Standaard kan iedereen die uw instantie bereikt er een account aanmaken. Dat is handig voor uw eerste account, en de wiki raadt aan daarna te sluiten, zodat een aanvaller er geen kan aanmaken.

  1. Open uw HTTPS-adres en maak uw account aan, koppel daarna uw apps aan dat adres.
  2. Zet SIGNUPS_ALLOWED op "false" in compose.yaml.
  3. Start opnieuw met docker compose up -d: een omgevingsvariabele is aan de container gekoppeld, die opnieuw moet worden aangemaakt om haar toe te passen.
compose.yaml, in environment
SIGNUPS_ALLOWED: "false"

Zodra u de configuratie vanaf de beheerpagina opslaat, ontstaat er een bestand config.json in de gegevensmap, dat voorrang krijgt op de omgevingsvariabelen. De betreffende instellingen wijzigt u dan vanaf die pagina: compose.yaml aanpassen volstaat niet meer.

De beheerpagina en haar token

De pagina /admin dient om Vaultwarden te configureren, accounts en organisaties te bekijken en te verwijderen, de tweestapsverificatie van een gebruiker te verwijderen, uit te nodigen en de diagnose te lezen. Zonder ADMIN_TOKEN blijft ze uitgeschakeld: hebt u er geen gebruik voor, laat haar dan zo.

De wiki raadt sterk aan HTTPS in te schakelen vóór deze pagina. Het token dient als wachtwoord, en het kan in gehashte vorm, met argon2id, worden bewaard in plaats van leesbaar in de configuratie. Vaultwarden levert de opdracht: ze vraagt het wachtwoord twee keer en geeft dan een PHC-tekenreeks terug.

Terminal
docker run --rm -it vaultwarden/server /vaultwarden hash

Plaats die tekenreeks in een bestand .env, naast compose.yaml, tussen enkele aanhalingstekens, en roep haar daarna aan vanuit de dienst:

.env
VAULTWARDEN_ADMIN_TOKEN='$argon2id$...'
compose.yaml, in environment
ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN}

Controleer het resultaat, start opnieuw en meld u daarna aan op /admin met uw wachtwoord, en niet met de PHC-tekenreeks:

Terminal
docker compose config
docker compose up -d

Wat de kluis beschermt

De eerste bescherming is het hoofdwachtwoord. De gegevens van de kluis zijn versleuteld met persoonlijke sleutels of sleutels van de organisatie: wie een kopie van de database bemachtigt of een sessie afdwingt, moet dat wachtwoord nog kraken om ze te lezen. Zijn sterkte telt dus vóór alles. Een beheersessie zelf laat toe een account te verwijderen of een tweestapsverificatie weg te halen, zonder toegang te geven tot de gegevens van de kluis.

BeschermingWat ze oplevertWaar ze wordt ingesteld
HoofdwachtwoordHoudt de gegevens versleuteld, ook als er een kopie van de database rondgaatElke gebruiker kiest het zelf, lang en uniek voor deze kluis
TweestapsverificatieZonder haar blijft, zo herinnert de wiki, een wachtwoord raden met brute kracht in theorie mogelijkIn elk account; een beleidsregel van de organisatie kan haar verplichten
HTTPSVersleutelt het traject tussen de client en de serverDe reverse proxy
Gesloten registratiesVoorkomt dat een onbekende zich een account aanmaaktSIGNUPS_ALLOWED
WachtwoordhintsOp de pagina getoond zouden ze helpen een wachtwoord te raden; versie 1.37.5 houdt ze standaard verborgenLaat SHOW_PASSWORD_HINT op false; PASSWORD_HINTS_ALLOWED haalt ze helemaal weg
Limiet op pogingenRemt pogingen vanaf hetzelfde adres af, aanmelding en /adminLOGIN_RATELIMIT_SECONDS en ADMIN_RATELIMIT_SECONDS
Fail2banBlokkeert adressen na te veel mislukte pogingen, wat de wiki bijzonder belangrijk vindt voor een openbare instantieOp de server, vanuit een logboek LOG_FILE

Bereid u voor op het vergeten van het hoofdwachtwoord voordat het gebeurt: schakel de noodtoegang van uw account in en, in een organisatie, het accountherstel, dat een ingestelde e-mail vraagt.

Drie extra instellingen, uit de beveiligingsgids

SQLite, MariaDB of PostgreSQL

Dezelfde image ondersteunt alle drie de databases. De wiki beschrijft SQLite als de meest gebruikte en best geteste, en beveelt haar aan voor de meeste toepassingen, tenzij u een andere specifiek nodig hebt.

DatabaseOpzetBack-up
SQLiteGeen: een bestand, vw-data/db.sqlite3De opdracht /vaultwarden backup, of een kopie van de map, met de dienst gestopt
MariaDB of MySQLUw databaseserver, en DATABASE_URL in mysql://Een export van de database, naast de map vw-data
PostgreSQLUw databaseserver, en DATABASE_URL in postgresql://Een export van de database, naast de map vw-data
compose.yaml, in environment (PostgreSQL)
DATABASE_URL: "postgresql://user_name:user_password@db_host:5432/vaultwarden"

Maak een lege database en gebruiker aan: bij het opstarten legt Vaultwarden er zelf zijn schema in aan. Een wachtwoord met speciale tekens schrijft u in dit adres met procentcodering.

Maak deze keuze voordat u de kluis vult. De wiki beschrijft een overstap van SQLite naar PostgreSQL met pgloader, en preciseert dat deze weg niet door het project wordt ondersteund, dat u hem op eigen risico bewandelt en dat hij begint met een back-up.

E-mails: de SMTP-configuratie

Vaultwarden start zonder e-mail, maar verschillende functies hangen ervan af: de uitnodigingen, de controle van adressen, het versturen van wachtwoordhints, tweestapsverificatie per e-mail en het accountherstel.

Op een Simafri-VPS loopt het verzenden via een geauthenticeerde SMTP-relay, op poort 587: het adres van een e-mailaccount dat u al hebt, of Simafri Suite. Het wachtwoord komt in het bestand .env, net als het beheerderstoken:

compose.yaml, in environment
SMTP_HOST: "smtp.example.com"
SMTP_FROM: "vault@example.com"
SMTP_PORT: "587"
SMTP_SECURITY: "starttls"
SMTP_USERNAME: "vault@example.com"
SMTP_PASSWORD: ${VAULTWARDEN_SMTP_PASSWORD}

Gaat er niets de deur uit, dan stelt de wiki voor de verbinding met de relay te testen vanaf de server. De opdracht geeft 0 terug wanneer de relay antwoordt:

Terminal
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/smtp.example.com/587'; echo $?

De back-ups

De README herinnert eraan dat het project niet aansprakelijk kan worden gesteld voor gegevensverlies en raadt regelmatige back-ups sterk aan. De wiki adviseert ze automatisch te maken, met minstens één kopie elders. Dit bevat de gegevensmap met SQLite:

OnderdeelWat het bewaartTe back-uppen
db.sqlite3Vrijwel alle gegevens: accounts, organisaties, kluizenVerplicht
attachments/De bijlagen, buiten de database opgeslagenVerplicht
config.jsonDe configuratie van de beheerpagina, met gevoelige gegevens in leesbare vormAanbevolen, versleuteld
rsa_key*De sleutels die de sessies ondertekenen; ze kwijtraken meldt de gebruikers afAanbevolen, versleuteld
sends/De bestanden die met Send zijn verstuurd, van nature kortstondigOptioneel
icon_cache/De pictogrammen van websites, indien nodig opnieuw gedownloadOptioneel

De database, terwijl de dienst draait

Sinds versie 1.32.1 kan Vaultwarden zijn SQLite-database zelf back-uppen, zonder de dienst te stoppen:

Terminal
docker exec -it vaultwarden /vaultwarden backup

De opdracht schrijft een bestand db_JJJJMMDD_UUMMSS.sqlite3 naast de database, in vw-data. De image bevat noch sqlite3 noch cron: de wiki raadt aan de taak op de server in te plannen, minstens één keer per dag. Haal dan -it weg, want een geplande taak heeft geen terminal, en ruim die bestanden, die zich opstapelen, regelmatig op.

De hele map, met de dienst gestopt

Wanneer de database niet in gebruik is, volstaat een eenvoudige kopie van al haar bestanden. Dit is de methode met gestopte dienst die de wiki als voorbeeld voor Docker geeft, en ze neemt ook de bijlagen mee:

Terminal, in de map van compose.yaml
docker compose down
tar -czf vaultwarden-$(date +%F).tar.gz vw-data
docker compose up -d

De wiki vindt een versleutelingslaag nuttig, vooral wanneer de back-up het beheerderstoken en de SMTP-gegevens bevat, en noemt rclone, restic en rustic om de kopieën naar elders te sturen. Voeg bij MariaDB of PostgreSQL een export van de database toe aan de map vw-data.

De wiki vraagt niet uitsluitend op schijfsnapshots te vertrouwen, die lastiger terug te zetten zijn. Bewaar daarom ook deze eigen kopieën van de applicatie: staan ze op de schijf van de server, dan vallen ze ook onder de nachtelijke back-ups.

Terugzetten

  1. Stop Vaultwarden.
  2. Vervang elk bestand of elke map van vw-data door de geback-upte versie.
  3. Komt de database uit /vaultwarden backup, geef haar dan de naam db.sqlite3 en verwijder eerst elk bestaand bestand db.sqlite3-wal: een journaal dat niet past, kan de database beschadigen. Komt ze uit een directe kopie, zet dan db.sqlite3 en zijn db.sqlite3-wal samen terug.
  4. Start opnieuw en controleer dat u de kluis kunt openen.

De wiki raadt aan deze oefening af en toe te herhalen, met behoud van een kopie van de bestaande gegevens: zo controleert u of een back-up werkt.

De updates

De wiki geeft twee opdrachten, vanuit de map van compose.yaml. De gegevensmap blijft ongemoeid:

Terminal
docker compose pull
docker compose up -d

Deze updates tellen zwaarder dan elders. De mobiele apps en de browserextensies werken zichzelf bij, en de wiki waarschuwt dat een versieverschil met de server plotselinge storingen kan veroorzaken. De webkluis, meegeleverd in de image, blijft altijd afgestemd op zijn server.

Het project heeft geen releasekalender: volg zijn release-opmerkingen en start vlak voor elke update een back-up. Sommige bevatten beveiligingsfixes, zoals 1.37.5 van 1 november 2026, waarvan de opmerkingen aanraden zo snel mogelijk bij te werken. Die opmerkingen waarschuwen ook dat sinds 1.37.5 een ongeldige configuratiewaarde verhindert dat Vaultwarden start: lees uw omgevingsbestand na voordat u bijwerkt. De diagnosepagina van /admin geeft aan of er een nieuwere versie bestaat.

Wie doet wat op een managed VPS

Self-hosting vraagt dat u naast de applicatie ook de server beheert. Op een managed VPS neemt ons team de server voor zijn rekening en houdt het uw instantie proactief in de gaten; Vaultwarden blijft uw software, met zijn instellingen en gegevens.

OnderwerpOns teamU
De serverSysteem- en beveiligingsupdates, ingrepen op de server inbegrepenHet moment dat bij uw activiteit past
De monitoringServer 24 uur per dag en 7 dagen per week bewaakt, met ingrijpen zonder op uw oproep te wachtenHet lezen van de logboeken van uw instantie
VaultwardenProactief toezicht: fouten, vertragingen en schijfruimte opgespoord, correctie aangeradenDe installatie, de updates en de instellingen, die u toepast, zelf of via uw AI-assistent
De accounts en de kluisDe server die ze draagt, bewaakt en geback-uptDe gebruikers, de uitnodigingen, de hoofdwachtwoorden en de tweestapsverificatie
De back-upsElke nacht, versleuteld en buiten de machine bewaard; terugzetten inbegrepenDe eigen kopieën van Vaultwarden, en het verzoek om terug te zetten, wanneer u dat nodig hebt
De migratieUw huidige server gemigreerd, gratisHet moment van de overschakeling

Wilt u liever dat ons team in de applicatie zelf ingrijpt, dan wordt die dienstverlening per uur of tegen een vast bedrag gefactureerd, met een offerte voordat het werk begint.

Vaultwarden, op een server die voor u wordt beheerd

Met een Managed VPS van Simafri houdt ons team de server van uw Vaultwarden-instantie up-to-date, bewaakt hem dag en nacht en grijpt in zonder op uw oproep te wachten; het houdt ook uw instantie proactief in de gaten en raadt u de nuttige correcties aan, die u toepast, zelf of via uw AI-assistent. De back-ups worden elke nacht versleuteld en buiten de machine bewaard, het terugzetten is inbegrepen, en de migratie van uw huidige server is gratis.

Ontdek Managed VPS

Veelgestelde vragen

Is Vaultwarden gratis voor een bedrijf?

Ja. Vaultwarden valt onder de AGPL-3.0-licentie: u mag het in een bedrijf draaien zonder een licentie te kopen. Wijzigt u het, dan moet uw versie de broncode aanbieden aan wie het via het netwerk gebruikt. Wat overblijft, zijn de kosten van de server waarop het draait.

Werkt Vaultwarden met de Bitwarden-apps?

Ja. De README presenteert Vaultwarden als compatibel met de officiële Bitwarden-clients, en preciseert dat het project niet verbonden is met Bitwarden of Bitwarden, Inc. Een probleem meldt u dus aan het Vaultwarden-project, welke client u ook gebruikt.

Hoe installeer ik Vaultwarden met Docker Compose?

Maak een compose.yaml met de image vaultwarden/server, een gegevensmap en de poort gepubliceerd op 127.0.0.1, en voer docker compose up -d uit. Zet er daarna een reverse proxy met HTTPS voor: zonder HTTPS werkt de webkluis niet. Geef ook uw adres op in DOMAIN.

Hoe schakel ik de registraties op Vaultwarden uit?

Zet na het aanmaken van uw account SIGNUPS_ALLOWED op false in compose.yaml en start opnieuw met docker compose up -d. Organisaties kunnen nog altijd uitnodigen: INVITATIONS_ALLOWED op false haalt die mogelijkheid weg. Heeft de beheerpagina haar configuratie al opgeslagen, doe deze instelling dan vanaf die pagina.

Hoe stel ik het beheerderstoken van Vaultwarden in?

Voer de opdracht vaultwarden hash uit, die een argon2id-tekenreeks teruggeeft, en plaats die in ADMIN_TOKEN, met Docker Compose vanuit een bestand .env. Daarna meldt u zich aan op /admin met uw wachtwoord. Zonder ADMIN_TOKEN blijft de pagina uitgeschakeld.

Wat beschermt een Vaultwarden-kluis?

Eerst het hoofdwachtwoord: de gegevens zijn versleuteld, en een kopie van de database is alleen te lezen door het te kraken. Daar komen tweestapsverificatie, HTTPS, gesloten registraties, een gehasht beheerderstoken en versleutelde back-ups bij.

Hoe maak ik een back-up van Vaultwarden?

Voer met SQLite elke dag de opdracht /vaultwarden backup uit in de container, en kopieer ook de map attachments, config.json en de bestanden rsa_key. Voeg bij MariaDB of PostgreSQL een export van de database toe. Test regelmatig het terugzetten.

Dekt een managed VPS ook Vaultwarden?

Een managed VPS dekt de server: systeem, beveiliging, monitoring en back-ups. Ons team houdt ook uw instantie proactief in de gaten en raadt u de nuttige correcties aan, die u toepast. Een ingreep in de applicatie wordt per uur of tegen een vast bedrag gefactureerd.

Bronnen en officiële documentatie

Neem contact op