Backups & Export
2 mécanismes complémentaires : backups automatisés stockés sur Nextcloud (long-terme), et exports téléchargeables à la demande (migration / récupération rapide).
Backups Nextcloud
Backup complet d'un site : compose + volumes Docker + dumps SQL des DBs attachées, uploadé sur Nextcloud WebDAV.
Créer un backup manuel
- Détail site → section Backups → Backup now
- Ou via API :
POST /api/v1/sites/<id>/backups
Ce qui est backupé
docker-compose.ymldu siteMANIFEST.jsonavec métadonnées (site_id, slug, runtime, timestamp)- Contenu du dossier
/opt/iridflow/<projet>/<site>/(sansnode_modules,.next,vendor,.git) - Volumes Docker du site (tarés depuis un container helper alpine, pas de sudo)
- Dumps SQL des DBs attachées (mariadb-dump, pg_dump)
Stockage
Nextcloud WebDAV, chemin :
Iridflow-Backups/<site-slug>/<timestamp>.tar.gzRétention : 30 jours par défaut (config IRIDFLOW_BACKUPS_RETENTION_DAYS).
Backups auto
Il n'y a pas encore de cron backup daily automatique en V1 (backlog). Solution actuelle :
// cron sur ta machine ou dans un site iridflow custom# Backup daily 2h du matin via curl 0 2 * * * curl -X POST https://mcp.iridflow.com/api/v1/sites/SITE_ID/backups \ -H "x-api-key: iridflow_live_..." \ -H "Content-Type: application/json" \ -d '{"kind":"scheduled"}'
List / Delete
list_backups({ site_id: "site_xxx" }) // par site
list_backups({}) // tous (admin only)
delete_backup({ backup_id: "bak_xxx" })Attention
delete_backup supprime l'entrée DB mais laisse le fichier sur Nextcloud (V1). Purge manuelle nécessaire côté Nextcloud pour libérer l'espace.Restore
Pas encore de tool restore_backup automatique. Procédure manuelle :
- Télécharge le tarball depuis Nextcloud
tar xzf backup.tar.gzlocalement- Créer un nouveau site avec le compose extrait, importer les volumes via docker helper, restore SQL via
psql/mysql
Export téléchargeable (V1)
Alternative au backup Nextcloud : génère un tarball local avec URL signée valide 24h. Idéal pour migration rapide, dev local, audit code.
Générer un export
- Détail site → section Export téléchargeable → Générer un export
- Ou via API :
POST /api/v1/sites/<id>/export
Retour :
{
"token": "a8e9006e9bd406a7b7eefca27274f2e8f73f98ceb78741ae",
"download_url": "https://mcp.iridflow.com/api/v1/exports/<token>/download",
"size_bytes": 9269,
"size_mb": "0.01",
"has_sql_dump": false,
"sql_dbs": [],
"expires_at": "2026-08-30T22:10:45.591Z",
"ttl_hours": 24
}Contenu du tarball
MANIFEST.json: métadonnées sitecode.tar.gz: sources du site (sansnode_modules/.next/vendor/.git/__pycache__)sql/<db-slug>.sql: dumps SQL des DBs attachées (best-effort)
URL de download
- Route publique authentifiée par le token dans l'URL (32 hex bytes = auth crypto)
- TTL 24h, purge auto via systemd timer
iridflow-exports-cleanup.timer - Peut être téléchargée depuis n'importe quel navigateur / curl / wget
Attention
Le token dans l'URL vaut authentification. Ne partage pas ce lien avec des tiers, il donne accès à tout le code + dumps SQL du site.
Backups vs Export : lequel utiliser
| Cas | Utilise |
|---|---|
| Sauvegarde régulière long-terme | Backups Nextcloud |
| Récupérer une copie locale rapide | Export téléchargeable |
| Migration vers autre hébergeur | Export |
| Debug production, code diff | Export |
| Reprise après incident | Backup Nextcloud (rétention 30j) |