Ospitare Vaultwarden su un VPS gestito: le vostre password sul vostro server

Ospitare Vaultwarden su un VPS gestito significa custodire le vostre password e quelle del vostro team su una macchina tutta vostra, che i nostri team tengono aggiornata e supervisionano giorno e notte. Vaultwarden è un software libero con licenza AGPL-3.0. Questa guida segue la sua documentazione ufficiale: l'installazione con Docker Compose, HTTPS, la chiusura delle registrazioni, il token di amministrazione, ciò che protegge la cassaforte, il database, le e-mail, i backup e gli aggiornamenti.

Simon Vasconcelos Lee Di Pubblicato l'8 novembre 2026Lettura: 15 minuti

Tutte le guide

In breve

  1. La licenza AGPL-3.0 consente di far girare Vaultwarden liberamente, in azienda come altrove; se lo modificate, mettete il codice della vostra versione a disposizione di chi la utilizza.
  2. Installatelo con Docker Compose: un'immagine, una porta pubblicata in locale e una cartella di dati, dietro un reverse proxy.
  3. HTTPS è indispensabile alla cassaforte web: servite Vaultwarden con un nome di dominio dedicato e indicate quel nome in DOMAIN.
  4. Create il vostro account, poi chiudete le registrazioni con SIGNUPS_ALLOWED: per impostazione predefinita, chiunque raggiunga l'istanza può iscriversi. Una password principale solida e l'autenticazione a due fattori proteggono poi la cassaforte.
  5. Salvate ogni giorno il database e gli allegati, provate il ripristino e aggiornate con docker compose pull.

Che cosa fa Vaultwarden

Vaultwarden è un server di gestione delle password scritto in Rust, pensato per il self-hosting. Il suo wiki lo destina a privati, famiglie e organizzazioni di dimensioni contenute. La cassaforte web è inclusa nelle sue immagini Docker.

Implementa un'API compatibile con i client ufficiali Bitwarden, sul browser, sul computer e sul telefono. Il README precisa che il progetto non è associato a Bitwarden né a Bitwarden, Inc., e chiede di segnalargli direttamente qualsiasi problema, qualunque sia il client usato, anziché ai canali di assistenza ufficiali.

Il wiki elenca anche ciò che manca rispetto al server ufficiale, come l'accesso con passkey, i ruoli personalizzati e alcuni criteri aziendali. Precisa che le funzioni utili soprattutto alle grandi organizzazioni non sono una priorità del progetto: leggete quell'elenco se ne avete bisogno.

Che cosa consente la licenza AGPL-3.0

Vaultwarden è pubblicato con la GNU Affero General Public License, versione 3. Il testo afferma un'autorizzazione illimitata a eseguire il programma non modificato. Potete quindi usare l'immagine pubblicata dal progetto per la vostra azienda e il vostro team, senza alcuna licenza da acquistare.

L'articolo 13 aggiunge una condizione propria dell'AGPL: se modificate il programma, la vostra versione deve offrire a tutti coloro che la usano a distanza, tramite la rete, il modo di ottenerne gratuitamente il codice sorgente.

L'installazione con Docker Compose

Il README raccomanda le immagini dei container. Su un server in cui Docker è installato, create una cartella e collocatevi questo compose.yaml, tratto dal README e dal 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
Terminale
docker compose up -d

Il vostro nome di dominio punta al server con record A e AAAA, e i visitatori arrivano sulle porte 80 e 443. Finché il reverse proxy non è al suo posto, la cassaforte web resta inutilizzabile: passate direttamente alla sezione successiva.

Il progetto non indica né la memoria né il processore necessari; si presenta soltanto come una soluzione per i casi in cui il servizio ufficiale, esigente in termini di risorse, non è adatto. La taglia dipende dal numero di account e dal volume degli allegati. Su un VPS gestito, descrivetici il vostro uso e vi raccomandiamo la taglia adatta.

HTTPS e WebSocket: il reverse proxy

