docs : corrige le déploiement prod (Docker) et documente les variables d'env mail
- README : section Variables d'environnement (ENCRYPTION_KEY, LOCK_DSN) + section Déploiement passée au flow Docker (deploy.sh) - mail-cron-setup : sépare dev (make, php-lesstime-fpm) et prod (lesstime-app, docker compose exec), cron prod réel - infra/prod/.env.example : ajoute ENCRYPTION_KEY et LOCK_DSN (manquaient, requis pour la sync mail) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
43
README.md
43
README.md
@@ -45,6 +45,10 @@ make install
|
||||
|
||||
L'application est accessible sur **http://localhost:8082**.
|
||||
|
||||
Les valeurs par défaut du `.env` committé suffisent pour démarrer en local. Pour la prod
|
||||
(et pour activer la messagerie), surcharger les variables sensibles dans `.env.local` —
|
||||
voir « Variables d'environnement » ci-dessous.
|
||||
|
||||
### Comptes de test (fixtures)
|
||||
|
||||
| Utilisateur | Mot de passe | Rôle | Détails |
|
||||
@@ -56,6 +60,25 @@ L'application est accessible sur **http://localhost:8082**.
|
||||
| `client-liot` | `client` | ROLE_CLIENT | Client LIOT (projet SIRH) |
|
||||
| `client-acme` | `client` | ROLE_CLIENT | Client ACME (projet CRM) |
|
||||
|
||||
## Variables d'environnement
|
||||
|
||||
Les variables sont définies dans `.env` (committé, valeurs par défaut pour le dev) et
|
||||
peuvent être surchargées dans `.env.local` (jamais committé). En prod, elles vont dans le
|
||||
`.env` du serveur (`/var/www/lesstime/.env`, voir `infra/prod/.env.example`).
|
||||
|
||||
| Variable | Rôle | Défaut dev | À fixer en prod |
|
||||
|----------|------|-----------|-----------------|
|
||||
| `APP_SECRET` | Secret Symfony | placeholder | ✅ (hex 32) |
|
||||
| `JWT_PASSPHRASE` | Passphrase des clés JWT | placeholder | ✅ |
|
||||
| `DATABASE_URL` | Connexion PostgreSQL | container `db` | ✅ (`host.docker.internal`) |
|
||||
| `CORS_ALLOW_ORIGIN` | Origines CORS autorisées | localhost | ✅ (domaine prod) |
|
||||
| **`ENCRYPTION_KEY`** | **Clé hex 32 bytes chiffrant les credentials IMAP/SMTP (feature mail)** | placeholder | ✅ — doit rester **stable**, sinon les credentials mail stockés deviennent illisibles |
|
||||
| **`LOCK_DSN`** | **Store de verrous Symfony pour la sync mail (anti-chevauchement)** | `flock` | `flock` suffit |
|
||||
|
||||
> **Messagerie** : `ENCRYPTION_KEY` et `LOCK_DSN` sont introduites par l'intégration mail.
|
||||
> Détails de config et cron de synchronisation : `docs/mail-integration.md` et `docs/mail-cron-setup.md`.
|
||||
> Générer une clé : `php -r "echo bin2hex(random_bytes(32));"`.
|
||||
|
||||
## Commandes
|
||||
|
||||
### Docker
|
||||
@@ -218,13 +241,19 @@ docker exec -u www-data php-lesstime-fpm php bin/console app:generate-api-token
|
||||
|
||||
## Déploiement
|
||||
|
||||
1. Déployer le code sur le serveur
|
||||
2. `composer install --no-dev --optimize-autoloader`
|
||||
3. `php bin/console doctrine:migrations:migrate --no-interaction`
|
||||
4. `php bin/console cache:clear --env=prod`
|
||||
5. `cd frontend && npm install && npm run build:dist`
|
||||
6. `docker restart nginx-lesstime`
|
||||
7. Ouvrir le port 8082 sur le firewall (LAN uniquement)
|
||||
La prod tourne en **Docker** : l'image est buildée par la CI Gitea sur push de tag `v*`
|
||||
(`gitea.malio.fr/malio-dev/lesstime:<tag>`), puis déployée par le script `deploy.sh` sur
|
||||
le serveur (dossier `/var/www/lesstime`, container `lesstime-app`).
|
||||
|
||||
```bash
|
||||
# Sur le serveur, depuis /var/www/lesstime
|
||||
sudo ./deploy.sh # déploie la dernière image (latest)
|
||||
sudo ./deploy.sh v0.4.2 # déploie une version précise
|
||||
```
|
||||
|
||||
Le script active la maintenance, pull l'image, redémarre le container, lance les migrations
|
||||
et vide le cache. Guide complet (première installation, BDD, Nginx, JWT, rollback) :
|
||||
**`doc/deployment-docker.md`**.
|
||||
|
||||
## Licence
|
||||
|
||||
|
||||
Reference in New Issue
Block a user