Configuration

Variables d'environnement

Serveur

VariableDéfautDescription
IP_SERVER127.0.0.1Adresse IP écoute
PORT3000Port serveur
DEBUGtrueMode debug (templates, logs, etc.)

⚠️ Production : Définir DEBUG=false explicitement. En mode debug, les pages d'erreur détaillées sont visibles, révélant potentiellement des informations sensibles. De plus, compiler avec cargo build --release désactive automatiquement les assertions debug, mais DEBUG=true peut outrepasser cela.


Base de données

Connexion

VariableDéfautDescription
DB_URLURL complète (prioritaire sur toutes les variables composantes)
DB_ENGINEsqlitepostgres, mysql, mariadb, sqlite
DB_USERUtilisateur DB (requis sauf SQLite)
DB_PASSWORDMot de passe DB (requis sauf SQLite)
DB_HOSTlocalhostHost DB
DB_PORT5432 / 3306Port DB (défaut selon le moteur)
DB_NAMElocal_base.sqliteNom de la base de données

Pool de connexions

VariableDéfautDescription
DB_MAX_CONNECTIONS100Taille maximale du pool
DB_MIN_CONNECTIONS20Taille minimale du pool

Timeouts

VariableDéfautUnitéDescription
DB_CONNECT_TIMEOUT2secondesTimeout d'établissement de connexion
DB_ACQUIRE_TIMEOUT500millisecondesTimeout d'acquisition depuis le pool
DB_IDLE_TIMEOUT300secondesDurée d'inactivité avant fermeture
DB_MAX_LIFETIME3600secondesDurée de vie maximale d'une connexion

Logging

VariableDéfautDescription
DB_LOGGINGfalseActive 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

VariableDéfautDescription
TEMPLATES_DIRtemplatesRépertoire templates
STATICFILES_DIRSstaticRépertoire assets statiques
MEDIA_ROOTmediaRépertoire médias (uploads)
TEMPLATES_DIR=templates
STATICFILES_DIRS=static:demo-app/static
MEDIA_ROOT=uploads

Sécurité

VariableDéfautDescription
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 — match example.com et *.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: