# Déploiement

## A. Installation en local (Laragon) — pour tester

> Le dépôt contient une application Laravel 11 complète. Laravel 11 utilise une **config minimale** : les valeurs par défaut viennent du framework et se règlent via le `.env` (pas besoin de tous les fichiers `config/`).

Dans le terminal Laragon, à la racine du projet (`C:\laragon\www\fflv2`) :

```bash
composer install
cp .env.example .env
php artisan key:generate
# Crée une base MySQL "yggdrasil_bo" dans Laragon (HeidiSQL), puis renseigne DB_* dans .env
php artisan migrate --seed
php artisan serve   # ou ouvre http://fflv2.test via Laragon
```

- Connexion : `/login` — identifiants Super Admin affichés par le seeder (à changer aussitôt).
- Renseigner `ANTHROPIC_API_KEY` dans `.env` pour activer l'IA (sinon le chatbot répond depuis la base + capture email).
- Lancer les tests : `php artisan test`.

## B. Mise en production (OVH mutualisé) — déploiement auto par GitHub Actions

Hébergement mutualisé OVH (sans SSH). Le déploiement est **automatique à chaque push sur `main`** via `.github/workflows/deploy.yml` : l'Action installe les dépendances PHP dans le runner puis téléverse tout le projet (vendor inclus) par **FTPS**.

- Domaine : `fort-fort-lointain.festyggdrasil.fr` · doc-root OVH : **`./fflv2/public`** (l'app vit dans `~/fflv2/`).

### 1. Secrets GitHub (Settings → Secrets and variables → Actions)
| Secret | Valeur |
|---|---|
| `FTP_HOST` | hôte FTP OVH (ex. `ftp.cluster0XX.hosting.ovh.net`) |
| `FTP_USER` | identifiant FTP |
| `FTP_PASSWORD` | mot de passe FTP |

> Le workflow téléverse vers `./fflv2/` (cf. `server-dir`). Si l'utilisateur FTP n'arrive pas dans le dossier parent de `fflv2/`, ajuster `server-dir` dans `deploy.yml`.

### 2. Fichier `.env` de production (à créer **une seule fois** par FTP dans `fflv2/`)
Le `.env` n'est jamais téléversé par l'Action (exclu). Renseigner :
```
APP_ENV=production
APP_DEBUG=false
APP_URL=https://fort-fort-lointain.festyggdrasil.fr
APP_KEY=base64:...                 # copier celui du .env local ou générer
SESSION_DRIVER=file                # mutualisé : pas de dépendance BDD
CACHE_STORE=file
DB_* / MAIL_* / ANTHROPIC_API_KEY  # secrets BDD, mail, IA
CHAT_ALLOWED_ORIGINS=https://fort-fort-lointain.festyggdrasil.fr
INSTALL_TOKEN=un-secret-temporaire # protège /install (à retirer après)
```

### 3. Première installation (sans SSH)
Après le 1er déploiement, ouvrir **`https://fort-fort-lointain.festyggdrasil.fr/install`** → bouton « Lancer l'installation » (migrations + données initiales). L'installateur se **désactive automatiquement** dès qu'un compte existe. Se connecter ensuite sur `/login` (Super Admin par défaut), **changer le mot de passe**, puis retirer `INSTALL_TOKEN`.

### 4. Mises à jour ultérieures
À chaque push sur `main`, le code est redéployé. Si une mise à jour ajoute des migrations, les appliquer depuis le back-office : **Administration → Base de données → Appliquer les migrations** (sauvegarde mysqldump automatique avant).

### 5. Divers
- HTTPS activé côté OVH (SSL). Vérifier que `storage/` et `bootstrap/cache/` sont accessibles en écriture.
- Cron Laravel (purge RGPD) : voir `CRON.md`.

## C. Widget de chat sur le site vitrine
Ajouter sur les pages du site (WordPress/Elementor ou HTML) :
```html
<script src="https://backoffice.festivalyggdrasil.com/widget/chat-widget.js"
        data-api="https://backoffice.festivalyggdrasil.com/api/v1/chat"
        data-name="Yggi" defer></script>
```
Déclarer le domaine du site dans `CHAT_ALLOWED_ORIGINS` (.env) pour le CORS.

## D. Checklist avant prod
Voir la section 18 du document de règles : CHANGELOG à jour, version, tests verts, backup, HTTPS, pages légales, bandeau cookies, Super Admin + mot de passe fort, sauvegardes, test mobile, tag Git.
