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
| Feature | Vaultwarden (Self-Hosted) | Bitwarden (Official Self-Hosted) | Bitwarden Cloud |
|---|---|---|---|
| Hosting | Your hardware only | Your hardware only | Bitwarden’s servers |
| Cost | Free (infrastructure only) | Free community edition | Free (limited) / $10/year personal |
| Docker containers required | 1 | 11+ | N/A |
| RAM usage | ~50 MB idle | ~2+ GB | N/A |
| Runs on Raspberry Pi | Yes (Pi 3/4/5) | Not practically | N/A |
| Client compatibility | All official Bitwarden clients | All official Bitwarden clients | All official Bitwarden clients |
| Premium features (TOTP, sharing, collections) | All included, free | Requires paid license for some | $10/year for premium |
| Official support | Community only | Yes | Yes |
| Data privacy | 100% on your hardware | 100% on your hardware | Bitwarden’s US servers |
| Encryption model | Client-side AES-256. Server never sees plaintext. | Same | Same |
Fonte dos dados: localtonet
Por que Tailscale em vez de Cloudflare Tunnel?
Embora o Cloudflare Tunnel seja popular, ele pode apresentar problemas:
- Compatibilidade: Políticas rigorosas (como mTLS) costumam quebrar a autenticação do app mobile do Bitwarden.
- 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 .env2. Configuração do Tailscale
O Tailscale cuidará da conectividade segura e dos certificados SSL automaticamente.
- Acesse o painel do Tailscale e em DNS, habilite o Magic DNS e os HTTPS Certificates.
- Vá em Settings > Keys e gere uma Auth Key.
- 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 hashOu
Comando 2
/vaultwarden hashDigite 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:
- Acesse sua Conta Google > Segurança.
- Ative a Verificação em duas etapas.
- Busque por “Senhas de app”.
- Crie uma senha chamada
Vaultwarden Locale 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.comSubindo o Servidor
Com tudo configurado, suba os containers:
docker compose up -dPara descobrir a URL de acesso gerada pelo Tailscale, verifique os logs do container:
docker logs tailscale_containerVocê 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 pastaattachmentse o arquivoconfig.json. - Sugestão: Utilize um script cron para zipar a pasta
/vw-datae 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:
- Certifique-se de que o app do Tailscale está conectado no celular.
- No app do Bitwarden, antes de logar, clique em Entrando em: bitwarden.com e clique em Auto-hospedado.
- 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/adminpara 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/vaultwardenAtençã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.