**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 ### 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@:~/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.