Por que escolher o Vaultwarden para sua VPS?
A gestão segura de senhas é um pilar fundamental da infraestrutura de TI moderna. Embora soluções em nuvem sejam populares, a necessidade de controle total sobre os dados sensíveis, conformidade com regulamentações de soberania de dados e a redução de custos operacionais têm impulsionado a migração para soluções self-hosted (hospedagem própria). Neste cenário, o Vaultwarden destaca-se como a alternativa de código aberto mais robusta e eficiente ao Bitwarden original.
O Vaultwarden é uma implementação em Rust da API do servidor Bitwarden. Isso significa que ele é totalmente compatível com todos os clientes oficiais do Bitwarden (desktop, mobile, navegador) sem necessidade de modificações. A grande vantagem técnica reside no consumo de recursos: enquanto o servidor original exige .NET e consome significativamente mais memória RAM e CPU, o Vaultwarden opera com uma pegada mínima, tornando-o ideal para VPS de entrada (1GB RAM ou menos) em provedores como DigitalOcean, Linode, Vultr ou AWS EC2 t2/t3 micro instances.
Diferente de outras ferramentas de autenticação e segredos listadas nas pesquisas recentes, como Authelia 2fa servidor, Keycloak self-hosted tutorial ou Authentik vps instalação, o Vaultwarden foca especificamente no cofre de senhas (Password Manager). Ferramentas como Psono VPS ou Teampass servidor senhas oferecem funcionalidades empresariais complexas, mas muitas vezes exigem stacks maiores (PHP/MySQL) e curvas de aprendizado mais íngremes. O Vaultwarden entrega a experiência Bitwarden nativa com a leveza necessária para ambientes restritos.
Pré-requisitos e Preparação do Ambiente
Antes de iniciar a instalação, certifique-se de que sua VPS atenda aos seguintes requisitos mínimos:
- Sistema Operacional: Ubuntu 20.04 LTS ou superior (recomendado), Debian 11/12.
- Usuário com privilégios sudo.
- Docker e Docker Compose instalados.
- Um domínio configurado apontando para o IP da sua VPS (ex:
seguranca.seudominio.com). - Firewall configurado (UFW ou iptables) liberando apenas as portas 80 (HTTP) e 443 (HTTPS).
Se você ainda não possui Docker instalado, execute os seguintes comandos para preparar o ambiente:
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
Passo 1: Estruturação de Diretórios e Permissões
A boa prática em administração de sistemas dictates que devemos isolar os dados da aplicação. Criaremos um diretório dedicado para o Vaultwarden, garantindo que os dados persistam mesmo se o container for recriado.
sudo mkdir -p /opt/vaultwarden/data
sudo useradd -r -s /usr/sbin/nologin vaultwarden
sudo chown -R vaultwarden:vaultwarden /opt/vaultwarden
Neste exemplo, criamos um usuário de sistema vaultwarden sem acesso ao shell para fins de segurança (princípio do menor privilégio) e definimos a propriedade dos dados.
Passo 2: Configuração do Docker Compose
Crie um arquivo chamado docker-compose.yml dentro de /opt/vaultwarden/. Este arquivo orquestrará o container e as variáveis de ambiente necessárias para a segurança.
cd /opt/vaultwarden
nano docker-compose.yml
Insira o seguinte conteúdo. Note a importância das variáveis de ambiente SIGNUPS_ALLOWED e ADMIN_TOKEN:
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- "8080:80"
environment:
SIGNUPS_ALLOWED: "false"
ADMIN_TOKEN: "seu_token_super_secreto_aqui"
DATABASE_URL: "/data/db.sqlite3"
WEB_VAULT_ENABLED: "true"
volumes:
- ./data:/data
networks:
- webnet
networks:
webnet:
driver: bridge
Atenção Crítica:
ADMIN_TOKEN: Este token é a chave mestra para acessar o painel de administração. Perda deste token significa perda total do acesso administrativo ao cofre. Armazene-o em um local seguro offline.SIGNUPS_ALLOWED: "false": Em produção, desative inscrições públicas. Você deve convidar usuários via email ou gerenciar manualmente para evitar que desconhecidos ocupem sua infraestrutura.
Passo 3: Inicialização do Serviço
Agora, inicie o serviço utilizando o Docker Compose:
docker compose up -d
Verifique se o container está rodando corretamente:
docker ps | grep vaultwarden
O output deve indicar que o status é "Up". Você pode testar a conectividade básica acessando http://ip-da-sua-vps:8080. Você verá uma página simples indicando que o servidor está respondendo, mas ainda não está protegido por HTTPS.
Passo 4: Configuração de Reverse Proxy e HTTPS (Certbot)
Nunca expose o Vaultwarden diretamente na porta 8080 para a internet. Utilize um Reverse Proxy (Nginx ou Traefik) para gerenciar o tráfego e implementar certificados TLS (Let's Encrypt). Para este tutorial, utilizaremos o Nginx com Certbot.
Instale o Nginx e o Certbot:
sudo apt install nginx certbot python3-certbot-nginx -y
Gere um certificado SSL para seu domínio (substitua seguranca.seudominio.com):
sudo certbot --nginx -d seguranca.seudominio.com
O Certbot irá modificar automaticamente a configuração do Nginx. No entanto, precisamos garantir que o proxy aponte para a porta local onde o Vaultwarden está escutando (8080).
Edite o arquivo de configuração gerado pelo Certbot, geralmente localizado em /etc/nginx/sites-available/seguranca.seudominio.com:
sudo nano /etc/nginx/sites-available/seguranca.seudominio.com
Adicione ou verifique a seguinte configuração no bloco server, dentro da seção location /. É crucial adicionar os cabeçalhos de WebSocket e segurança:
location / {
proxy_pass http://127.0.0.1:8080;
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;
# WebSocket support para sincronização em tempo real
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Reinicie o Nginx para aplicar as mudanças:
sudo systemctl restart nginx
Agora, acesse https://seguranca.seudominio.com. A conexão deve ser segura e funcional.
Passo 5: Configuração de Segurança Avançada (Firewall e Fail2Ban)
Para blindar seu servidor contra ataques de força bruta, é essencial configurar o Fail2Ban. Embora o Vaultwarden tenha limitação nativa de tentativas de login, o Fail2Ban age no nível do sistema operacional.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Crie um arquivo de jail específico para o Vaultwarden em /etc/fail2ban/jail.local:
sudo nano /etc/fail2ban/jail.local
Adicione:
[vaultwarden]
enabled = true
port = http,https
filter = vaultwarden
maxretry = 5
bantime = 3600
findtime = 600
Crie o filtro correspondente em /etc/fail2ban/filter.d/vaultwarden.conf. Este filtro analisará os logs do Nginx ou do próprio Vaultwarden para detectar padrões de falha:
sudo nano /etc/fail2ban/filter.d/vaultwarden.conf
[Definition]
failregex = ^ -.*"POST /api/(identity|core)/accounts/verify/email$.* 401
^ -.*"POST /api/accounts/register$.* 400
ignoreregex =
Reinicie o Fail2Ban:
sudo systemctl restart fail2ban
Passo 6: Backup Automatizado
A perda de dados em um gerenciador de senhas é catastrófica. O Vaultwarden utiliza SQLite, que é leve mas requer cuidado com integridade durante backups. Nunca copie o arquivo db.sqlite3 enquanto o serviço está gravando ativamente sem antes fazê-lo.
A melhor prática é usar o comando VACUUM ou parar o serviço brevemente. Criaremos um script de backup simples:
sudo nano /opt/vaultwarden/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/vaultwarden/backups"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
# Pausa temporária do serviço para consistência (opcional, mas recomendado)
docker stop vaultwarden
cp /opt/vaultwarden/data/db.sqlite3 $BACKUP_DIR/db-${DATE}.sqlite3
docker start vaultwarden
# Compactar
tar -czf $BACKUP_DIR/backup-${DATE}.tar.gz -C $BACKUP_DIR db-${DATE}.sqlite3
# Remover backups antigos (manter últimos 7 dias)
find $BACKUP_DIR -name "backup-*.tar.gz" -mtime +7 -delete
Torne o script executável e agende via Crontab:
chmod +x /opt/vaultwarden/backup.sh
sudo crontab -e
Adicione a linha para rodar diariamente às 3 da manhã:
0 3 * * * /opt/vaultwarden/backup.sh >> /var/log/vaultwarden-backup.log 2>&1
Passo 7: Instalação do Cliente e Primeiro Acesso
Com o servidor ativo, baixe o aplicativo Bitwarden (ou BitwardenRS) em seu dispositivo. No campo de URL do servidor personalizado (se necessário, embora a versão atual já detecte automaticamente), insira https://seguranca.seudominio.com.
Primeiro Login:
- Crie uma conta administrativa usando o email configurado.
- Gere um Token de Administração: Vá em Configurações > Administração. Copie e armazene o token gerado. Ele não será exibido novamente.
- Habilitar 2FA: Imediatamente vá em Configurações > Segurança e ative a Autenticação de Dois Fatores (TOTP). Isso é obrigatório para qualquer conta com privilégios administrativos.
Mantendo o Sistema Atualizado
A segurança depende da atualização constante. Configure um script ou use o Watchtower para atualizar automaticamente as imagens do Docker, ou mantenha um cronjob manual:
cd /opt/vaultwarden
docker compose pull
docker compose up -d
Verifique sempre os changelogs no repositório oficial do Vaultwarden para identificar breaking changes ou vulnerabilidades de segurança corrigidas.
Conclusão e Boas Práticas Finais
Instalar o Vaultwarden Bitwarden VPS é uma decisão estratégica que equilibra custo, performance e privacidade. Ao contrário de soluções monolíticas como Keycloak self-hosted tutorial ou suites completas como LemonLDAP auth, o Vaultwarden entrega valor imediato com complexidade operacional mínima.
Resumo das melhores práticas aplicadas:
- Isolamento via Docker e usuários sem shell.
- HTTPS obrigatório via Reverse Proxy.
- Inscrições desativadas para controle de acesso.
- Tokens administrativos fortes e armazenados offline.
- Backup automatizado do banco SQLite.
Lembre-se: você é o administrador da segurança. Nenhum software pode compensar a negligência na gestão das chaves mestras e tokens de acesso. Mantenha seu sistema operacional atualizado, monitore os logs em busca de tentativas de invasão e treine sua equipe sobre o uso correto do gerenciador de senhas.
Com esta configuração, você possui uma infraestrutura de segredos robusta, pronta para escalar conforme a necessidade da sua organização, sem depender de terceiros para guardar suas chaves mestras.