Vaultwarden self-hosted na VPS
Vaultwarden é uma implementação leve e open-source do servidor Bitwarden — compatível com todos os clientes oficiais (extensão de browser, app mobile, desktop). Self-hosteado na VPS, suas senhas ficam exclusivamente na sua infraestrutura, com criptografia end-to-end que nem você consegue quebrar sem a master password.
Instalar Vaultwarden com Docker Compose
Configuração mínima segura para produção:
# docker-compose.yml
services:
vaultwarden:
image: vaultwarden/server:latest
restart: always
ports:
- "127.0.0.1:8080:80"
environment:
DOMAIN: "https://vault.seudominio.com.br"
SIGNUPS_ALLOWED: "false" # desabilitar cadastros públicos
INVITATIONS_ALLOWED: "true" # permitir convites por email
ADMIN_TOKEN: "${ADMIN_TOKEN}" # token para /admin (gerar com: openssl rand -hex 32)
WEBSOCKET_ENABLED: "true" # notificações em tempo real
LOG_LEVEL: "warn"
# Configuração de email (necessário para verificação):
SMTP_HOST: "smtp.gmail.com"
SMTP_PORT: "587"
SMTP_FROM: "vault@seudominio.com.br"
SMTP_USERNAME: "${SMTP_USER}"
SMTP_PASSWORD: "${SMTP_PASS}"
volumes:
- vaultwarden_data:/data
volumes:
vaultwarden_data:Configurar Nginx com HTTPS
Vaultwarden requer HTTPS — os clientes Bitwarden recusam conexão sem SSL:
# /etc/nginx/conf.d/vaultwarden.conf
server {
listen 80;
server_name vault.seudominio.com.br;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name vault.seudominio.com.br;
ssl_certificate /etc/letsencrypt/live/vault.seudominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.seudominio.com.br/privkey.pem;
client_max_body_size 128M;
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 para notificações em tempo real
location /notifications/hub {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}Criar usuários e configurar o admin
Gerenciar usuários e acessar o painel administrativo:
# Acessar painel admin:
# https://vault.seudominio.com.br/admin
# Login com o ADMIN_TOKEN configurado no .env
# No painel admin você pode:
# - Criar convites para novos usuários
# - Ver todos os usuários cadastrados
# - Desabilitar/habilitar contas
# - Ver logs de acesso
# Criar usuário via API (quando SIGNUPS_ALLOWED=false):
# 1. Acessar /admin → Invite User → inserir email
# 2. Usuário receberá email para criar conta
# Configurar 2FA obrigatório para todos os usuários:
# REQUIRE_DEVICE_EMAIL=true (exige verificação por email em novos dispositivos)
# Restringir por IP (acesso apenas da rede interna):
# No nginx: allow 177.10.0.1; deny all;
# Gerar token admin seguro:
openssl rand -hex 32Backup automático do vault
Backup crítico — perder o banco do Vaultwarden significa perder todas as senhas:
#!/bin/bash
# /opt/scripts/backup-vaultwarden.sh
set -euo pipefail
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR="/var/backups/vaultwarden"
mkdir -p "$BACKUP_DIR"
# O Vaultwarden usa SQLite por padrão
# Backup do banco com SQLite CLI (para evitar corrupção):
docker compose exec -T vaultwarden sqlite3 /data/db.sqlite3 \
".backup '/data/backup_${DATE}.sqlite3'"
# Copiar o backup para fora do container
docker compose cp vaultwarden:/data/backup_${DATE}.sqlite3 \
"$BACKUP_DIR/vault_db_${DATE}.sqlite3"
# Comprimir
gzip "$BACKUP_DIR/vault_db_${DATE}.sqlite3"
# Backup completo do volume (inclui attachments, config)
docker run --rm \
-v vaultwarden_data:/data \
-v "$BACKUP_DIR":/backup \
alpine tar czf "/backup/vault_volume_${DATE}.tar.gz" /data
# Upload para S3/MinIO
aws s3 cp "$BACKUP_DIR/" s3://meu-bucket/vaultwarden/ --recursive \
--include "*${DATE}*"
# Limpar backups locais com mais de 30 dias
find "$BACKUP_DIR" -mtime +30 -delete
echo "Backup Vaultwarden concluído: $DATE"Conectar clientes Bitwarden ao servidor self-hosted
Configurar os clientes oficiais para usar o servidor Vaultwarden:
# Extensão de browser (Chrome, Firefox, Edge):
# 1. Clicar em "Criar conta" ou "Log in"
# 2. Clicar no ícone de engrenagem (Self-hosted Environment)
# 3. Server URL: https://vault.seudominio.com.br
# 4. Criar conta ou fazer login
# App mobile (iOS/Android):
# Bitwarden → Settings → Self-hosted Environment
# Server URL: https://vault.seudominio.com.br
# App desktop (Windows/macOS/Linux):
# Settings → Self-hosted Environment
# Server URL: https://vault.seudominio.com.br
# CLI do Bitwarden:
npm install -g @bitwarden/cli
bw config server https://vault.seudominio.com.br
bw login usuario@email.com
bw sync
# Exportar vault inteiro como backup adicional:
bw export --format json --output vault_backup.json$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.