# Variables lues par docker-compose.yml à la racine. # Le backend lancé hors conteneur (`make dev`) lit apps/backend/.env, pas ce fichier. POSTGRES_USER=enervision POSTGRES_PASSWORD=change_me POSTGRES_DB=enervision # 5432 est souvent déjà pris par une autre base du poste. POSTGRES_PORT=5433 # `basic` renvoie des statistiques d'usage à Timescale. TIMESCALEDB_TELEMETRY=off APP_ENV=local APP_DEBUG=false APP_LOG_LEVEL=INFO # L'API refuse de démarrer tant que cette valeur reste un exemple ou fait moins de # 32 caractères. Générer la vôtre : python -c "import secrets; print(secrets.token_urlsafe(48))" APP_SECRET_KEY=change_me APP_CORS_ORIGINS=http://localhost:4200 BACKEND_PORT=8000 FRONTEND_PORT=3000 # Mailpit capture les courriels du backend, rien ne sort vers l'extérieur. MAILPIT_SMTP_PORT=1025 MAILPIT_UI_PORT=8025 # API Mock EnerVision APP_MOCK_API_BASE_URL=https://api-mock.charlieandre.fr APP_MOCK_API_USERNAME=change_me APP_MOCK_API_PASSWORD=change_me APP_MOCK_API_TIMEOUT_SECONDS=10 # Airflow (webserver + scheduler, LocalExecutor). Base de métadonnées dédiée `airflow` dans le # même conteneur `db` (cf. db/init/120-airflow-database.sql), pas un conteneur de plus. AIRFLOW_PORT=8080 # Chiffre les connexions/variables stockées par Airflow. Générer la vôtre : # python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" AIRFLOW_FERNET_KEY=change_me # Clé Flask du webserver Airflow (signature de session), distincte de la précédente. Générer la # vôtre : python -c "import secrets; print(secrets.token_urlsafe(48))" AIRFLOW_WEBSERVER_SECRET_KEY=change_me AIRFLOW_ADMIN_USERNAME=admin # Compte Airflow créé au premier démarrage (service `airflow-init`), sans rapport avec les # comptes `app_user` d'EnerVision. AIRFLOW_ADMIN_PASSWORD=change_me AIRFLOW_ADMIN_EMAIL=admin@enervision.fr # `APP_SECRET_KEY` du backend, que le DAG `alertes` lance en sous-processus. Distincte de # celle de l'API : la détection ne signe aucun jeton, et Airflow exécute du code depuis son # interface (cf. ADR 0008). Générer la vôtre : # python -c "import secrets; print(secrets.token_urlsafe(48))" AIRFLOW_APP_SECRET_KEY=change_me # Stack complète derrière le reverse proxy (docker-compose.prod.yml). # PUBLIC_HOST alimente l'origine CORS, le lien de réinitialisation et le certificat. PUBLIC_HOST=enervision.local ACME_EMAIL=