La cassaforte web si appoggia all'API Web Crypto, che i browser riservano ai contesti sicuri: il README indica che funziona solo con HTTPS attivo, e il wiki giudica HTTPS «pretty much required», cioè quasi obbligatorio. Il progetto raccomanda un reverse proxy davanti a Vaultwarden e sconsiglia il TLS integrato nel suo framework Rocket.

Scegliete un certificato riconosciuto, come quelli di Let's Encrypt, che il wiki raccomanda: con un certificato autofirmato, alcune piattaforme rifiutano la connessione. Il certificato deve includere la catena completa, altrimenti i dispositivi Android non si connettono.

Le notifiche WebSocket, attive per impostazione predefinita, avvisano il browser, l'applicazione desktop e l'estensione che una voce è cambiata. Passano dalla porta HTTP principale, e il proxy deve inoltrare le intestazioni Upgrade e Connection. Le app mobili usano le notifiche native del loro sistema, che si configurano a parte.

Con Caddy

Il wiki consiglia di guardare Caddy per primo se non avete preferenze: attiva HTTPS da solo, ottiene il certificato Let's Encrypt e supporta WebSocket. L'impostazione del wiki trasmette inoltre a Vaultwarden l'indirizzo reale del visitatore, per i suoi log:

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

Con Nginx e Certbot

Questo blocco riprende l'esempio Nginx del wiki, ridotto alla porta 80 per lasciare a Certbot l'attivazione di HTTPS:

Blocco Nginx
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 installa poi il certificato e si occupa di rinnovarlo:

Terminale
sudo certbot --nginx

Verificare WebSocket

Aprite gli strumenti per sviluppatori del browser, scheda rete, filtro WS, poi riconnettetevi alla cassaforte: una risposta 101 su /notifications/hub conferma la connessione. Altra prova del wiki: aprite la cassaforte in due browser, rinominate una voce in uno dei due e la modifica compare subito nell'altro.

Chiudere le registrazioni

Per impostazione predefinita, chiunque raggiunga la vostra istanza può crearvi un account. È utile per il vostro primo account, e il wiki raccomanda di chiudere subito dopo, per impedire a un malintenzionato di crearne uno.

  1. Aprite il vostro indirizzo HTTPS e create il vostro account, poi collegate le vostre app a quell'indirizzo.
  2. Portate SIGNUPS_ALLOWED a "false" in compose.yaml.
  3. Rilanciate con docker compose up -d: una variabile d'ambiente è legata al container, che va ricreato perché venga presa in considerazione.
compose.yaml, in environment
SIGNUPS_ALLOWED: "false"

Non appena salvate la configurazione dalla pagina di amministrazione, nella cartella dei dati nasce un file config.json che prevale sulle variabili d'ambiente. Le impostazioni interessate si cambiano allora da quella pagina: modificare compose.yaml non basta più.

La pagina di amministrazione e il suo token

La pagina /admin serve a configurare Vaultwarden, a vedere ed eliminare gli account e le organizzazioni, a togliere l'autenticazione a due fattori a un utente, a invitare e a leggere la diagnostica. Senza ADMIN_TOKEN, resta disattivata: se non vi serve, lasciatela così.

Il wiki raccomanda vivamente di attivare HTTPS prima di usare questa pagina. Il token fa da password, e può essere conservato in forma hashata, con argon2id, anziché in chiaro nella configurazione. Vaultwarden fornisce il comando: chiede la password due volte, poi restituisce una stringa PHC.

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

Inserite questa stringa in un file .env, accanto a compose.yaml, tra apici, poi richiamatela dal servizio:

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

Verificate il risultato, rilanciate, poi accedete a /admin con la vostra password, e non con la stringa PHC:

Terminale
docker compose config
docker compose up -d

Ciò che protegge la cassaforte

La prima protezione è la password principale. I dati della cassaforte sono cifrati con chiavi personali o d'organizzazione: chi ottiene una copia del database o forza una sessione deve ancora violare questa password per leggerli. La sua solidità conta quindi più di ogni altra cosa. Una sessione di amministrazione, da sola, permette di eliminare un account o di togliere un'autenticazione a due fattori, senza dare accesso ai dati della cassaforte.

