-
Notifications
You must be signed in to change notification settings - Fork 1
Backup y restauración
EnterpriseChat guarda todo en una sola carpeta:
-
Linux:
/opt/enterprisechat/data/ -
Windows:
C:\Program Files\EnterpriseChat\data\
Hacer backup = copiar esa carpeta + appsettings.Production.json.
| Archivo / carpeta | Contenido | ¿Backup imprescindible? |
|---|---|---|
data/chat.db |
Base SQLite (usuarios, mensajes, salas, auditoría) | Sí |
data/chat.db-shm, data/chat.db-wal
|
Write-Ahead Log de SQLite | Sí (si el servicio está corriendo durante el backup) |
data/attachments/ |
Archivos subidos por los usuarios | Sí si quieres conservar adjuntos |
data/avatars/ |
Imágenes de perfil | Opcional |
appsettings.Production.json |
Clave JWT + secretos | Sí (sin esta clave los tokens existentes dejan de valer al restaurar) |
logs/ |
Historial de logs | Opcional |
SQLite con WAL aguanta lecturas concurrentes sin problema. Para un backup consistente sin parar el servicio:
#!/usr/bin/env bash
# /usr/local/bin/enterprisechat-backup.sh
set -euo pipefail
DEST="/backup/enterprisechat-$(date -u +%Y%m%dT%H%M%SZ).tar.gz"
SRC=/opt/enterprisechat
# 1) snapshot consistente del SQLite via .backup
sqlite3 "$SRC/data/chat.db" ".backup '$SRC/data/chat.db.bak'"
# 2) empaquetar
tar -czf "$DEST" \
-C "$SRC" data/chat.db.bak data/attachments data/avatars appsettings.Production.json
rm -f "$SRC/data/chat.db.bak"
echo "Backup: $DEST"Programa con cron (diario a las 03:00):
0 3 * * * root /usr/local/bin/enterprisechat-backup.sh >> /var/log/enterprisechat-backup.log 2>&1# C:\Scripts\enterprisechat-backup.ps1
$Date = Get-Date -Format 'yyyyMMdd-HHmmss'
$Dest = "D:\Backups\enterprisechat-$Date.zip"
$Src = 'C:\Program Files\EnterpriseChat'
# Snapshot SQLite
& "$Src\sqlite3.exe" "$Src\data\chat.db" ".backup '$Src\data\chat.db.bak'"
Compress-Archive `
-Path "$Src\data\chat.db.bak", "$Src\data\attachments", "$Src\data\avatars", "$Src\appsettings.Production.json" `
-DestinationPath $Dest -Force
Remove-Item "$Src\data\chat.db.bak"
Write-Host "Backup: $Dest"Programa con Task Scheduler:
schtasks /create /tn "EnterpriseChat Backup" /tr "powershell.exe -File C:\Scripts\enterprisechat-backup.ps1" /sc daily /st 03:00 /ru SYSTEMSi prefieres simplicidad y puedes permitirte 1 minuto de downtime nocturno:
sudo systemctl stop enterprisechat
sudo tar -czf "/backup/enterprisechat-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" \
-C /opt enterprisechat
sudo systemctl start enterprisechatStop-Service EnterpriseChat
Compress-Archive -Path 'C:\Program Files\EnterpriseChat' -DestinationPath "D:\Backups\enterprisechat-$(Get-Date -Format yyyyMMdd-HHmmss).zip" -Force
Start-Service EnterpriseChatSi instalaste por la extensión Plesk, los volcados de Backup Manager
del panel NO incluyen /opt/enterprisechat/data/ por defecto (Plesk
solo respalda dominios y emails). Usa el script de arriba en cron por
separado, o la futura integración nativa con el sistema de backups
de Plesk (en Roadmap).
sudo systemctl stop enterprisechat
sudo tar -xzf /backup/enterprisechat-XXXXXXXX.tar.gz -C /opt
sudo chown -R enterprisechat:enterprisechat /opt/enterprisechat
sudo systemctl start enterprisechatStop-Service EnterpriseChat
Expand-Archive -Path 'D:\Backups\enterprisechat-XXX.zip' -DestinationPath 'C:\Program Files\' -Force
Start-Service EnterpriseChatAplica el restore a un servidor de pruebas. Login con un usuario existente. Si entra y ve el historial → OK. Hazlo al menos una vez al mes; un backup sin comprobación no es un backup, es una esperanza.
- Saca los backups fuera de la máquina del chat (otro disco, S3, Backblaze, NAS de oficina, etc.). Un backup en el mismo disco que el servidor no te salva de un crash de disco.
- Cifra el backup si contiene
appsettings.Production.json(la clave JWT está ahí en claro). - Conserva al menos 30 días de retención.
EnterpriseChat · Open source AGPLv3 / comercial · enterprisechat.es · soporte@enterprisechat.es