Hospedar o Vaultwarden em um VPS gerenciado é guardar suas senhas e as de sua equipe em uma máquina própria, que nossas equipes mantêm atualizada e supervisionam dia e noite. O Vaultwarden é um software livre sob a licença AGPL-3.0. Este guia segue a documentação oficial dele: a instalação com Docker Compose, o HTTPS, o fechamento dos cadastros, o token de administração, o que protege o cofre, o banco de dados, os e-mails, os backups e as atualizações.
Por Simon Vasconcelos Lee
Publicado em 8 de novembro de 2026Leitura: 15 minutos
DOMAIN.SIGNUPS_ALLOWED: por padrão, qualquer pessoa que alcance a instância pode se cadastrar. Uma senha mestra forte e a autenticação em duas etapas protegem então o cofre.docker compose pull.O Vaultwarden é um servidor de gerenciamento de senhas escrito em Rust, concebido para a auto-hospedagem. O wiki dele o destina a pessoas físicas, famílias e organizações de porte humano. O cofre web vem incluído nas imagens Docker.
Ele implementa uma API compatível com os clientes oficiais do Bitwarden, no navegador, no computador e no celular. O README esclarece que o projeto não é associado ao Bitwarden nem à Bitwarden, Inc., e pede que qualquer problema, seja qual for o cliente usado, seja relatado diretamente a ele, e não aos canais de suporte oficiais.
/admin para as configurações, as contas e o diagnóstico.O wiki também lista o que falta em relação ao servidor oficial, como o login por chave de acesso, as funções personalizadas e algumas políticas empresariais. Ele esclarece que os recursos voltados sobretudo a grandes organizações não são uma prioridade do projeto: leia essa lista se precisar deles.
O Vaultwarden é publicado sob a GNU Affero General Public License, versão 3. O texto afirma uma permissão irrestrita de rodar o programa não modificado. Você pode, portanto, usar a imagem publicada pelo projeto para sua empresa e sua equipe, sem licença a comprar.
O artigo 13 acrescenta uma condição própria da AGPL: se você modificar o programa, sua versão deve oferecer a todos que a utilizam à distância, pela rede, o meio de obter gratuitamente o código-fonte dela.
O README recomenda as imagens de contêiner. Em um servidor com o Docker instalado, crie uma pasta e coloque nela este compose.yaml, extraído do README e do wiki:
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
docker compose up -d
127.0.0.1: como no README, o Vaultwarden só é acessado pelo proxy reverso, instalado no mesmo servidor.DOMAIN: o endereço de base de sua instância, em https. O wiki avisa que recursos deixam de funcionar sem isso, entre eles os anexos e os links de convite.vw-data em um disco local: ela guarda todos os dados. O wiki aponta os problemas do SQLite em um volume CIFS ou Samba, que não gerencia o bloqueio de arquivos.latest acompanha a última versão publicada, e o wiki a recomenda para a maioria dos usos. Uma tag como 1.37.5 fixa uma versão, e latest-alpine dá o mesmo em uma base Alpine.Seu nome de domínio aponta para o servidor com registros A e AAAA, e os visitantes chegam pelas portas 80 e 443. Enquanto o proxy reverso não estiver no lugar, o cofre web fica inutilizável: passe direto à seção seguinte.
O projeto não informa números de memória nem de processador; ele se apresenta apenas como uma solução para os casos em que o serviço oficial, exigente em recursos, não serve. O tamanho depende do número de contas e do volume dos anexos. Em um VPS gerenciado, descreva-nos o uso e recomendamos o tamanho adequado.
O cofre web se apoia na API Web Crypto, que os navegadores reservam a contextos seguros: o README indica que ele só funciona com o HTTPS ativado, e o wiki considera o HTTPS “pretty much required”, praticamente obrigatório. O projeto recomenda um proxy reverso na frente do Vaultwarden e desaconselha o TLS integrado ao framework dele, o Rocket.
Use um certificado reconhecido, como os do Let's Encrypt, que o wiki recomenda: com um certificado autoassinado, algumas plataformas recusam a conexão. O certificado deve trazer a cadeia completa, sem o que os dispositivos Android não se conectam.
As notificações WebSocket, ativas por padrão, avisam o navegador, o aplicativo de desktop e a extensão de que uma entrada mudou. Elas passam pela porta HTTP principal, e o proxy precisa repassar os cabeçalhos Upgrade e Connection. Os aplicativos de celular usam as notificações nativas do sistema, que são configuradas à parte.
O wiki aconselha olhar primeiro o Caddy, se você não tem preferência: ele ativa o HTTPS sozinho, obtém o certificado Let's Encrypt e dá suporte ao WebSocket. A configuração do wiki também repassa ao Vaultwarden o endereço real do visitante, para os logs dele:
vault.example.com {
reverse_proxy 127.0.0.1:8000 {
header_up X-Real-IP {remote_host}
}
}
Este bloco retoma o exemplo de Nginx do wiki, reduzido à porta 80 para deixar o Certbot instalar o HTTPS:
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;
}
}
Em seguida, o Certbot instala o certificado e cuida de renová-lo:
sudo certbot --nginx
Abra as ferramentas de desenvolvimento do navegador, aba de rede, filtro WS, e reconecte-se ao cofre: uma resposta 101 em /notifications/hub confirma a conexão. Outro teste do wiki: abra o cofre em dois navegadores, renomeie uma entrada em um deles, e a mudança aparece logo no outro.
Por padrão, qualquer pessoa que alcance sua instância pode criar uma conta nela. Isso é útil para sua primeira conta, e o wiki recomenda fechar em seguida, para impedir que um invasor crie uma.
SIGNUPS_ALLOWED para "false" no compose.yaml.docker compose up -d: uma variável de ambiente fica vinculada ao contêiner, que precisa ser recriado para levá-la em conta.SIGNUPS_ALLOWED: "false"
INVITATIONS_ALLOWED em "false" retira essa possibilidade, e o wiki deixa essa escolha conforme a confiança que você tem em seus usuários.SIGNUPS_DOMAINS_WHITELIST limita o cadastro a certos domínios de e-mail, e SIGNUPS_VERIFY em true passa a exigir a verificação do endereço. Quando essa lista está definida, SIGNUPS_ALLOWED é ignorada.Assim que você salva a configuração pela página de administração, um arquivo config.json nasce na pasta de dados e prevalece sobre as variáveis de ambiente. As configurações em questão passam então a ser alteradas por essa página: modificar o compose.yaml deixa de bastar.
A página /admin serve para configurar o Vaultwarden, ver e excluir as contas e as organizações, remover a autenticação em duas etapas de um usuário, convidar e ler o diagnóstico. Sem ADMIN_TOKEN, ela fica desativada: se você não precisa dela, deixe-a assim.
O wiki recomenda fortemente ativar o HTTPS antes dessa página. O token funciona como senha e pode ser guardado em forma de hash, em argon2id, em vez de em texto puro na configuração. O Vaultwarden fornece o comando: ele pede a senha duas vezes e devolve uma cadeia PHC.
docker run --rm -it vaultwarden/server /vaultwarden hash
Coloque essa cadeia em um arquivo .env, ao lado do compose.yaml, entre aspas simples, e depois chame-a a partir do serviço:
VAULTWARDEN_ADMIN_TOKEN='$argon2id$...'
ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN}
Confira o resultado, reinicie e conecte-se em /admin com sua senha, e não com a cadeia PHC:
docker compose config
docker compose up -d
ADMIN_SESSION_LIFETIME. Uma sessão aberta continua válida após uma troca de token. Para encerrar todas, exclua rsa_key.pem da pasta de dados e reinicie, o que também desconecta os usuários e cancela os convites em andamento./admin apenas a certos endereços ou acrescentar a ele uma autenticação HTTP.DISABLE_ADMIN_TOKEN retira todo controle: ele é previsto para uma camada de autenticação separada colocada na frente, e o wiki o reserva a quem sabe o que está fazendo.A primeira proteção é a senha mestra. Os dados do cofre são criptografados com chaves pessoais ou de organização: quem obtém uma cópia do banco ou força uma sessão ainda precisa quebrar essa senha para lê-los. A solidez dela conta, portanto, antes de tudo. Uma sessão de administração, por si só, permite excluir uma conta ou remover uma autenticação em duas etapas, sem dar acesso aos dados do cofre.
| Proteção | O que ela traz | Onde se configura |
|---|---|---|
| Senha mestra | Mantém os dados criptografados, mesmo se uma cópia do banco circular | Cada usuário a escolhe, longa e exclusiva deste cofre |
| Autenticação em duas etapas | Sem ela, o wiki lembra que adivinhar uma senha por força bruta continua possível, em teoria | Em cada conta; uma política de organização pode exigi-la |
| HTTPS | Criptografa o trajeto entre o cliente e o servidor | O proxy reverso |
| Cadastros fechados | Impede que um desconhecido crie uma conta | SIGNUPS_ALLOWED |
| Dicas de senha | Exibidas na página, ajudariam a adivinhar uma senha; a versão 1.37.5 as mantém ocultas por padrão | Deixe SHOW_PASSWORD_HINT em false; PASSWORD_HINTS_ALLOWED as retira por completo |
| Limite de tentativas | Freia as tentativas a partir de um mesmo endereço, no login e em /admin | LOGIN_RATELIMIT_SECONDS e ADMIN_RATELIMIT_SECONDS |
| Fail2ban | Bloqueia os endereços após falhas demais, o que o wiki considera particularmente importante para uma instância pública | No servidor, a partir de um log LOG_FILE |
Prepare-se para o esquecimento da senha mestra antes que ele aconteça: ative o acesso de emergência de sua conta e, em uma organização, a recuperação de conta, que exige o e-mail configurado.
root por padrão, e o wiki considera preferível dar a ela o mínimo de direitos. Acrescente user: 1000:1000 ao serviço, com uma pasta vw-data pertencente a esse usuário.access_token. Se seu proxy guarda os logs ou os envia a um serviço externo, o wiki recomenda ocultar esse valor neles./var/run/docker.sock.A mesma imagem suporta os três bancos. O wiki descreve o SQLite como o mais usado e o mais testado, e o recomenda para a maioria dos usos, salvo necessidade precisa de outro.
| Banco | Implantação | Backup |
|---|---|---|
| SQLite | Nenhuma: um arquivo, vw-data/db.sqlite3 | O comando /vaultwarden backup ou a cópia da pasta, com o serviço parado |
| MariaDB ou MySQL | Seu servidor de banco e DATABASE_URL em mysql:// | Uma exportação do banco, além da pasta vw-data |
| PostgreSQL | Seu servidor de banco e DATABASE_URL em postgresql:// | Uma exportação do banco, além da pasta vw-data |
DATABASE_URL: "postgresql://user_name:user_password@db_host:5432/vaultwarden"
Crie um banco vazio e o usuário dele: na inicialização, o próprio Vaultwarden instala nele o esquema. Uma senha com caracteres especiais é escrita em codificação por cento nesse endereço.
Faça essa escolha antes de encher o cofre. O wiki descreve uma passagem do SQLite para o PostgreSQL com o pgloader, esclarecendo que esse caminho não é suportado pelo projeto, que é feito por sua conta e risco e que começa por um backup.
O Vaultwarden inicia sem e-mail, mas vários recursos dependem dele: os convites, a verificação dos endereços, o envio das dicas de senha, a autenticação em duas etapas por e-mail e a recuperação de conta.
Em um VPS Simafri, o envio passa por um relay SMTP autenticado, na porta 587: o endereço de uma conta de e-mail que você já tem, ou o Simafri Suite. A senha vai no arquivo .env, como o token de administração:
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}
DOMAIN e continuam válidos por 5 dias.No compatible authentication mechanism was found.config.json.Se nada sair, o wiki propõe testar a conexão com o relay a partir do servidor. O comando devolve 0 quando o relay responde:
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/smtp.example.com/587'; echo $?
O README lembra que o projeto não pode ser responsabilizado por uma perda de dados e recomenda fortemente backups regulares. O wiki os aconselha automáticos, com pelo menos uma cópia em outro lugar. Veja o que a pasta de dados contém com o SQLite:
| Elemento | O que ele guarda | A salvar |
|---|---|---|
db.sqlite3 | Quase todos os dados: contas, organizações, cofres | Obrigatório |
attachments/ | Os anexos, armazenados fora do banco | Obrigatório |
config.json | A configuração da página de administração, com dados sensíveis em texto puro | Recomendado, criptografado |
rsa_key* | As chaves que assinam as sessões; perdê-las desconecta os usuários | Recomendado, criptografado |
sends/ | Os arquivos enviados pelo Send, efêmeros por natureza | Opcional |
icon_cache/ | Os ícones dos sites, baixados de novo quando preciso | Opcional |
Desde a versão 1.32.1, o Vaultwarden sabe fazer backup do próprio banco SQLite, sem parar o serviço:
docker exec -it vaultwarden /vaultwarden backup
O comando grava um arquivo db_AAAAMMDD_HHMMSS.sqlite3 ao lado do banco, em vw-data. A imagem não contém nem sqlite3 nem cron: o wiki aconselha agendar a tarefa no servidor, pelo menos uma vez por dia. Retire então o -it, pois uma tarefa agendada não tem terminal, e faça a triagem desses arquivos, que se acumulam.
Quando o banco não está em uso, basta uma simples cópia de todos os arquivos dele. É o método com o serviço parado que o wiki dá como exemplo para o Docker, e ele leva junto os anexos:
docker compose down
tar -czf vaultwarden-$(date +%F).tar.gz vw-data
docker compose up -d
O wiki considera útil uma camada de criptografia, sobretudo quando o backup leva o token de administração e os acessos SMTP, e cita rclone, restic e rustic para enviar as cópias para longe. Com MariaDB ou PostgreSQL, acrescente uma exportação do banco à pasta vw-data.
O wiki pede para não confiar apenas em snapshots de disco, mais delicados de restaurar. Guarde, portanto, estas cópias próprias da aplicação: colocadas no disco do servidor, elas também entram nos backups noturnos dele.
vw-data pela versão salva./vaultwarden backup, nomeie-o db.sqlite3 e exclua antes qualquer arquivo db.sqlite3-wal existente: um journal que não corresponde pode corromper o banco. Se ele vem de uma cópia direta, restaure juntos o db.sqlite3 e o db.sqlite3-wal dele.O wiki aconselha repetir esse exercício de tempos em tempos, mantendo uma cópia dos dados no lugar: é assim que você verifica se um backup funciona.
O wiki dá dois comandos, a partir da pasta do compose.yaml. A pasta de dados continua no lugar:
docker compose pull
docker compose up -d
Essas atualizações contam mais do que em outros casos. Os aplicativos de celular e as extensões de navegador se atualizam sozinhos, e o wiki avisa que uma diferença de versão em relação ao servidor pode causar falhas repentinas. O cofre web, incluído na imagem, fica sempre alinhado ao servidor dele.
O projeto não tem calendário de versões: acompanhe as notas de versão e faça um backup logo antes de cada atualização. Algumas trazem correções de segurança, como a 1.37.5, de 1º de novembro de 2026, cujas notas recomendam atualizar o quanto antes. Essas notas também avisam que, desde a 1.37.5, um valor de configuração inválido impede o Vaultwarden de iniciar: revise seu arquivo de ambiente antes de atualizar. A página de diagnóstico de /admin indica se existe uma versão mais recente.
A auto-hospedagem exige cuidar do servidor além da aplicação. Em um VPS gerenciado, nossas equipes assumem o servidor e acompanham sua instância de forma proativa; o Vaultwarden continua sendo seu software, com as configurações e os dados dele.
| Assunto | Nossas equipes | Você |
|---|---|---|
| O servidor | Atualizações do sistema e de segurança, com intervenções no servidor incluídas | O momento que convém a sua atividade |
| A supervisão | Servidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar sua ligação | A leitura dos logs de sua instância |
| Vaultwarden | Acompanhamento proativo: erros, lentidões e espaço em disco identificados, correção recomendada | A instalação, as atualizações e as configurações dele, que você aplica, por conta própria ou com seu assistente de IA |
| As contas e o cofre | O servidor que os sustenta, monitorado e com backup | Os usuários, os convites, as senhas mestras e a autenticação em duas etapas |
| Os backups | Toda noite, criptografados e guardados fora da máquina; restauração incluída | As cópias próprias do Vaultwarden e o pedido de restauração, quando você precisar |
| A migração | Seu servidor atual migrado, grátis | O momento da virada |
Se você preferir que nossas equipes intervenham na própria aplicação, esse serviço é cobrado por hora ou por valor fechado, com o orçamento informado antes da intervenção.
Com um VPS gerenciado Simafri, nossas equipes mantêm atualizado o servidor de sua instância Vaultwarden, monitoram-no dia e noite e intervêm sem esperar sua ligação; elas também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica por conta própria ou com seu assistente de IA. Os backups são criptografados todas as noites e guardados fora da máquina, a restauração está incluída, e a migração de seu servidor atual é grátis.
Sim. O Vaultwarden está sob a licença AGPL-3.0: você pode rodá-lo em uma empresa sem licença a comprar. Se o modificar, sua versão deve oferecer o código-fonte a quem a utiliza pela rede. Resta o custo do servidor em que ele roda.
Sim. O README apresenta o Vaultwarden como compatível com os clientes oficiais do Bitwarden, esclarecendo que o projeto não é associado ao Bitwarden nem à Bitwarden, Inc. Um problema é, portanto, relatado ao projeto Vaultwarden, seja qual for o cliente usado.
Crie um compose.yaml com a imagem vaultwarden/server, uma pasta de dados e a porta publicada em 127.0.0.1 e execute docker compose up -d. Coloque então na frente um proxy reverso em HTTPS: sem HTTPS, o cofre web não funciona. Informe também seu endereço em DOMAIN.
Depois de criar sua conta, mude SIGNUPS_ALLOWED para false no compose.yaml e execute docker compose up -d de novo. As organizações ainda podem convidar: INVITATIONS_ALLOWED em false retira essa possibilidade. Se a página de administração já salvou a configuração, faça esse ajuste por ela.
Execute o comando vaultwarden hash, que devolve uma cadeia argon2id, e coloque-a em ADMIN_TOKEN, a partir de um arquivo .env com o Docker Compose. Você se conecta então em /admin com sua senha. Sem ADMIN_TOKEN, a página fica desativada.
Primeiro, a senha mestra: os dados são criptografados, e uma cópia do banco só é lida se ela for quebrada. Somam-se a autenticação em duas etapas, o HTTPS, os cadastros fechados, um token de administração com hash e backups criptografados.
Com o SQLite, execute todos os dias o comando /vaultwarden backup no contêiner e copie também a pasta attachments, o config.json e os arquivos rsa_key. Com MariaDB ou PostgreSQL, acrescente uma exportação do banco. Teste a restauração regularmente.
Um VPS gerenciado cobre o servidor: sistema, segurança, supervisão e backups. Nossas equipes também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica. Uma intervenção na aplicação é cobrada por hora ou por valor fechado.
Simafri
Vamos falar de seu site
Conte para a gente sobre seu projeto em poucas palavras: responderemos rapidamente.
Obrigado! O seu pedido foi enviado. Responderemos em breve.
Prefere o e-mail? Escreva para a gente em support@simafri.com.