ProtezioneChe cosa offreDove si imposta
Password principaleMantiene i dati cifrati, anche se una copia del database circolaOgni utente la sceglie, lunga e propria di questa cassaforte
Autenticazione a due fattoriSenza di essa, il wiki ricorda che indovinare una password a forza bruta resta possibile in teoriaIn ogni account; un criterio d'organizzazione può richiederla
HTTPSCifra il tragitto tra il client e il serverIl reverse proxy
Registrazioni chiuseImpedisce a uno sconosciuto di crearsi un accountSIGNUPS_ALLOWED
Suggerimenti della passwordMostrati sulla pagina, aiuterebbero a indovinare una password; la versione 1.37.5 li tiene nascosti per impostazione predefinitaLasciate SHOW_PASSWORD_HINT su false; PASSWORD_HINTS_ALLOWED li elimina del tutto
Limite dei tentativiRallenta le prove da uno stesso indirizzo, accesso e /adminLOGIN_RATELIMIT_SECONDS e ADMIN_RATELIMIT_SECONDS
Fail2banBlocca gli indirizzi dopo troppi errori, cosa che il wiki giudica particolarmente importante per un'istanza pubblicaSul server, a partire da un log LOG_FILE

Prevedete lo smarrimento della password principale prima che accada: attivate l'accesso di emergenza del vostro account e, in un'organizzazione, il recupero dell'account, che richiede l'e-mail configurata.

Altre tre impostazioni, tratte dalla guida al rafforzamento

SQLite, MariaDB o PostgreSQL

La stessa immagine supporta i tre database. Il wiki descrive SQLite come il più usato e il più testato, e lo raccomanda per la maggior parte degli usi, salvo una precisa necessità di un altro.

DatabaseConfigurazioneBackup
SQLiteNessuna: un file, vw-data/db.sqlite3Il comando /vaultwarden backup, oppure la copia della cartella, a servizio fermo
MariaDB o MySQLIl vostro server di database e DATABASE_URL in mysql://Un'esportazione del database, oltre alla cartella vw-data
PostgreSQLIl vostro server di database e DATABASE_URL in postgresql://Un'esportazione del database, oltre alla cartella vw-data
compose.yaml, in environment (PostgreSQL)
DATABASE_URL: "postgresql://user_name:user_password@db_host:5432/vaultwarden"

Create un database vuoto e il suo utente: all'avvio, Vaultwarden vi installa da solo il proprio schema. Una password che contiene caratteri speciali si scrive con la codifica percentuale in questo indirizzo.

Fate questa scelta prima di riempire la cassaforte. Il wiki descrive un passaggio da SQLite a PostgreSQL con pgloader, precisando che questa strada non è supportata dal progetto, che si percorre a vostro rischio e che inizia con un backup.

Le e-mail: la configurazione SMTP

Vaultwarden parte senza e-mail, ma diverse funzioni ne dipendono: gli inviti, la verifica degli indirizzi, l'invio dei suggerimenti della password, l'autenticazione a due fattori via e-mail e il recupero dell'account.

Su un VPS Simafri, l'invio passa da un relay SMTP autenticato, sulla porta 587: l'indirizzo di un account di posta che avete già, oppure Simafri Suite. La password si colloca nel file .env, come il token di amministrazione:

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}

Se non parte nulla, il wiki propone di provare la connessione al relay dal server. Il comando restituisce 0 quando il relay risponde:

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

I backup

Il README ricorda che il progetto non può essere ritenuto responsabile di una perdita di dati e raccomanda vivamente backup regolari. Il wiki li consiglia automatici, con almeno una copia altrove. Ecco che cosa contiene la cartella dei dati con SQLite:

ElementoChe cosa conservaDa salvare
db.sqlite3Quasi tutti i dati: account, organizzazioni, cassefortiObbligatorio
attachments/Gli allegati, archiviati fuori dal databaseObbligatorio
config.jsonLa configurazione della pagina di amministrazione, con dati sensibili in chiaroRaccomandato, cifrato
rsa_key*Le chiavi che firmano le sessioni; perderle disconnette gli utentiRaccomandato, cifrato
sends/I file inviati con Send, effimeri per naturaFacoltativo
icon_cache/Le icone dei siti, scaricate di nuovo al bisognoFacoltativo

