Skip to content

Backup y restauración

Angel Manso edited this page May 14, 2026 · 1 revision

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.

Qué hay dentro

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

Backup en caliente (servicio corriendo)

SQLite con WAL aguanta lecturas concurrentes sin problema. Para un backup consistente sin parar el servicio:

Linux

#!/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

Windows

# 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 SYSTEM

Backup en frío (parar servicio)

Si prefieres simplicidad y puedes permitirte 1 minuto de downtime nocturno:

Linux

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 enterprisechat

Windows

Stop-Service EnterpriseChat
Compress-Archive -Path 'C:\Program Files\EnterpriseChat' -DestinationPath "D:\Backups\enterprisechat-$(Get-Date -Format yyyyMMdd-HHmmss).zip" -Force
Start-Service EnterpriseChat

Backup integrado con Plesk

Si 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).

Restaurar

Linux

sudo systemctl stop enterprisechat
sudo tar -xzf /backup/enterprisechat-XXXXXXXX.tar.gz -C /opt
sudo chown -R enterprisechat:enterprisechat /opt/enterprisechat
sudo systemctl start enterprisechat

Windows

Stop-Service EnterpriseChat
Expand-Archive -Path 'D:\Backups\enterprisechat-XXX.zip' -DestinationPath 'C:\Program Files\' -Force
Start-Service EnterpriseChat

Comprobar que el backup sirve

Aplica 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.

Recordatorio

  • 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.

Clone this wiki locally