Files
lasuite-messages/docs/env.md
T
Niels KersicandGitHub 147e6a165a 📝(docs) add architecture and environment docs (#145)
* 🧹() update gitignore

* 📝(docs) add architecture overview

* 📝(docs) add env docs
2025-06-13 23:19:24 +02:00

12 KiB

Environment Variables

This document provides a comprehensive overview of all environment variables used in the Messages application. These variables are organized by service and functionality.

Core Application Configuration

Django Settings

Variable Default Description Required
DJANGO_CONFIGURATION Development Django configuration class to use (Development, Production, Test, etc.) Required
DJANGO_SECRET_KEY None Secret key for cryptographic signing Required
DJANGO_ALLOWED_HOSTS [] List of allowed hostnames Required
DJANGO_SETTINGS_MODULE messages.settings Django settings module Required
DJANGO_SUPERUSER_PASSWORD admin Default superuser password for development Dev
DJANGO_DATA_DIR /data Base directory for data storage Optional

Database Configuration

PostgreSQL (Main Database)

Variable Default Description Required
DATABASE_URL None Complete database URL (overrides individual DB_* vars) Optional
DB_ENGINE django.db.backends.postgresql_psycopg2 Database engine Optional
DB_HOST localhost Database hostname Optional
DB_NAME messages Database name Optional
DB_USER dbuser Database username Optional
DB_PASSWORD dbpass Database password Optional
DB_PORT 5432 Database port Optional

PostgreSQL (Keycloak)

Variable Default Description Required
POSTGRES_DB keycloak Keycloak database name Dev
POSTGRES_USER user Keycloak database user Dev
POSTGRES_PASSWORD pass Keycloak database password Dev

Redis Configuration

Variable Default Description Required
REDIS_URL redis://redis:6379 Redis connection URL Optional
CELERY_BROKER_URL redis://redis:6379 Celery message broker URL Optional
CACHES_DEFAULT_TIMEOUT 30 Default cache timeout in seconds Optional

Elasticsearch Configuration

Variable Default Description Required
ELASTICSEARCH_URL ["http://elasticsearch:9200"] Elasticsearch hosts list Optional
ELASTICSEARCH_TIMEOUT 20 Elasticsearch query timeout Optional
ELASTICSEARCH_INDEX_THREADS True Enable thread indexing Optional

Mail Processing Configuration

MTA Settings

Variable Default Description Required
MTA_OUT_HOST None Outbound SMTP server host Required
MTA_OUT_SMTP_USERNAME None Outbound SMTP username Optional
MTA_OUT_SMTP_PASSWORD None Outbound SMTP password Optional
MTA_OUT_SMTP_USE_TLS True Use TLS for outbound SMTP Optional
MDA_API_SECRET default-mda-api-secret Shared secret for MDA API Required
MDA_API_BASE_URL None Base URL for MDA API Dev

MTA-Out Specific

Variable Default Description Required
SMTP_RELAY_HOST None SMTP relay server Dev
SMTP_USERNAME None SMTP authentication username Dev
SMTP_PASSWORD None SMTP authentication password Dev

Email Domain Configuration

Variable Default Description Required
MESSAGES_TESTDOMAIN localhost Test domain for development Dev
MESSAGES_TESTDOMAIN_MAPPING_BASEDOMAIN gouv.fr Base domain mapping Dev
MESSAGES_ACCEPT_ALL_EMAILS False Accept emails to any domain Optional

DKIM Configuration

Variable Default Description Required
MESSAGES_DKIM_SELECTOR default DKIM selector Optional
MESSAGES_DKIM_DOMAINS [] List of domains for DKIM signing Optional
MESSAGES_DKIM_PRIVATE_KEY_B64 None Base64 encoded DKIM private key Optional
MESSAGES_DKIM_PRIVATE_KEY_FILE None Path to DKIM private key file Optional

Storage Configuration

S3-Compatible Storage

Variable Default Description Required
AWS_S3_ENDPOINT_URL None S3 endpoint URL Optional
AWS_S3_ACCESS_KEY_ID None S3 access key Optional
AWS_S3_SECRET_ACCESS_KEY None S3 secret key Optional
AWS_S3_REGION_NAME None S3 region Optional
AWS_STORAGE_BUCKET_NAME st-messages-media-storage S3 bucket name Optional
AWS_S3_UPLOAD_POLICY_EXPIRATION 86400 Upload policy expiration (24h) Optional
MEDIA_BASE_URL None Base URL for media files Optional
ITEM_FILE_MAX_SIZE 5368709120 Max file size (5GB) Optional

Static Files

Variable Default Description Required
STORAGES_STATICFILES_BACKEND whitenoise.storage.CompressedManifestStaticFilesStorage Static files storage backend Optional

Authentication & Authorization

OIDC Configuration

Variable Default Description Required
OIDC_CREATE_USER False Automatically create users from OIDC Optional
OIDC_RP_CLIENT_ID st_messages OIDC client ID Required
OIDC_RP_CLIENT_SECRET None OIDC client secret Required
OIDC_RP_SIGN_ALGO RS256 OIDC signing algorithm Optional
OIDC_RP_SCOPES openid email OIDC scopes Optional
OIDC_OP_JWKS_ENDPOINT None OIDC JWKS endpoint Required
OIDC_OP_AUTHORIZATION_ENDPOINT None OIDC authorization endpoint Required
OIDC_OP_TOKEN_ENDPOINT None OIDC token endpoint Required
OIDC_OP_USER_ENDPOINT None OIDC user info endpoint Required
OIDC_OP_LOGOUT_ENDPOINT None OIDC logout endpoint Optional

OIDC Advanced Settings

Variable Default Description Required
OIDC_USE_NONCE True Use nonce in OIDC flow Optional
OIDC_REDIRECT_REQUIRE_HTTPS False Require HTTPS for redirects Optional
OIDC_REDIRECT_ALLOWED_HOSTS [] Allowed redirect hosts Optional
OIDC_STORE_ID_TOKEN True Store ID token Optional
OIDC_FALLBACK_TO_EMAIL_FOR_IDENTIFICATION True Use email as fallback identifier Optional
OIDC_ALLOW_DUPLICATE_EMAILS False Allow duplicate emails (⚠️ Security risk) Optional
OIDC_AUTH_REQUEST_EXTRA_PARAMS {} Extra parameters for auth requests Optional

Authentication URLs

Variable Default Description Required
LOGIN_REDIRECT_URL None Post-login redirect URL Optional
LOGIN_REDIRECT_URL_FAILURE None Login failure redirect URL Optional
LOGOUT_REDIRECT_URL None Post-logout redirect URL Optional
ALLOW_LOGOUT_GET_METHOD True Allow GET method for logout Optional

User Mapping

Variable Default Description Required
USER_OIDC_ESSENTIAL_CLAIMS [] Essential OIDC claims Optional
USER_OIDC_FIELDS_TO_FULLNAME ["first_name", "last_name"] Fields for full name Optional
USER_OIDC_FIELD_TO_SHORTNAME first_name Field for short name Optional

Security & CORS

Variable Default Description Required
CORS_ALLOW_ALL_ORIGINS False Allow all CORS origins Optional
CORS_ALLOWED_ORIGINS [] Specific allowed CORS origins Optional
CORS_ALLOWED_ORIGIN_REGEXES [] Regex patterns for allowed origins Optional
CSRF_TRUSTED_ORIGINS [] Trusted origins for CSRF Optional
SERVER_TO_SERVER_API_TOKENS [] API tokens for server-to-server auth Optional

Monitoring & Observability

Sentry

Variable Default Description Required
SENTRY_DSN None Sentry DSN for error tracking Optional

PostHog

Variable Default Description Required
POSTHOG_KEY None PostHog analytics key Optional

Logging

Variable Default Description Required
LOGGING_LEVEL_LOGGERS_ROOT INFO Root logger level Optional
LOGGING_LEVEL_LOGGERS_APP INFO Application logger level Optional
LOGGING_LEVEL_HANDLERS_CONSOLE INFO Console handler level Optional

API Configuration

Variable Default Description Required
API_USERS_LIST_LIMIT 5 Default limit for user list API Optional
API_USERS_LIST_THROTTLE_RATE_SUSTAINED 180/hour Sustained throttle rate Optional
API_USERS_LIST_THROTTLE_RATE_BURST 30/minute Burst throttle rate Optional

OpenAPI Schema

Variable Default Description Required
SPECTACULAR_SETTINGS_ENABLE_DJANGO_DEPLOY_CHECK False Enable deploy check in OpenAPI Optional

Frontend Configuration

Variable Default Description Required
FRONTEND_THEME None Frontend theme identifier Optional
NEXT_PUBLIC_API_ORIGIN None Frontend API origin Dev
NEXT_PUBLIC_S3_DOMAIN_REPLACE None S3 domain replacement for frontend Dev

Development Tools

Crowdin (Translations)

Variable Default Description Required
CROWDIN_PERSONAL_TOKEN None Crowdin API token Dev
CROWDIN_PROJECT_ID None Crowdin project ID Dev
CROWDIN_BASE_PATH /app/src Base path for translations Dev

Application Settings

Business Logic

Variable Default Description Required
TRASHBIN_CUTOFF_DAYS 30 Days before permanent deletion Optional
INVITATION_VALIDITY_DURATION 604800 Invitation validity (7 days) Optional

Internationalization

Variable Default Description Required
LANGUAGE_CODE en-us Default language code Optional

Legend

  • Required: Must be set for the application to function
  • Dev: Required for development/testing environments
  • Optional: Has sensible defaults, can be customized

Environment Files

The application uses environment files located in env.d/development/ for different services:

  • backend.dist - Main Django application settings
  • common.dist - Shared settings across services
  • postgresql.dist - PostgreSQL database configuration
  • kc_postgresql.dist - Keycloak database configuration
  • mta-in.dist - Inbound mail server settings
  • mta-out.dist - Outbound mail server settings
  • crowdin.dist - Translation service configuration

Security Notes

⚠️ Important Security Considerations:

  1. Never commit actual secrets - Use .dist files as templates
  2. OIDC_ALLOW_DUPLICATE_EMAILS - Should remain False in production
  3. CORS_ALLOW_ALL_ORIGINS - Should be False in production
  4. DJANGO_SECRET_KEY - Must be unique and secret in production
  5. Database passwords - Use strong, unique passwords
  6. API tokens - Rotate regularly and keep secure

Production Deployment

For production deployments, ensure:

  1. All Required variables are properly configured
  2. Secrets are managed through secure secret management systems
  3. HTTPS is enforced for all external communications
  4. Database connections use SSL/TLS
  5. File storage uses appropriate access controls