Il database, a servizio attivo

Dalla versione 1.32.1, Vaultwarden sa salvare da solo il proprio database SQLite, senza fermare il servizio:

Terminale
docker exec -it vaultwarden /vaultwarden backup

Il comando scrive un file db_AAAAMMGG_HHMMSS.sqlite3 accanto al database, in vw-data. L'immagine non contiene né sqlite3 né cron: il wiki consiglia di pianificare l'attività sul server, almeno una volta al giorno. Togliete allora -it, perché un'attività pianificata non ha un terminale, e fate pulizia tra questi file, che si accumulano.

L'intera cartella, a servizio fermo

Quando il database non è in uso, basta una semplice copia di tutti i suoi file. È il metodo a servizio fermo che il wiki dà come esempio per Docker, e porta con sé anche gli allegati:

Terminale, nella cartella del compose.yaml
docker compose down
tar -czf vaultwarden-$(date +%F).tar.gz vw-data
docker compose up -d

Il wiki ritiene utile uno strato di cifratura, soprattutto quando il backup contiene il token di amministrazione e le credenziali SMTP, e cita rclone, restic e rustic per inviare le copie lontano. Con MariaDB o PostgreSQL, aggiungete un'esportazione del database alla cartella vw-data.

Il wiki chiede di non affidarsi ai soli snapshot del disco, più delicati da ripristinare. Conservate quindi queste copie proprie dell'applicazione: collocate sul disco del server, rientrano anche nei suoi backup notturni.

Ripristinare

  1. Fermate Vaultwarden.
  2. Sostituite ogni file o cartella di vw-data con la sua versione salvata.
  3. Se il database proviene da /vaultwarden backup, chiamatelo db.sqlite3 ed eliminate prima qualsiasi file db.sqlite3-wal esistente: un journal che non corrisponde può corrompere il database. Se proviene da una copia diretta, ripristinate insieme db.sqlite3 e il suo db.sqlite3-wal.
  4. Rilanciate, poi verificate di riuscire ad aprire la cassaforte.

Il wiki consiglia di ripetere questo esercizio di tanto in tanto, conservando una copia dei dati in uso: è così che verificate che un backup funzioni.

Gli aggiornamenti

Il wiki fornisce due comandi, dalla cartella del compose.yaml. La cartella dei dati resta al suo posto:

Terminale
docker compose pull
docker compose up -d

Questi aggiornamenti contano più che altrove. Le app mobili e le estensioni del browser si aggiornano da sole, e il wiki avverte che uno scarto di versione con il server può provocare guasti improvvisi. La cassaforte web, inclusa nell'immagine, resta sempre allineata al proprio server.

Il progetto non ha un calendario delle versioni: seguite le sue note di rilascio e lanciate un backup subito prima di ogni aggiornamento. Alcune contengono correzioni di sicurezza, come la 1.37.5 del 1° novembre 2026, le cui note raccomandano di aggiornare al più presto. Le stesse note avvertono inoltre che, dalla 1.37.5, un valore di configurazione non valido impedisce l'avvio di Vaultwarden: rileggete il vostro file di ambiente prima di aggiornare. La pagina di diagnostica di /admin indica se esiste una versione più recente.

Chi fa che cosa su un VPS gestito

Il self-hosting richiede di occuparsi del server oltre che dell'applicazione. Su un VPS gestito, i nostri team prendono in carico il server e seguono la vostra istanza in modo proattivo; Vaultwarden resta il vostro software, con le sue impostazioni e i suoi dati.

