3.5 KiB
Docker Compose
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vw.domain.tld"
volumes:
- ./vw-data/:/data/
ports:
- 127.0.0.1:8000:80
Docker CLI
docker pull vaultwarden/server:latest
docker run --detach --name vaultwarden \
--env DOMAIN="https://vw.domain.tld" \
--volume /vw-data/:/data/ \
--restart unless-stopped \
--publish 127.0.0.1:8000:80 \
vaultwarden/server:latest
🔹 backup cd /opt/vaultwarden tar -czvf vaultwarden-backup-$(date +%F).tar.gz vw-data
Or if you are using docker: docker exec -it vaultwarden /vaultwarden backup
🔹 Restore sudo docker-compose down rm -rf vw-data tar -xzvf vaultwarden-backup-2025-09-15.tar.gz sudo docker-compose up -d
🔹 Backup automático con cron crontab -e 0 3 * * * tar -czf /opt/vaultwarden/backups/vaultwarden-$(date +%F).tar.gz -C /opt/vaultwarden vw-data
🔹 backup.sh #!/bin/bash
Backup de Vaultwarden
Carpeta de datos
DATA_DIR="/opt/vaultwarden/vw-data"
Carpeta de backups
BACKUP_DIR="/opt/vaultwarden/backups"
Crear carpeta de backups si no existe
mkdir -p "$BACKUP_DIR"
Nombre del archivo con fecha
BACKUP_FILE="$BACKUP_DIR/vaultwarden-$(date +%F-%H%M).tar.gz" echo "📦 Creando backup en $BACKUP_FILE ..." tar -czvf "$BACKUP_FILE" -C /opt/vaultwarden vw-data echo "✅ Backup completado."
🔹 restore.sh #!/bin/bash
Restaurar backup de Vaultwarden
DATA_DIR="/opt/vaultwarden/vw-data" BACKUP_DIR="/opt/vaultwarden/backups" if [ -z "$1" ]; then echo "Uso: $0 archivo_backup.tar.gz" exit 1 fi BACKUP_FILE="$1" if [ ! -f "$BACKUP_FILE" ]; then echo "❌ El archivo $BACKUP_FILE no existe." exit 1 fi echo "🛑 Deteniendo contenedor..." cd /opt/vaultwarden sudo docker-compose down echo "🗑️ Eliminando datos actuales..." rm -rf "$DATA_DIR" echo "📂 Restaurando desde $BACKUP_FILE ..." tar -xzvf "$BACKUP_FILE" -C /opt/vaultwarden echo "🚀 Iniciando contenedor..." sudo docker-compose up -d echo "✅ Restauración completada."
ejecutar backup sh chmod +x /opt/vaultwarden/backup.sh /opt/vaultwarden/restore.sh
/opt/vaultwarden/backup.sh
/opt/vaultwarden/restore.sh /opt/vaultwarden/backups/vaultwarden-2025-09-15-1530.tar.gz
Añadir menu administrador:
openssl rand -base64 48 - generar token mac/linux o (git bash windows)
[Convert]::ToBase64String((1..48 | ForEach-Object {Get-Random -Maximum 256})) - generar token windows
environment:
- ADMIN_TOKEN=pon_aqui_un_token_seguro
http://IP-DE-TU-SERVIDOR:8080/admin
Docker-Based Automated Backups (Example)
If you're using Vaultwarden via Docker and want to automate your backups to a remote machine, the following method might help. It stops the container to ensure consistency, zips the data directory, transfers it via scp, and then restarts Vaultwarden.
Backup Script Example:
#!/bin/bash
docker-compose down
datestamp=$(date +%m-%d-%Y)
backup_dir="/home//vw-backups"
zip -9 -r "${backup_dir}/${datestamp}.zip" /opt/vw-data*
scp -i /.ssh/id_rsa "${backup_dir}/${datestamp}.zip" user@<REMOTE_IP>:/vw-backups/
docker-compose up -d
You can automate this via cron: 0 0 * * * /root/transfer_vaultwarden_logs.sh
Cleanup Script (optional) to keep only the most recent backup: #!/bin/bash cd ~/backups || exit find . -type f -name '*.zip' ! -mtime -1 -exec rm {} + Always test restores. To restore, unzip the archive back into /opt/vw-data, replacing the previous data directory.