Hospedar Vaultwarden em um VPS gerenciado: suas senhas em seu servidor

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.

Simon Vasconcelos Lee Por Publicado em 8 de novembro de 2026Leitura: 15 minutos

Todos os guias

O essencial

  1. A licença AGPL-3.0 permite rodar o Vaultwarden livremente, em uma empresa ou fora dela; se você o modificar, oferece o código de sua versão a quem a utiliza.
  2. Instale-o com Docker Compose: uma imagem, uma porta publicada localmente e uma pasta de dados, atrás de um proxy reverso.
  3. O HTTPS é indispensável ao cofre web: sirva o Vaultwarden em um nome de domínio próprio e informe esse nome em DOMAIN.
  4. Crie sua conta e depois feche os cadastros com 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.
  5. Faça backup todos os dias do banco e dos anexos, teste a restauração e atualize com docker compose pull.

O que o Vaultwarden faz

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.

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 que a licença AGPL-3.0 permite

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.

A instalação com Docker Compose

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:

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

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.

HTTPS e WebSocket: o proxy reverso

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.

Com o Caddy

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:

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

Com o Nginx e o Certbot

Este bloco retoma o exemplo de Nginx do wiki, reduzido à porta 80 para deixar o Certbot instalar o HTTPS:

Bloco do 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;
    }
}

Em seguida, o Certbot instala o certificado e cuida de renová-lo:

Terminal
sudo certbot --nginx

Verificar o WebSocket

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.

Fechar os cadastros

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.

  1. Abra seu endereço HTTPS e crie sua conta; depois, conecte seus aplicativos a esse endereço.
  2. Mude SIGNUPS_ALLOWED para "false" no compose.yaml.
  3. Reinicie com docker compose up -d: uma variável de ambiente fica vinculada ao contêiner, que precisa ser recriado para levá-la em conta.
compose.yaml, em environment
SIGNUPS_ALLOWED: "false"

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 de administração e seu token

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.

Terminal
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:

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

Confira o resultado, reinicie e conecte-se em /admin com sua senha, e não com a cadeia PHC:

Terminal
docker compose config
docker compose up -d

O que protege o cofre

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çãoO que ela trazOnde se configura
Senha mestraMantém os dados criptografados, mesmo se uma cópia do banco circularCada usuário a escolhe, longa e exclusiva deste cofre
Autenticação em duas etapasSem ela, o wiki lembra que adivinhar uma senha por força bruta continua possível, em teoriaEm cada conta; uma política de organização pode exigi-la
HTTPSCriptografa o trajeto entre o cliente e o servidorO proxy reverso
Cadastros fechadosImpede que um desconhecido crie uma contaSIGNUPS_ALLOWED
Dicas de senhaExibidas na página, ajudariam a adivinhar uma senha; a versão 1.37.5 as mantém ocultas por padrãoDeixe SHOW_PASSWORD_HINT em false; PASSWORD_HINTS_ALLOWED as retira por completo
Limite de tentativasFreia as tentativas a partir de um mesmo endereço, no login e em /adminLOGIN_RATELIMIT_SECONDS e ADMIN_RATELIMIT_SECONDS
Fail2banBloqueia os endereços após falhas demais, o que o wiki considera particularmente importante para uma instância públicaNo 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.

Mais três configurações, extraídas do guia de reforço de segurança

SQLite, MariaDB ou PostgreSQL

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.

BancoImplantaçãoBackup
SQLiteNenhuma: um arquivo, vw-data/db.sqlite3O comando /vaultwarden backup ou a cópia da pasta, com o serviço parado
MariaDB ou MySQLSeu servidor de banco e DATABASE_URL em mysql://Uma exportação do banco, além da pasta vw-data
PostgreSQLSeu servidor de banco e DATABASE_URL em postgresql://Uma exportação do banco, além da pasta vw-data
compose.yaml, em environment (PostgreSQL)
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.

Os e-mails: a configuração SMTP

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:

compose.yaml, em 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 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:

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

Os backups

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:

ElementoO que ele guardaA salvar
db.sqlite3Quase todos os dados: contas, organizações, cofresObrigatório
attachments/Os anexos, armazenados fora do bancoObrigatório
config.jsonA configuração da página de administração, com dados sensíveis em texto puroRecomendado, criptografado
rsa_key*As chaves que assinam as sessões; perdê-las desconecta os usuáriosRecomendado, criptografado
sends/Os arquivos enviados pelo Send, efêmeros por naturezaOpcional
icon_cache/Os ícones dos sites, baixados de novo quando precisoOpcional

O banco, com o serviço em funcionamento

Desde a versão 1.32.1, o Vaultwarden sabe fazer backup do próprio banco SQLite, sem parar o serviço:

Terminal
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.

A pasta inteira, com o serviço parado

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:

Terminal, na pasta do compose.yaml
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.

Restaurar

  1. Pare o Vaultwarden.
  2. Substitua cada arquivo ou pasta de vw-data pela versão salva.
  3. Se o banco vem de /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.
  4. Reinicie e verifique se consegue abrir o cofre.

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.

As atualizações

O wiki dá dois comandos, a partir da pasta do compose.yaml. A pasta de dados continua no lugar:

Terminal
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.

Quem faz o quê em um VPS gerenciado

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.

AssuntoNossas equipesVocê
O servidorAtualizações do sistema e de segurança, com intervenções no servidor incluídasO momento que convém a sua atividade
A supervisãoServidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar sua ligaçãoA leitura dos logs de sua instância
VaultwardenAcompanhamento proativo: erros, lentidões e espaço em disco identificados, correção recomendadaA 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 cofreO servidor que os sustenta, monitorado e com backupOs usuários, os convites, as senhas mestras e a autenticação em duas etapas
Os backupsToda noite, criptografados e guardados fora da máquina; restauração incluídaAs cópias próprias do Vaultwarden e o pedido de restauração, quando você precisar
A migraçãoSeu servidor atual migrado, grátisO 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.

Vaultwarden, em um servidor cuidado por nós

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.

Conhecer os VPS gerenciados

Perguntas frequentes

O Vaultwarden é gratuito para uma empresa?

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.

O Vaultwarden funciona com os aplicativos do Bitwarden?

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.

Como instalar o Vaultwarden com Docker Compose?

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.

Como desativar os cadastros no Vaultwarden?

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.

Como configurar o token de administração do Vaultwarden?

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.

O que protege um cofre do Vaultwarden?

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.

Como fazer backup do Vaultwarden?

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 Vaultwarden?

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.

Fontes e documentação oficial

Entre em contato