# Déploiement sur un VPS — guide pas-à-pas (débutant)

> Objectif : mettre VraiDocs en ligne sans se casser la tête. Ce paquet inclut
> déjà les dépendances (`vendor/`) et les assets compilés (`public/build/`) :
> **pas besoin de `composer` ni de `npm` sur le serveur.**
> Système visé : **Ubuntu 22.04** + Apache + PHP 8.3 + MySQL 8. Comptez ~30 min.

Remplacez partout `votre-domaine.ne` par votre vrai domaine, et `MotDePasseBD`
par un mot de passe fort.

---

## 1. Commander le VPS et s'y connecter
- Prenez un VPS Ubuntu 22.04 (2 Go de RAM minimum) chez un hébergeur.
- Faites pointer votre nom de domaine (enregistrement **A**) vers l'IP du VPS.
- Connectez-vous : `ssh root@IP_DU_VPS`

## 2. Installer les logiciels de base
```bash
apt update && apt upgrade -y
apt install -y apache2 mysql-server unzip \
  php8.3 php8.3-cli php8.3-fpm libapache2-mod-php8.3 \
  php8.3-mysql php8.3-mbstring php8.3-xml php8.3-zip php8.3-gd php8.3-bcmath php8.3-curl php8.3-intl
a2enmod rewrite ssl
```
> PHP `sodium` est inclus d'office avec PHP 8.3 (nécessaire aux signatures).

## 3. Créer la base de données
```bash
mysql -e "CREATE DATABASE vraidocs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -e "CREATE USER 'vraidocs_app'@'localhost' IDENTIFIED BY 'MotDePasseBD';"
mysql -e "GRANT ALL PRIVILEGES ON vraidocs.* TO 'vraidocs_app'@'localhost'; FLUSH PRIVILEGES;"
```

## 4. Déposer l'application
Depuis votre PC, envoyez le ZIP sur le serveur :
```bash
scp vraidocs-deploy.zip root@IP_DU_VPS:/var/www/
```
Sur le serveur :
```bash
cd /var/www
unzip vraidocs-deploy.zip -d vraidocs
cd vraidocs
chown -R www-data:www-data /var/www/vraidocs
chmod -R 775 storage bootstrap/cache
```

## 5. Configurer l'application (fichier .env)
```bash
cp deploy/.env.production.example .env
nano .env       # éditez les valeurs, puis Ctrl+O, Entrée, Ctrl+X
```
À renseigner au minimum :
- `APP_URL=https://votre-domaine.ne`
- `DB_DATABASE=vraidocs`, `DB_USERNAME=vraidocs_app`, `DB_PASSWORD=MotDePasseBD`
- La partie `MAIL_*` (votre SMTP).

Puis générez les deux secrets **et laissez-les tranquilles ensuite** :
```bash
php artisan key:generate
php artisan cles:secret        # copiez la valeur "base64:..." dans DOCUMENT_KEY_SECRET du .env
```

## 6. Créer les tables
Méthode recommandée (une commande) :
```bash
php artisan migrate --force
```
> Alternative si vous préférez importer le SQL : `mysql -u vraidocs_app -p vraidocs < database/schema.sql`
> puis lancez quand même `php artisan migrate --force` (il n'aura rien à faire, c'est normal).

## 7. Créer votre compte super-administrateur
```bash
php artisan vraidocs:creer-super-admin
```
Répondez aux questions (nom, e-mail, mot de passe fort). Vous activerez la
double authentification à la première connexion.

## 8. Optimiser + pointer le site sur `public/`
```bash
php artisan optimize
cp deploy/apache-vhost.conf.example /etc/apache2/sites-available/vraidocs.conf
nano /etc/apache2/sites-available/vraidocs.conf   # remplacez le domaine et les chemins
a2ensite vraidocs && a2dissite 000-default && systemctl reload apache2
```

## 9. Activer HTTPS (gratuit)
```bash
apt install -y certbot python3-certbot-apache
certbot --apache -d votre-domaine.ne
```
Certbot configure le certificat et la redirection HTTPS automatiquement.

## 10. Lancer le worker et le planificateur (indispensables)
```bash
# Worker (e-mails, imports)
cp deploy/systemd/vraidocs-worker.service /etc/systemd/system/
# Planificateur (purge, anti-fraude)
cp deploy/systemd/vraidocs-scheduler.service /etc/systemd/system/
cp deploy/systemd/vraidocs-scheduler.timer   /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now vraidocs-worker vraidocs-scheduler.timer
```

## 11. Vérifier
- `https://votre-domaine.ne` → la vitrine s'affiche.
- `https://votre-domaine.ne/health` → `{"status":"ok",...}`.
- Connectez-vous en super-admin, activez la 2FA.
- Configurez **SPF/DKIM/DMARC** chez votre hébergeur mail (sinon les e-mails partent en spam).

## 12. Ne pas oublier (voir BACKUP.md)
- Mettez en place une **sauvegarde quotidienne** (base + `storage/app` + secrets).
- **Testez une restauration** au moins une fois.

---

### En cas de souci
- Page blanche / erreur 500 : `tail -f storage/logs/laravel.log`.
- Après avoir modifié `.env` : `php artisan optimize:clear && php artisan optimize`.
- Les e-mails ne partent pas : worker lancé ? (`systemctl status vraidocs-worker`) et SMTP correct ?
- Les images/QR ne s'affichent pas : `APP_URL` doit être votre domaine **https** exact.
