Vaultwarden: installazione del proprio gestore di password su un VPS
Vaultwarden consente di conservare le password sul proprio server e sincronizzarle tra computer, telefono e browser. A questo scopo si utilizzano le applicazioni e le estensioni ufficiali di Bitwarden, nelle quali viene indicato l'indirizzo del proprio server.
Di seguito vedremo quale VPS serve per Vaultwarden, come avviarlo su Ubuntu con Docker Compose, disattivare la registrazione aperta, abilitare HTTPS e configurare i backup.
Vaultwarden in cinque passaggi
Il piano minimo per l'avvio:
- Creare un VPS con Ubuntu e indirizzare verso di esso un sottodominio, per esempio
vault.example.com. - Installare Docker e Docker Compose.
- Avviare Vaultwarden insieme a Caddy per ottenere HTTPS automaticamente.
- Creare il primo account e disattivare la registrazione aperta.
- Abilitare l'autenticazione a due fattori, gli aggiornamenti e i backup.
Per una cassaforte personale o una piccola famiglia è sufficiente il database SQLite integrato. In genere non è necessario un server PostgreSQL separato.
Che cos'è Vaultwarden
Vaultwarden è un'implementazione server non ufficiale dell'API di Bitwarden, scritta in Rust e pensata per un'installazione self-hosted. È compatibile con i client ufficiali di Bitwarden: interfaccia web, applicazioni mobili e desktop, estensioni del browser e CLI.
I dati della cassaforte vengono cifrati sul dispositivo dell'utente prima di essere inviati al server. Il VPS sincronizza il database cifrato, ma non conosce la password principale e non può recuperarla in caso di smarrimento.
Vaultwarden non è un prodotto ufficiale di Bitwarden. Il proprietario è direttamente responsabile degli aggiornamenti, della disponibilità, di HTTPS, dei backup e della sicurezza del VPS.
Vaultwarden e Bitwarden: qual è la differenza
| Parametro | Bitwarden Cloud | Vaultwarden |
|---|---|---|
| Server | Infrastruttura Bitwarden | Il proprio VPS o server domestico |
| Applicazioni | Client Bitwarden | Gli stessi client in modalità Self-hosted |
| Manutenzione | Gestita dal provider | Gestita dal proprietario |
| Controllo dei backup | Limitato dal servizio | Completo |
| Avvio | Registrazione di un account | Dominio, Docker e configurazione del VPS |
Vaultwarden è adatto a chi desidera controllare la parte server ed è disposto ad aggiornare Linux e verificare i backup. Un servizio cloud è più pratico se non si vuole gestire l'amministrazione. Il self-hosting non rende automaticamente sicuro il sistema: trasferisce la responsabilità al proprietario.
Requisiti del server per Vaultwarden
Per l'uso personale, una configurazione iniziale ragionevole è:
- 1 vCPU;
- 1–2 GB di RAM;
- 10–20 GB di SSD o NVMe;
- Ubuntu 24.04 LTS;
- un IP pubblico e un dominio;
- porte 80 e 443 aperte.
Si tratta di un margine pratico per Ubuntu, Docker, Caddy e gli aggiornamenti, non di un requisito minimo rigido del progetto. Per decine di utenti, molti allegati o più container, è preferibile scegliere almeno 2 GB di RAM.
Come installare Vaultwarden su un VPS
Nell'esempio vengono utilizzati Ubuntu 24.04 e il sottodominio vault.example.com. Sostituirlo con il proprio indirizzo in tutti i file.
1. Configurare DNS e preparare Ubuntu
Creare un record DNS A che punti all'indirizzo IPv4 del VPS. Quindi collegarsi tramite SSH:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableNon chiudere la sessione SSH corrente finché non si è verificato che una nuova connessione funzioni.
2. Installare Docker e Docker Compose
Aggiungere il repository ufficiale di Docker:
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Creare la configurazione
mkdir -p /opt/vaultwarden
cd /opt/vaultwardenCreare 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
caddy:
image: caddy:2-alpine
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/configCreare il file Caddyfile:
vault.example.com {
reverse_proxy vaultwarden:80
}Verso l'esterno viene esposto soltanto Caddy. Il container Vaultwarden è accessibile all'interno della rete Docker e i dati vengono salvati in /opt/vaultwarden/vw-data. Nella configurazione attuale non è necessaria una porta separata per WebSocket.
4. Avviare Vaultwarden
docker compose up -d
docker compose ps
docker compose logs --tail=100 caddyAprire https://vault.example.com. Caddy otterrà automaticamente un certificato TLS se DNS punta già al VPS e le porte 80 e 443 sono accessibili. Se il sito non si apre, controllare DNS, il firewall e l'eventuale presenza di un altro server web su queste porte.
5. Creare un account e chiudere le registrazioni
Registrare il primo account. Utilizzare una password principale lunga e univoca e conservarne una copia di emergenza al di fuori di Vaultwarden: l'amministratore del server non può reimpostare né recuperare la password principale.
Dopo la registrazione, modificare quanto segue in compose.yaml:
SIGNUPS_ALLOWED: "false"Applicare l'impostazione:
docker compose up -dOra gli utenti esterni non potranno creare account. Per aggiungere un nuovo utente, è possibile abilitare temporaneamente la registrazione oppure configurare gli inviti.
Come collegare l'applicazione Bitwarden
Non è necessario installare un client separato per Vaultwarden. Nella schermata di accesso dell'applicazione o dell'estensione Bitwarden, selezionare Self-hosted e indicare:
https://vault.example.comUtilizzare questo indirizzo sul computer, sul telefono e nel browser. Per la migrazione, importare un file esportato dal precedente gestore di password. Eliminare il file CSV o JSON non cifrato subito dopo il trasferimento e non inviarlo tramite e-mail o link pubblici.
Configurazione sicura di Vaultwarden
Dopo l'avvio, eseguire alcune operazioni:
- abilitare TOTP o WebAuthn e conservare separatamente i codici di recupero;
- lasciare
SIGNUPS_ALLOWEDdisattivato; - utilizzare chiavi SSH e aggiornare regolarmente Ubuntu;
- non pubblicare la porta interna del container Vaultwarden;
- non eseguire container poco affidabili sullo stesso VPS;
- verificare che i backup possano essere ripristinati.
Il pannello /admin in genere non è necessario per una cassaforte personale. Se viene abilitato, utilizzare un token lungo sotto forma di hash Argon2 e, quando possibile, limitare l'accesso per indirizzo IP o VPN. È sconsigliabile conservare un ADMIN_TOKEN in chiaro.
Creare un backup prima dell'aggiornamento, quindi eseguire:
cd /opt/vaultwarden
docker compose pull
docker compose up -dIl server deve essere aggiornato regolarmente: i client Bitwarden vengono pubblicati in modo indipendente, quindi una versione troppo vecchia di Vaultwarden può perdere la compatibilità con essi.
Backup di Vaultwarden
Il database SQLite principale si trova in vw-data/db.sqlite3, mentre gli allegati vengono conservati come file separati. Non copiare un database in esecuzione con il normale comando cp: un'operazione di scrittura in quel momento potrebbe rendere incoerente la copia.
Creare uno snapshot sicuro con il comando integrato:
docker exec vaultwarden /vaultwarden backupNella directory dei dati verrà creato un file separato db_.sqlite3. Insieme a esso, salvare attachments, sends, config.json se è stato creato e i file rsa_key.
Un backup sullo stesso VPS non protegge dall'eliminazione del server o da un guasto del disco. Inviare automaticamente le copie a un altro dispositivo o a uno storage a oggetti separato, preferibilmente con una cifratura aggiuntiva. Eseguire periodicamente un ripristino di prova.
Quale VPS scegliere per Vaultwarden
Per una cassaforte personale o familiare è sufficiente un VPS Linux di base con 2 GB di RAM. Questa quantità lascia un margine per Ubuntu, Docker, Caddy, gli aggiornamenti e i backup automatici.
Vaultwarden può essere eseguito su un VPS entry-level di tropic.host, aumentando in seguito le risorse se sul server vengono aggiunti altri servizi self-hosted. Per un gestore di password sono più importanti una rete stabile, un indirizzo pubblico permanente e un disco affidabile rispetto a core CPU aggiuntivi.
Anche un server domestico può andare bene, ma in questo caso occorre garantire l'accesso esterno, HTTPS, un'alimentazione stabile e il ripristino dopo i guasti. Un VPS è in genere più semplice se la cassaforte deve funzionare da qualsiasi rete.
Conclusione
Vaultwarden è un pratico gestore di password self-hosted per chi desidera utilizzare i client Bitwarden mantenendo la parte server sulla propria infrastruttura. Per iniziare sono sufficienti un piccolo VPS, un dominio, Docker Compose e Caddy.
La responsabilità principale inizia dopo l'installazione: occorre disattivare la registrazione, abilitare la 2FA, aggiornare i container e conservare backup verificati al di fuori del server.
FAQ
È possibile installare Vaultwarden senza un dominio?
Tecnicamente è possibile utilizzare un indirizzo locale, ma la cassaforte web richiede un contesto HTTPS sicuro. Per accedere da dispositivi diversi è più semplice usare un dominio e un certificato TLS.
Quanta RAM richiede Vaultwarden?
Per uno o più utenti, 1 GB di RAM è generalmente sufficiente. Un VPS con 2 GB offre un margine più comodo per il sistema, Docker, Caddy e gli aggiornamenti.
Vaultwarden funziona con l'app mobile di Bitwarden?
Sì. Nella schermata di accesso, selezionare un server self-hosted e inserire l'indirizzo HTTPS completo della propria istanza Vaultwarden.
Cosa succede se il VPS è temporaneamente indisponibile?
I dati sincronizzati in precedenza rimangono normalmente nella cache locale cifrata del client. Tuttavia, la sincronizzazione, l'accesso da un nuovo dispositivo e la ricezione delle modifiche non funzioneranno finché il server non verrà ripristinato.
È possibile recuperare una password principale dimenticata tramite /admin?
No. L'amministratore può gestire il server e gli account, ma non possiede la chiave di decifratura della cassaforte dell'utente. La password principale e i codici di recupero devono essere conservati separatamente.
