Variables d'environnement
Serveur
| Variable | Défaut | Description |
|---|---|---|
IP_SERVER | 127.0.0.1 | Adresse IP écoute |
PORT | 3000 | Port serveur |
DEBUG | true | Mode debug (templates, logs, etc.) |
⚠️ Production : Définir
DEBUG=falseexplicitement. En mode debug, les pages d'erreur détaillées sont visibles, révélant potentiellement des informations sensibles. De plus, compiler aveccargo build --releasedésactive automatiquement les assertions debug, maisDEBUG=truepeut outrepasser cela.
Base de données
Connexion
| Variable | Défaut | Description |
|---|---|---|
DB_URL | — | URL complète (prioritaire sur toutes les variables composantes) |
DB_ENGINE | sqlite | postgres, mysql, mariadb, sqlite |
DB_USER | — | Utilisateur DB (requis sauf SQLite) |
DB_PASSWORD | — | Mot de passe DB (requis sauf SQLite) |
DB_HOST | localhost | Host DB |
DB_PORT | 5432 / 3306 | Port DB (défaut selon le moteur) |
DB_NAME | local_base.sqlite | Nom de la base de données |
Pool de connexions
| Variable | Défaut | Description |
|---|---|---|
DB_MAX_CONNECTIONS | 100 | Taille maximale du pool |
DB_MIN_CONNECTIONS | 20 | Taille minimale du pool |
Timeouts
| Variable | Défaut | Unité | Description |
|---|---|---|---|
DB_CONNECT_TIMEOUT | 2 | secondes | Timeout d'établissement de connexion |
DB_ACQUIRE_TIMEOUT | 500 | millisecondes | Timeout d'acquisition depuis le pool |
DB_IDLE_TIMEOUT | 300 | secondes | Durée d'inactivité avant fermeture |
DB_MAX_LIFETIME | 3600 | secondes | Durée de vie maximale d'une connexion |
Logging
| Variable | Défaut | Description |
|---|---|---|
DB_LOGGING | false | Active les logs SQL (true, 1, yes) |
PostgreSQL (URL directe) :
DB_URL=postgres://user:password@localhost:5432/dbname
PostgreSQL (variables composantes) :
DB_ENGINE=postgres
DB_USER=postgres
DB_PASSWORD=secret
DB_HOST=localhost
DB_PORT=5432
DB_NAME=runique
SQLite (dev) :
DB_ENGINE=sqlite
DB_NAME=runique.db
Pool personnalisé :
DB_MAX_CONNECTIONS=50
DB_MIN_CONNECTIONS=5
DB_CONNECT_TIMEOUT=5
DB_IDLE_TIMEOUT=600
DB_LOGGING=true
Templates & Assets
| Variable | Défaut | Description |
|---|---|---|
TEMPLATES_DIR | templates | Répertoire templates |
STATICFILES_DIRS | static | Répertoire assets statiques |
MEDIA_ROOT | media | Répertoire médias (uploads) |
TEMPLATES_DIR=templates
STATICFILES_DIRS=static:demo-app/static
MEDIA_ROOT=uploads
Sécurité
| Variable | Défaut | Description |
|---|---|---|
SECRETE_KEY | (requis) | Clé secrète CSRF (⚠️ CHANGE EN PROD!) |
ALLOWED_HOSTS | * | Hosts autorisés (comma-separated) |
ALLOWED_HOSTS patterns :
localhost— exact match*— wildcard tous les hosts (DANGER en production !).example.com— matchexample.comet*.example.com
SECRETE_KEY=your_secret_key_change_this_in_production
ALLOWED_HOSTS=localhost,127.0.0.1,example.com,.api.example.com
Fichier .env complet
# ============================================================================
# SERVER CONFIGURATION
# ============================================================================
IP_SERVER=127.0.0.1
PORT=3000
DEBUG=true
# ============================================================================
# DATABASE CONFIGURATION
# ============================================================================
DATABASE_URL=postgres://postgres:password@localhost:5432/runique
DB_ENGINE=postgres
DB_USER=postgres
DB_PASSWORD=password
DB_HOST=localhost
DB_PORT=5432
DB_NAME=runique
# SQLite (Development only)
# DATABASE_URL=sqlite:runique.db?mode=rwc
# ============================================================================
# TEMPLATES & STATIC FILES
# ============================================================================
TEMPLATES_DIR=templates
STATICFILES_DIRS=static
MEDIA_ROOT=media
# ============================================================================
# SECURITY
# ============================================================================
SECRETE_KEY=your_secret_key_here_change_in_production
ALLOWED_HOSTS=localhost,127.0.0.1
Générer une clé secrète
# Python
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
# OpenSSL
openssl rand -base64 32
Modes d'environnement
Production
DEBUG=false
PORT=443
IP_SERVER=0.0.0.0
SECRETE_KEY=<généré dynamiquement>
ALLOWED_HOSTS=example.com,www.example.com,.api.example.com
DATABASE_URL=postgres://user:pwd@prod-db.example.com:5432/runique
Développement
DEBUG=true
PORT=3000
IP_SERVER=127.0.0.1
SECRETE_KEY=any_dev_key
ALLOWED_HOSTS=*
DATABASE_URL=sqlite:runique.db?mode=rwc
Testing
DEBUG=true
SECRETE_KEY=test_key
ALLOWED_HOSTS=localhost,127.0.0.1
DATABASE_URL=sqlite::memory: