Configuration
Le fichier .env
Toute la configuration de Fatplant passe par des variables d’environnement définies dans le fichier .env à la racine du projet. Ce fichier est chargé par Docker Compose et injecté dans chaque conteneur.
Ne commitez jamais votre .env de production dans un dépôt Git. Utilisez .env.example comme référence versionnée.
Variables d’application
# Environnement : dev | prod | test
APP_ENV=prod
# Clé secrète de l'application (générer avec : openssl rand -hex 32)
APP_SECRET=une_cle_secrete_longue_et_aleatoire
# URL publique du backend
APP_URL=https://api.monmedia.fr
# URL publique de l'administration
ADMIN_URL=https://admin.monmedia.fr
# URL publique du frontend
FRONTEND_URL=https://monmedia.fr Base de données PostgreSQL
# DSN complet PostgreSQL
DATABASE_URL=postgresql://fatplant:motdepasse@db:5432/fatplant?serverVersion=16&charset=utf8
# Identifiants (utilisés par le conteneur db)
POSTGRES_DB=fatplant
POSTGRES_USER=fatplant
POSTGRES_PASSWORD=motdepasse En production, utilisez un mot de passe fort et envisagez un PostgreSQL managé (RDS, Supabase, etc.) si votre infrastructure le permet.
Redis
# DSN Redis (cache, sessions, file de messages)
REDIS_URL=redis://redis:6379
# Mot de passe Redis (optionnel mais recommandé)
REDIS_PASSWORD= Redis est utilisé pour :
- Le cache HTTP du backend Symfony
- Le stockage des sessions
- La file de diffusion des événements internes
Authentification JWT
# Chemins vers les clés RSA (dans le conteneur)
JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
# Passphrase de la clé privée (laisser vide si aucune)
JWT_PASSPHRASE=
# Durée de vie du token (en secondes)
JWT_TOKEN_TTL=3600 Mailer
# DSN Mailer (Symfony Mailer)
# Exemples :
# SMTP natif : smtp://user:pass@smtp.host:587
# Mailtrap : smtp://user:pass@sandbox.smtp.mailtrap.io:587
# Sendgrid : sendgrid://KEY@default
# Null (dev) : null://null
MAILER_DSN=smtp://user:pass@smtp.monmedia.fr:587
# Expéditeur par défaut
MAILER_FROM_EMAIL=noreply@monmedia.fr
MAILER_FROM_NAME="Mon Média" Serveur Yjs (collaboration temps réel)
# URL WebSocket du serveur Yjs (utilisée par le navigateur)
YJS_SERVER_URL=wss://yjs.monmedia.fr
# Mode de persistance : http | none
# http = le serveur Yjs persiste dans le backend via HTTP
YJS_SERVER_PERSIST=http
# URL interne du backend (pour la persistance, appels inter-conteneurs)
YJS_BACKEND_URL=http://backend:8000
# Clé partagée pour sécuriser les appels du serveur Yjs vers le backend
YJS_BACKEND_SECRET=une_cle_secrete_partagee
# Port d'écoute du serveur Yjs
YJS_PORT=1234 Uploads et médiathèque
# Répertoire de stockage des fichiers uploadés (dans le conteneur backend)
UPLOAD_DIR=/var/www/html/public/uploads
# Taille maximale d'upload (en octets)
UPLOAD_MAX_SIZE=52428800
# Types MIME autorisés (séparés par des virgules)
UPLOAD_ALLOWED_MIMETYPES=image/jpeg,image/png,image/webp,image/gif,application/pdf,audio/mpeg Le dossier UPLOAD_DIR doit être monté en volume dans docker-compose.yml pour être persistant entre les redémarrages :
volumes:
- ./data/uploads:/var/www/html/public/uploads CORS
# Origines autorisées à appeler l'API (séparées par des virgules)
CORS_ALLOW_ORIGIN=https://monmedia.fr,https://admin.monmedia.fr Récapitulatif par service
| Variable | Service concerné |
|---|---|
DATABASE_URL | Backend, migrations |
REDIS_URL | Backend |
JWT_* | Backend, Admin |
MAILER_DSN | Backend |
YJS_SERVER_URL | Admin (navigateur) |
YJS_BACKEND_URL | Serveur Yjs |
UPLOAD_DIR | Backend |
CORS_ALLOW_ORIGIN | Backend |