Files
2026-08-04 19:24:21 +02:00

129 lines
3.5 KiB
Markdown

**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/<user>/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.