Migrering av over to tusen innlogginger til selvhostet Vaultwarden

Et passordhvelv med over to tusen oppføringer lå hos en ekstern leverandør med fast månedlig pris. Målet var å beholde klientene og funksjonene, flytte dataene til egen maskin og si opp abonnementet. Valget ble selvhostet Vaultwarden.
Vaultwarden er en lettvekts serverimplementasjon av Bitwarden-protokollen. Alle de offisielle Bitwarden-klientene (desktop, mobil, nettleser, CLI) virker uendret. Premiumfunksjonene TOTP og filvedlegg følger med uten lisens. Serveren er én binærfil med en SQLite-database.
Reverse proxy og HTTPS

Vaultwarden serverer hvelvet på en vanlig HTTP-port. Synkroniseringen mellom enhetene i sanntid går over en egen WebSocket-hub (notifications-hub) på en intern port. Reverse proxyen må derfor både terminere HTTPS og slippe WebSocket-oppgraderingen gjennom. Mangler det siste, får de andre enhetene ingen push-oppdatering når en oppføring endres.

location / {MigreringDataene ble flyttet med en kryptert JSON-eksport fra det gamle hvelvet og importert i Vaultwarden. Eksportfila ligger i klartekst mens importen pågår. Slett den straks importen er ferdig, ellers ligger hele hvelvet ukryptert på disk.
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /notifications/hub {
proxy_pass http://localhost:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
shred -u vault-export.jsonBulkarbeid og verifisering gjorde jeg med bw CLI. Tell oppføringene etter importen og sammenlign med kilden. Er tallene like, er migreringen komplett.
export BW_SERVER=https://vault.eksempel.noAlle de vel to tusen oppføringene kom over, med TOTP-koder og vedlegg.
bw login
bw sync
bw list items | jq length
Backup
Med selvhosting er backup eget ansvar. Hele tilstanden ligger i datamappa: SQLite-fila, RSA-nøklene og vedleggene. Ta en kryptert kopi og lagre den et annet sted enn serveren.
tar czf - /data | \Kjør dette som en fast jobb og send filen offsite. Forsvinner datamappa uten backup, er alt tapt.
gpg --symmetric --cipher-algo AES256 \
> vw-backup-$(date +%F).tar.gz.gpg


