Senhas · sem KYC
Hospede Vaultwarden em um VPS offshore
Execute seu próprio cofre de senhas compatível com Bitwarden em hardware que você controla, em uma jurisdição favorável à privacidade, pago em cripto sem vincular identidade.
O que é
Vaultwarden é um servidor Bitwarden leve e não oficial, escrito em Rust, que fala a mesma API do Bitwarden — por isso todos os clientes oficiais do Bitwarden (extensões de navegador, desktop, iOS/Android, CLI) sincronizam normalmente com ele. Ele armazena cofres criptografados de senhas, passkeys, sementes TOTP, cartões e notas seguras, com suporte a organizações, anexos e controles administrativos, usando apenas uma fração da RAM da stack oficial.
Por que hospedar offshore
Seu cofre de senhas é o ativo mais sensível que você possui, então quem controla o servidor e sob qual legislação importa tanto quanto a criptografia em si. Um VPS no-KYC, pago em cripto, em uma localização com foco em privacidade (NL/CH/RO/IS) significa que a máquina que armazena seus cofres criptografados não está vinculada à sua identidade legal, não está sujeita a uma intimação judicial dos EUA/Reino Unido e não pode ser bloqueada por um provedor de pagamento que decida suspender sua conta.
A implantação
Uma configuração de referência funcional
Copie isto para uma instância nova do ChainVPS. Substitua os placeholders e depois coloque no ar.
# 1) DNS: aponte vault.example.com -> seu IP ChainVPS (registro A/AAAA)
# 2) Gere um ADMIN_TOKEN Argon2 (NÃO use uma string em texto puro):
# docker run --rm -it vaultwarden/server /vaultwarden hash
# cole a string resultante '$argon2id$...' como ADMIN_TOKEN abaixo (use aspas simples no .env)
# 3) Salve como docker-compose.yml, crie o Caddyfile mostrado e depois execute: docker compose up -d
services:
vaultwarden:
image: vaultwarden/server:1.32.7
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com" # deve corresponder exatamente à URL pública
SIGNUPS_ALLOWED: "false" # crie sua conta e depois mantenha isso como false
INVITATIONS_ALLOWED: "true"
ADMIN_TOKEN: "${ADMIN_TOKEN}" # hash Argon2 da etapa 2, mantido no .env
WEBSOCKET_ENABLED: "true" # sincronização em tempo real (servida na porta principal)
SENDS_ALLOWED: "true"
ROCKET_PORT: "80"
volumes:
- ./vw-data:/data # cofres, anexos, banco sqlite, chaves
networks: [vw]
# nenhuma porta do host publicada: apenas o Caddy se comunica com ele pela rede interna
caddy:
image: caddy:2
container_name: vaultwarden-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp" # HTTP/3
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
networks: [vw]
depends_on: [vaultwarden]
networks:
vw:
# ---- Caddyfile (mesmo diretório) ----
# vault.example.com {
# encode gzip
# reverse_proxy vaultwarden:80
# }
# O Caddy obtém e renova um certificado Let's Encrypt automaticamente; HTTPS é obrigatório
# porque os clientes Bitwarden usam WebCrypto, que só funciona em uma origem segura.
Firewall
Portas a abrir
| Porta | Protocolo | Finalidade |
|---|---|---|
| 443 | TCP | Cofre HTTPS + sincronização de clientes + WebSocket (via Caddy); a única porta que precisa ser pública |
| 80 | TCP | Redirecionamento HTTP -> HTTPS e emissão de certificado ACME/Let's Encrypt |
| 443 | UDP | HTTP/3 (QUIC) opcional para sincronização de clientes mais rápida |
Dimensionamento adequado
Qual plano você precisa
VPS Nano/Small (1 vCPU, 1-2 GB de RAM)
Em repouso, o Vaultwarden usa cerca de 15-30 MB de RAM com SQLite; um Nano já é confortável. O armazenamento é mínimo, a menos que você guarde anexos grandes.
VPS Pro (2 vCPU, 4 GB de RAM)
Margem para sincronizações simultâneas, anexos e para rodar o Caddy junto com fail2ban/backups na mesma máquina.
VPS Pro (tier superior) ou Dedicated de entrada
Migre de SQLite para Postgres/MySQL e coloque os anexos em um plano Storage ou disco maior; CPU dedicada mantém a latência de sincronização estável sob carga.
Melhores localizações: Escolha uma localização ChainVPS com foco em privacidade para o seu cofre: Suíça (CH) e Islândia (IS) têm forte tradição de proteção de dados e privacidade, a Holanda (NL) oferece excelente conectividade sob a lei de privacidade da UE, e Romênia (RO) ou Moldávia (MD) ficam fora dos blocos mais rígidos de compartilhamento de vigilância. Escolha a mais próxima geograficamente de onde você e seus usuários sincronizam para minimizar a latência, já que o cofre é criptografado no lado do cliente de qualquer forma.
Bloqueie tudo
Checklist de hardening
- Mantenha SIGNUPS_ALLOWED=false depois de criar sua conta e use INVITATIONS para adicionar usuários; um endpoint de cadastro aberto em um cofre público é um convite ao abuso.
- Sempre defina ADMIN_TOKEN como um hash Argon2 gerado com 'vaultwarden hash' (nunca uma string em texto puro), ou desative completamente o painel /admin deixando ADMIN_TOKEN sem definir depois de configurado. Considere restringir /admin ao seu IP via firewall.
- Exija apenas HTTPS e deixe o Caddy gerenciar os certificados Let's Encrypt; os clientes Bitwarden se recusam a executar criptografia sobre HTTP puro, e um certificado válido evita downgrade/MITM na sincronização.
- Faça backup do diretório ./vw-data (especialmente rsa_key.pem, config.json, db.sqlite3 e anexos) periodicamente para um local fora da máquina, como um plano Storage da ChainVPS; perder o rsa_key.pem invalida todas as sessões/tokens existentes.
- Rode o fail2ban sobre o log do Vaultwarden (LOG_FILE + LOG_LEVEL) para banir tentativas de login por força bruta, e exija que todos os usuários ativem 2FA; exponha apenas as portas 80/443 via ufw/nftables e bloqueie todo o resto.
Perguntas
Hospedagem Vaultwarden — FAQ
O Vaultwarden é a mesma coisa que o Bitwarden?
É uma implementação de servidor separada e leve da API do Bitwarden. Não é feito pela Bitwarden Inc., mas os aplicativos e extensões oficiais do Bitwarden funcionam normalmente com ele, e ele suporta cofres, organizações, anexos, Sends e passkeys. É ideal para indivíduos e pequenas equipes que querem auto-hospedagem sem o consumo de recursos da stack de servidor oficial.
Meus dados estão seguros se o servidor for apreendido ou o host for comprometido?
Os cofres são criptografados e descriptografados no lado do cliente com uma chave derivada da sua senha mestra, então o servidor sempre armazena apenas texto cifrado. Hospedar em uma máquina no-KYC em uma jurisdição favorável à privacidade reduz quem pode forçar o acesso, mas você ainda precisa usar uma senha mestra forte, ativar 2FA e manter o DOMAIN em HTTPS para proteger o próprio fluxo de login.
Eu preciso de HTTPS, ou posso usar um IP simples?
Você precisa de HTTPS com um certificado válido e um nome de domínio. Os clientes Bitwarden usam a API WebCrypto do navegador, que só funciona em uma origem segura, então uma configuração com http:// simples ou IP puro falhará ao sincronizar. O serviço Caddy incluído emite e renova automaticamente um certificado Let's Encrypt gratuito.
SQLite ou MySQL/Postgres?
O SQLite (padrão) é perfeitamente adequado e o mais rápido para uso pessoal e pequenas equipes de até algumas dezenas de usuários. Mude para MySQL ou PostgreSQL apenas em implantações grandes com múltiplas organizações ou quando quiser backups e replicação centralizados do banco; configure DATABASE_URL conforme necessário.
Como adiciono usuários sem abrir cadastros públicos?
Mantenha SIGNUPS_ALLOWED=false e INVITATIONS_ALLOWED=true, e depois convide usuários a partir de uma Organization (ou pelo painel /admin). Os usuários convidados recebem um convite e podem se cadastrar mesmo com o cadastro público fechado, o que evita abuso do endpoint.
Posso pagar o VPS sem fornecer identificação?
Sim. A ChainVPS é no-KYC e aceita criptomoedas, então o servidor que guarda seus cofres criptografados não está vinculado à sua identidade legal nem a um processador de cartão que poderia congelar a conta.
Mais para hospedar você mesmo
Outros stacks de um clique
Implante Vaultwarden
nos próximos 60 segundos.
Banda ilimitada · DDoS incluído · 21 criptomoedas · sem KYC.