diff --git a/DEPLOIEMENT_COOLIFY.md b/DEPLOIEMENT_COOLIFY.md deleted file mode 100644 index 97cff0c..0000000 --- a/DEPLOIEMENT_COOLIFY.md +++ /dev/null @@ -1,67 +0,0 @@ -# Déploiement CESIZen sur Coolify - -Stack de production : **PostgreSQL + API Laravel + Frontend Next.js (DSFR)**. -Le mobile (Expo) n'est pas concerné (ce n'est pas une appli web). - -Fichiers fournis : -- `backend/Dockerfile.prod` — API Laravel (PHP 8.4, migrations + seed au démarrage) -- `frontend/Dockerfile.prod` — Next.js en sortie *standalone* (image légère) -- `docker-compose.prod.yaml` — orchestration des 3 services -- `backend/docker/entrypoint.sh` — démarrage de l'API - ---- - -## Option recommandée : « Docker Compose » dans Coolify - -1. **Créer une ressource** → *Docker Compose* → connecter le dépôt GitHub `AzmogEx/CesiZen`, branche `main`. -2. **Compose file** : `docker-compose.prod.yaml`. -3. Renseigner les **variables d'environnement** (ci-dessous). -4. **Domaines** : dans Coolify, mapper - - le service **frontend** (port `3000`) sur ton domaine principal (ex. `cesizen.tondomaine.fr`) - - le service **backend** (port `8000`) sur un sous-domaine API (ex. `api.cesizen.tondomaine.fr`) -5. **Déployer**. - -> Le frontend lit l'API via `NEXT_PUBLIC_API_URL`, **injectée au build** → elle doit pointer vers l'**URL publique** du backend (pas l'URL interne Docker). - ---- - -## Variables d'environnement à définir dans Coolify - -| Variable | Exemple | Rôle | -|---|---|---| -| `POSTGRES_DB` | `cesizen` | Nom de la base | -| `POSTGRES_USER` | `cesizen` | Utilisateur base | -| `POSTGRES_PASSWORD` | *(mot de passe fort)* | **Obligatoire** | -| `APP_KEY` | `base64:...` | Clé Laravel — voir génération ci-dessous | -| `JWT_SECRET` | *(chaîne aléatoire)* | Secret JWT — voir génération | -| `JWT_TTL` | `60` | Durée de vie du token (min) | -| `APP_URL` | `https://api.cesizen.tondomaine.fr` | URL publique de l'API | -| `FRONTEND_URL` | `https://cesizen.tondomaine.fr` | Origine autorisée (CORS) | -| `NEXT_PUBLIC_API_URL` | `https://api.cesizen.tondomaine.fr/api/v1` | URL publique de l'API côté navigateur | - -### Générer les secrets (en local) -```bash -# APP_KEY -docker run --rm php:8.4-cli sh -c "php -r 'echo \"base64:\".base64_encode(random_bytes(32)).\"\n\";'" -# JWT_SECRET (64 caractères) -openssl rand -base64 48 | tr -d '\n=' -``` -> Définis-les **une fois** dans Coolify pour qu'ils restent stables entre déploiements. Si tu ne les fournis pas, l'entrypoint en génère au démarrage — mais ils changeront à chaque redéploiement (déconnexion de tous les utilisateurs). - ---- - -## Notes - -- **Migrations & seed** : exécutés automatiquement au démarrage du backend. Les seeders sont **idempotents** (pas de doublons même au redémarrage). La base est peuplée avec les comptes de démo (`admin@cesizen.fr` / `Admin123!`, `demo@cesizen.fr` / `Demo123!`) et le référentiel d'émotions. -- **Cache/queue/session** : en `database` (aucun Redis requis). Tu peux ajouter un service Redis et repasser ces variables sur `redis` si besoin. -- **HTTPS** : géré par le proxy de Coolify (Traefik). Pense à passer `APP_URL`/`FRONTEND_URL`/`NEXT_PUBLIC_API_URL` en `https://`. -- **Serveur PHP** : l'API tourne via `php artisan serve` (suffisant pour ce projet). Pour une charge réelle, on passerait à php-fpm+nginx ou FrankenPHP/Octane. - ---- - -## Déploiement par services séparés (alternative) - -Si tu préfères 3 ressources distinctes dans Coolify : -1. **PostgreSQL** : ressource « Database » Coolify (récupère host/user/password). -2. **Backend** : ressource « Dockerfile », dossier `backend`, fichier `Dockerfile.prod`, port `8000`, + les variables `APP_*`, `DB_*`, `JWT_*`, `FRONTEND_URL`. -3. **Frontend** : ressource « Dockerfile », dossier `frontend`, fichier `Dockerfile.prod`, port `3000`, **build arg** `NEXT_PUBLIC_API_URL`.