Como Hospedar seu Próprio Servidor Vaultwarden Localmente

Como Hospedar seu Próprio Servidor Vaultwarden Localmente

Ter o controle total sobre suas credenciais é o primeiro passo para uma soberania digital quase real. Neste guia, vou detalhar como implementei meu próprio servidor de senhas utilizando o Vaultwarden (uma implementação leve em Rust da API do Bitwarden).

O objetivo é centralizar senhas e TOTP (autenticação de dois fatores) sem custos de assinatura, garantindo que as informações não fiquem em mãos de terceiros.


A Técnologia Escolhida

Para este projeto, escolhi três ferramentas principais:

  • Vaultwarden: Diferente do Bitwarden oficial (que exige GBs de RAM), o Vaultwarden roda com menos de 200MB, sendo ideal para Raspberry Pi ou Mini PCs.

  • Tailscale: Cria uma rede Mesh VPN. O servidor não tem IP público; ele só “existe” para seus dispositivos autorizados.

  • Docker: Facilita a portabilidade e atualizações dentre inumeros benefícios.


Vaultwarden vs Bitwarden

FeatureVaultwarden (Self-Hosted)Bitwarden (Official Self-Hosted)Bitwarden Cloud
HostingYour hardware onlyYour hardware onlyBitwarden’s servers
CostFree (infrastructure only)Free community editionFree (limited) / $10/year personal
Docker containers required111+N/A
RAM usage~50 MB idle~2+ GBN/A
Runs on Raspberry PiYes (Pi 3/4/5)Not practicallyN/A
Client compatibilityAll official Bitwarden clientsAll official Bitwarden clientsAll official Bitwarden clients
Premium features (TOTP, sharing, collections)All included, freeRequires paid license for some$10/year for premium
Official supportCommunity onlyYesYes
Data privacy100% on your hardware100% on your hardwareBitwarden’s US servers
Encryption modelClient-side AES-256. Server never sees plaintext.SameSame

Fonte dos dados: localtonet


Por que Tailscale em vez de Cloudflare Tunnel?

Embora o Cloudflare Tunnel seja popular, ele pode apresentar problemas:

  1. Compatibilidade: Políticas rigorosas (como mTLS) costumam quebrar a autenticação do app mobile do Bitwarden.
  2. Segurança: Deixar o cofre exposto diretamente na internet pública, mesmo via túnel, abre margem para ataques de dia zero (0-day) no painel de login.

Com o Tailscale, o servidor sequer “existe” na internet pública. Ele reside em uma camada de rede privada, acessível apenas pelos seus dispositivos autorizados.


Pré-requisitos

Antes de começar, você precisará dos seguintes programas em sua máquina:

  • Docker e Docker Compose instalados.
  • Git para clonagem do repositório.
  • Tailscale para conectar ao tunel.

1. Preparação do Ambiente

Comece clonando o repositório do projeto e configurando o arquivo de variáveis de ambiente:

git clone https://github.com/ofcoliva/vaultwarden.git
cd vaultwarden
cp .env-example .env

2. Configuração do Tailscale

O Tailscale cuidará da conectividade segura e dos certificados SSL automaticamente.

  1. Acesse o painel do Tailscale e em DNS, habilite o Magic DNS e os HTTPS Certificates.
  2. Vá em Settings > Keys e gere uma Auth Key.
  3. No seu arquivo .env, insira a chave na variável: TS_AUTHKEY=tskey-auth-xxxx....

3. Gerando o Token de Administrador

O Vaultwarden exige um hash seguro (Argon2) para proteger o acesso ao painel administrativo:

Pode ser feito criando um container temporário que irá executar o programa Vaultwarden com a função hash, ou pode optar por entrar no Vscode ou no terminal, fazer o acesso remoto ao container do Vaultwarden e executar o segundo comando. Fica a seu critério.

Comando 1

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

Ou

Comando 2

/vaultwarden hash

Digite uma senha forte. O comando retornará uma string iniciando com $argon2id$. Copie-a integralmente para o seu .env:

ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$xxxxxxxx...'