ArgomentoI nostri teamVoi
Il serverAggiornamenti del sistema e della sicurezza, interventi sul server compresiIl momento più adatto alla vostra attività
La supervisioneServer seguito 24 ore su 24, 7 giorni su 7, con intervento senza attendere la vostra chiamataLa lettura dei log della vostra istanza
VaultwardenMonitoraggio proattivo: errori, rallentamenti e spazio su disco individuati, correzione raccomandataLa sua installazione, i suoi aggiornamenti e le sue impostazioni, che applicate voi o il vostro assistente IA
Gli account e la cassaforteIl server che li ospita, sorvegliato e salvatoGli utenti, gli inviti, le password principali e l'autenticazione a due fattori
I backupOgni notte, cifrati e conservati fuori dalla macchina; ripristino compresoLe copie proprie di Vaultwarden e la richiesta di ripristino, quando ne avete bisogno
La migrazioneIl vostro server attuale migrato, in omaggioIl momento del passaggio

Se preferite che i nostri team intervengano nell'applicazione stessa, questa prestazione si fattura a ore o a forfait, con un preventivo comunicato prima dell'intervento.

Vaultwarden, su un server gestito per voi

Con un VPS gestito Simafri, i nostri team tengono aggiornato il server della vostra istanza Vaultwarden, lo sorvegliano giorno e notte e intervengono senza attendere la vostra chiamata; seguono anche la vostra istanza in modo proattivo e vi raccomandano le correzioni utili, che applicate voi o il vostro assistente IA. I backup sono cifrati ogni notte e conservati fuori dalla macchina, il loro ripristino è compreso e la migrazione del vostro server attuale è in omaggio.

Scoprire i VPS gestiti

Domande frequenti

Vaultwarden è gratuito per un'azienda?

Sì. Vaultwarden ha licenza AGPL-3.0: potete farlo girare in azienda senza alcuna licenza da acquistare. Se lo modificate, la vostra versione deve offrire il proprio codice sorgente a chi la usa tramite la rete. Resta il costo del server che lo fa girare.

Vaultwarden funziona con le app Bitwarden?

Sì. Il README presenta Vaultwarden come compatibile con i client ufficiali Bitwarden, precisando però che il progetto non è associato a Bitwarden né a Bitwarden, Inc. Un problema si segnala quindi al progetto Vaultwarden, qualunque sia il client usato.

Come installare Vaultwarden con Docker Compose?

Create un compose.yaml con l'immagine vaultwarden/server, una cartella di dati e la porta pubblicata su 127.0.0.1, poi lanciate docker compose up -d. Collocate quindi davanti un reverse proxy in HTTPS: senza HTTPS, la cassaforte web non funziona. Indicate anche il vostro indirizzo in DOMAIN.

Come disattivare le registrazioni su Vaultwarden?

Una volta creato il vostro account, portate SIGNUPS_ALLOWED a false in compose.yaml, poi rilanciate docker compose up -d. Le organizzazioni possono ancora invitare: INVITATIONS_ALLOWED impostato su false toglie questa possibilità. Se la pagina di amministrazione ha già salvato la propria configurazione, fate questa impostazione da lì.

Come configurare il token di amministrazione di Vaultwarden?

Lanciate il comando vaultwarden hash, che restituisce una stringa argon2id, poi inseritela in ADMIN_TOKEN, da un file .env con Docker Compose. Accedete quindi a /admin con la vostra password. Senza ADMIN_TOKEN, la pagina resta disattivata.

Che cosa protegge una cassaforte Vaultwarden?

Anzitutto la password principale: i dati sono cifrati, e una copia del database si legge solo violandola. A questa si aggiungono l'autenticazione a due fattori, HTTPS, le registrazioni chiuse, un token di amministrazione hashato e backup cifrati.

Come fare il backup di Vaultwarden?

Con SQLite, lanciate ogni giorno il comando /vaultwarden backup nel container, e copiate anche la cartella attachments, config.json e i file rsa_key. Con MariaDB o PostgreSQL, aggiungete un'esportazione del database. Provate regolarmente il ripristino.

Un VPS gestito copre Vaultwarden?

Un VPS gestito copre il server: sistema, sicurezza, supervisione e backup. I nostri team seguono anche la vostra istanza in modo proattivo e vi raccomandano le correzioni utili, che applicate voi. Un intervento nell'applicazione si fattura a ore o a forfait.

Fonti e documentazione ufficiale

Contattaci