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

VariableService concerné
DATABASE_URLBackend, migrations
REDIS_URLBackend
JWT_*Backend, Admin
MAILER_DSNBackend
YJS_SERVER_URLAdmin (navigateur)
YJS_BACKEND_URLServeur Yjs
UPLOAD_DIRBackend
CORS_ALLOW_ORIGINBackend

Restez a la pointe de l'edition

Recevez les dernieres nouveautes, tutoriels et bonnes pratiques dans votre boite mail.

F
Fatplant

Le CMS open-source des redactions de presse en ligne. Du chemin de fer a la publication et au paywall : journaux, magazines et plateformes editoriales, self-hosted et sans vendor lock-in.

Open Source RGPD MIT License
Pourquoi « Fatplant » ?

« Fatplant », c'est « Flat Plan » qui a un peu bougé. Le flat plan — le chemin de fer en jargon de presse — c'est le plan page à page d'un journal avant impression : le squelette de l'édition, la pré-maquette en fil de fer. C'est exactement ce que dessine notre page builder. Un CMS qui part du chemin de fer ne pouvait pas s'appeler autrement. 🌱

© 2026 Fatplant SAS. Tous droits reserves.