4. Configuração de E-mail (SMTP)

O envio de e-mails é essencial para convites de novos usuários e alertas de segurança. Utilizaremos o Gmail via Senhas de App.

Configurando o Gmail:

  1. Acesse sua Conta Google > Segurança.
  2. Ative a Verificação em duas etapas.
  3. Busque por “Senhas de app”.
  4. Crie uma senha chamada Vaultwarden Local e copie o código de 16 dígitos.

Atualizando o .env:

Preencha os dados de SMTP conforme abaixo:

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURITY=starttls
SMTP_USERNAME=seu-email@gmail.com
SMTP_PASSWORD=aquela-senha-de-16-digitos
SMTP_FROM=seu-email@gmail.com

Subindo o Servidor

Com tudo configurado, suba os containers:

docker compose up -d

Para descobrir a URL de acesso gerada pelo Tailscale, verifique os logs do container:

docker logs tailscale_container

Você verá uma saída similar a: https://seu-servidor.palavra-palavra.ts.net/.

Nota importante: O certificado SSL é gerado automaticamente. Para acessar, seu dispositivo (PC ou Celular) deve estar conectado à sua conta Tailscale.


Estratégia de Backup (Obrigatório)

Self-hosting sem backup é um risco desnecessário. O Vaultwarden armazena tudo na pasta /vw-data.

  • O que salvar: O arquivo db.sqlite3, a pasta attachments e o arquivo config.json.
  • Sugestão: Utilize um script cron para zipar a pasta /vw-data e enviá-la para um armazenamento externo (S3, Dropbox ou HD externo) semanalmente.

Em breve criarei um post ensinando a fazer o backup em cloud automatizado usando Rclone como um complemento da stack atual.


Ajustes de Pós-Instalação e Mobile

Fechando as portas

Após criar sua conta principal, desabilite novos registros para evitar intrusos: No .env, altere: SIGNUPS_ALLOWED=false.

Acesso no Smartphone

Para usar os apps mobile do Bitwarden:

  1. Certifique-se de que o app do Tailscale está conectado no celular.
  2. No app do Bitwarden, antes de logar, clique em Entrando em: bitwarden.com e clique em Auto-hospedado.
  3. Em “URL do Servidor”, digite sua URL completa: https://seu-servidor.nome-usuario.ts.net.

Acesso e Gestão

  • Interface do Usuário: Acesse a URL gerada para criar sua conta principal.
  • Painel de Admin: Acesse https://seu-servidor.ts.net/admin para gerenciar configurações globais.

⚠️ Aviso importante

O Vaultwarden não é um produto oficial da Bitwarden.
Não entre em contato com o suporte da Bitwarden para problemas relacionados ao Vaultwarden.

Relate erros e solicite ajuda no
👉 https://vaultwarden.discourse.group
👉 https://github.com/dani-garcia/vaultwarden

Atenção: se você perder sua senha mestra, seus dados serão permanentemente irrecuperáveis.

O Vaultwarden utiliza criptografia no lado do cliente (igual ao Bitwarden).
Isso significa que o servidor nunca tem acesso às suas senhas em texto simples — e, por isso, não existe mecanismo de recuperação de senha.


FAQ de Emergência

“E se o meu servidor local cair e eu estiver na rua?” Não entre em pânico. Os aplicativos do Bitwarden (Desktop e Mobile) mantêm um cache local criptografado. Você conseguirá visualizar suas senhas mesmo offline. O servidor é necessário apenas para sincronizar alterações ou novos cadastros. Mas caso não se importe e já tenha uma VPS rodando, isso não somara nos custos caso ela tenha os recursos mínimos necessários sobrando. No entanto vai contra o principio de porquê você deveria usar o Vaultwarden.


Dica de Manutenção

Após o primeiro boot, o Vaultwarden passa a priorizar o arquivo config.json dentro do volume de dados. Se precisar alterar configurações de SMTP futuramente, prefira usar o Painel de Admin na web, que as alterações serão persistidas corretamente.