# Playbook — Restaurer un projet depuis un backup

Ce playbook décrit la procédure standard pour **restaurer un projet Docker sur le NUC** à partir d’une sauvegarde.

Il couvre principalement :

- restauration de base de données
- restauration de volumes persistants
- redémarrage de la stack Docker

Ce playbook est utilisé après :

- une migration
- une perte de données
- la recréation d’un environnement

---

# Architecture de référence

Sur le NUC, les données vivent dans :

```
/srv/
  projects/        # code source
  docker-data/     # volumes persistants
  backups/         # sauvegardes
```

Les backups sont stockés dans :

```
/srv/backups/
```

Exemple :

```
/srv/backups/portfolio/
```

---

# Étape 1 — Vérifier que le projet existe

Le projet doit être présent dans :

```
/srv/projects/<nom-projet>
```

Sinon :

```
cd /srv/projects
git clone <repo>
```

---

# Étape 1b — Initialiser la mémoire projet

Depuis la racine du projet :

```
cd /srv/projects/<nom-projet>
gen-claude
```

Cette commande :

- génère `CLAUDE.md` depuis le template projet
- crée `AGENTS.md -> CLAUDE.md`
- initialise la mémoire active du projet pour Claude / Codex

---

---

# Étape 2 — Arrêter la stack

Avant toute restauration, arrêter les conteneurs :

```
cd /srv/projects/<nom-projet>
docker compose down
```

Cela évite les corruptions de données.

---

# Étape 3 — Restaurer les volumes persistants

Si le backup contient des volumes :

Exemple :

```
/srv/backups/portfolio/uploads
/srv/backups/portfolio/postgres
```

Restaurer dans :

```
/srv/docker-data/<nom-projet>/
```

Exemple :

```
cp -r /srv/backups/portfolio/uploads /srv/docker-data/portfolio/
```

Important :

- vérifier les permissions
- vérifier que les dossiers existent

---

# Étape 4 — Restaurer la base de données

Si un dump SQL est disponible :

Exemple :

```
/srv/backups/portfolio/db.sql
```

Importer :

```
psql -U <user> -d <database> -f db.sql
```

Exemple concret :

```
psql -U portfolio_user -d portfolio -f /srv/backups/portfolio/db.sql
```

---

# Étape 5 — Vérifier la configuration Docker

Contrôler :

- chemins des volumes
- variables d’environnement
- ports

Fichier principal :

```
docker-compose.yml
```

---

# Étape 6 — Redémarrer le projet

Depuis le dossier projet :

```
docker compose up -d
```

Vérifier :

```
docker ps
```

---

# Étape 7 — Vérifications post-restauration

Contrôler :

- que l’application démarre
- que la base contient bien les données
- que les volumes sont montés

Commandes utiles :

```
docker compose logs -f
```

ou

```
docker logs <container>
```

---

# Bonnes pratiques

- toujours arrêter la stack avant restauration
- restaurer les volumes **avant** de relancer Docker
- vérifier les permissions des dossiers

---

# Quand utiliser ce playbook

Utiliser ce playbook lorsque :

- un projet doit être restauré après incident
- un environnement doit être reconstruit
- une sauvegarde doit être testée

Ce playbook complète :

- `bootstrap_projet_docker.md`
- `migration_projet_vers_nuc.md`

---

# Outils associés

- `scripts/generate_project_claude.sh` — permet de réinitialiser la mémoire projet si nécessaire après restauration
