# ============================================================================= # Meldestelle - Environment Configuration # ============================================================================= # This file contains all environment variables for the Meldestelle application. # Adjust values as needed for your local development environment. # # ⚠️ SECURITY WARNING: # - Never commit production secrets to version control # - Change JWT_SECRET in production # - Use strong passwords for production environments # - Rotate API keys regularly # ============================================================================= # ============================================================================= # 1. APPLICATION CONFIGURATION # ============================================================================= API_HOST=0.0.0.0 API_PORT=8081 APP_NAME=Meldestelle APP_VERSION=1.0.0 APP_DESCRIPTION='Pferdesport Meldestelle System' APP_ENVIRONMENT=development # Development-specific settings DEBUG_MODE=true DEV_HOT_RELOAD=true # ============================================================================= # 2. DATABASE CONFIGURATION (PostgreSQL) # ============================================================================= # Application database settings DB_HOST=localhost DB_PORT=5432 DB_NAME=meldestelle DB_USER=meldestelle DB_PASSWORD=meldestelle DB_MAX_POOL_SIZE=10 DB_MIN_POOL_SIZE=5 DB_AUTO_MIGRATE=true # Docker PostgreSQL container settings POSTGRES_USER=meldestelle POSTGRES_PASSWORD=meldestelle POSTGRES_DB=meldestelle # External port for multiple developers (change if needed) POSTGRES_EXTERNAL_PORT=5432 # ============================================================================= # 3. REDIS CONFIGURATION # ============================================================================= # Event Store Configuration REDIS_EVENT_STORE_HOST=localhost REDIS_EVENT_STORE_PORT=6379 REDIS_EVENT_STORE_PASSWORD= REDIS_EVENT_STORE_DATABASE=0 REDIS_EVENT_STORE_CONNECTION_TIMEOUT=2000 REDIS_EVENT_STORE_READ_TIMEOUT=2000 REDIS_EVENT_STORE_USE_POOLING=true REDIS_EVENT_STORE_MAX_POOL_SIZE=8 REDIS_EVENT_STORE_MIN_POOL_SIZE=2 # Cache Configuration REDIS_CACHE_HOST=localhost REDIS_CACHE_PORT=6379 REDIS_CACHE_PASSWORD= REDIS_CACHE_DATABASE=1 # External port for multiple developers (change if needed) REDIS_EXTERNAL_PORT=6379 # Production Redis Password (for docker-compose.prod.yml) REDIS_PASSWORD=redis-production-password-change-me # ============================================================================= # 4. SECURITY CONFIGURATION # ============================================================================= JWT_SECRET=meldestelle-jwt-secret-key-for-development-change-in-production JWT_ISSUER=meldestelle-api JWT_AUDIENCE=meldestelle-clients JWT_REALM=meldestelle API_KEY=meldestelle-api-key-for-development # ============================================================================= # 5. KEYCLOAK CONFIGURATION # ============================================================================= KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin KC_DB=postgres KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak KC_DB_USERNAME=meldestelle KC_DB_PASSWORD=meldestelle # Production Keycloak hostname (for docker-compose.prod.yml) KC_HOSTNAME=auth.meldestelle.local # ============================================================================= # 6. SERVICE DISCOVERY (Consul) # ============================================================================= CONSUL_HOST=consul CONSUL_PORT=8500 SERVICE_DISCOVERY_ENABLED=true SERVICE_DISCOVERY_REGISTER_SERVICES=true SERVICE_DISCOVERY_HEALTH_CHECK_PATH=/health SERVICE_DISCOVERY_HEALTH_CHECK_INTERVAL=10 # ============================================================================= # 7. MESSAGING (Kafka) # ============================================================================= ZOOKEEPER_CLIENT_PORT=2181 KAFKA_BROKER_ID=1 KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 # ============================================================================= # 8. MONITORING # ============================================================================= # Grafana Configuration GF_SECURITY_ADMIN_USER=admin GF_SECURITY_ADMIN_PASSWORD=admin GF_USERS_ALLOW_SIGN_UP=false # Metrics Authentication METRICS_AUTH_USERNAME=admin METRICS_AUTH_PASSWORD=metrics # Production hostnames (for docker-compose.prod.yml) GRAFANA_HOSTNAME=grafana.meldestelle.local PROMETHEUS_HOSTNAME=prometheus.meldestelle.local # ============================================================================= # 9. LOGGING CONFIGURATION # ============================================================================= LOGGING_LEVEL=DEBUG LOGGING_REQUESTS=true LOGGING_RESPONSES=true LOGGING_REQUEST_HEADERS=true LOGGING_REQUEST_BODY=true LOGGING_RESPONSE_HEADERS=true LOGGING_RESPONSE_BODY=true LOGGING_STRUCTURED=true LOGGING_CORRELATION_ID=true LOGGING_REQUEST_ID_HEADER=X-Request-ID # ============================================================================= # 10. CORS AND RATE LIMITING # ============================================================================= SERVER_CORS_ENABLED=true SERVER_CORS_ALLOWED_ORIGINS=* RATELIMIT_ENABLED=true RATELIMIT_GLOBAL_LIMIT=100 RATELIMIT_GLOBAL_PERIOD_MINUTES=1 RATELIMIT_INCLUDE_HEADERS=true # ============================================================================= # DEVELOPMENT NOTES # ============================================================================= # For multiple developers working simultaneously, adjust these ports: # # Developer 1 (Standard): # API_PORT=8081 # POSTGRES_EXTERNAL_PORT=5432 # REDIS_EXTERNAL_PORT=6379 # # Developer 2: # API_PORT=8082 # POSTGRES_EXTERNAL_PORT=5433 # REDIS_EXTERNAL_PORT=6380 # # Developer 3: # API_PORT=8083 # POSTGRES_EXTERNAL_PORT=5434 # REDIS_EXTERNAL_PORT=6381