meldestelle/docs/development/environment-variables-de.md
stefan e7b18da45d refactor: Migrate from monolithic to modular architecture
1. **Docker-Compose für Entwicklung optimieren**
2. **Umgebungsvariablen für lokale Entwicklung**
3. **Service-Abhängigkeiten**
4. **Docker-Compose für Produktion**
5. **Dokumentation**
2025-07-24 14:20:48 +02:00

9.7 KiB

Umgebungsvariablen für die Entwicklung

Übersicht

Dieses Dokument beschreibt alle erforderlichen Umgebungsvariablen für die lokale Entwicklung der Meldestelle-Anwendung. Die Variablen sind in der .env-Datei im Projektverzeichnis definiert und werden automatisch von Docker Compose geladen.

Setup

  1. Kopieren Sie die .env-Datei:

    # Die .env-Datei ist bereits im Projektverzeichnis vorhanden
    # Passen Sie die Werte nach Bedarf für Ihre lokale Umgebung an
    
  2. Starten Sie die Services:

    docker-compose up -d
    
  3. Überprüfen Sie die Konfiguration:

    # Überprüfen Sie, ob alle Services laufen
    docker-compose ps
    
    # Überprüfen Sie die Logs
    docker-compose logs -f
    

Umgebungsvariablen-Kategorien

1. Anwendungskonfiguration

Variable Beschreibung Standardwert Erforderlich
API_HOST Host-Adresse für den API-Server 0.0.0.0 Ja
API_PORT Port für den API-Server 8081 Ja
APP_NAME Name der Anwendung Meldestelle Nein
APP_VERSION Version der Anwendung 1.0.0 Nein
APP_DESCRIPTION Beschreibung der Anwendung Pferdesport Meldestelle System Nein
APP_ENVIRONMENT Aktuelle Umgebung development Ja

2. Datenbank-Konfiguration (PostgreSQL)

Variable Beschreibung Standardwert Erforderlich
DB_HOST PostgreSQL Host localhost Ja
DB_PORT PostgreSQL Port 5432 Ja
DB_NAME Datenbankname meldestelle Ja
DB_USER Datenbankbenutzer meldestelle Ja
DB_PASSWORD Datenbankpasswort meldestelle Ja
DB_MAX_POOL_SIZE Maximale Anzahl Verbindungen im Pool 10 Nein
DB_MIN_POOL_SIZE Minimale Anzahl Verbindungen im Pool 5 Nein
DB_AUTO_MIGRATE Automatische Datenbankmigrationen true Nein

Docker-spezifische Variablen:

  • POSTGRES_USER: PostgreSQL-Container Benutzer
  • POSTGRES_PASSWORD: PostgreSQL-Container Passwort
  • POSTGRES_DB: PostgreSQL-Container Datenbankname

3. Redis-Konfiguration

Event Store

Variable Beschreibung Standardwert Erforderlich
REDIS_EVENT_STORE_HOST Redis Host für Event Store localhost Ja
REDIS_EVENT_STORE_PORT Redis Port für Event Store 6379 Ja
REDIS_EVENT_STORE_PASSWORD Redis Passwort (leer) Nein
REDIS_EVENT_STORE_DATABASE Redis Datenbank-Index 0 Nein
REDIS_EVENT_STORE_CONNECTION_TIMEOUT Verbindungs-Timeout (ms) 2000 Nein
REDIS_EVENT_STORE_READ_TIMEOUT Lese-Timeout (ms) 2000 Nein
REDIS_EVENT_STORE_USE_POOLING Verbindungs-Pooling aktivieren true Nein
REDIS_EVENT_STORE_MAX_POOL_SIZE Maximale Pool-Größe 8 Nein
REDIS_EVENT_STORE_MIN_POOL_SIZE Minimale Pool-Größe 2 Nein

Cache

Variable Beschreibung Standardwert Erforderlich
REDIS_CACHE_HOST Redis Host für Cache localhost Ja
REDIS_CACHE_PORT Redis Port für Cache 6379 Ja
REDIS_CACHE_PASSWORD Redis Passwort für Cache (leer) Nein
REDIS_CACHE_DATABASE Redis Datenbank-Index für Cache 1 Nein

4. Sicherheitskonfiguration

Variable Beschreibung Standardwert Erforderlich
JWT_SECRET JWT-Signatur-Schlüssel meldestelle-jwt-secret-key-for-development-change-in-production Ja
JWT_ISSUER JWT-Aussteller meldestelle-api Ja
JWT_AUDIENCE JWT-Zielgruppe meldestelle-clients Ja
JWT_REALM JWT-Realm meldestelle Ja
API_KEY API-Schlüssel für interne Services meldestelle-api-key-for-development Ja

5. Keycloak-Konfiguration

Variable Beschreibung Standardwert Erforderlich
KEYCLOAK_ADMIN Keycloak Admin-Benutzer admin Ja
KEYCLOAK_ADMIN_PASSWORD Keycloak Admin-Passwort admin Ja
KC_DB Keycloak Datenbanktyp postgres Ja
KC_DB_URL Keycloak Datenbank-URL jdbc:postgresql://postgres:5432/keycloak Ja
KC_DB_USERNAME Keycloak Datenbankbenutzer meldestelle Ja
KC_DB_PASSWORD Keycloak Datenbankpasswort meldestelle Ja

6. Service Discovery (Consul)

Variable Beschreibung Standardwert Erforderlich
CONSUL_HOST Consul Host consul Ja
CONSUL_PORT Consul Port 8500 Ja
SERVICE_DISCOVERY_ENABLED Service Discovery aktivieren true Nein
SERVICE_DISCOVERY_REGISTER_SERVICES Services registrieren true Nein
SERVICE_DISCOVERY_HEALTH_CHECK_PATH Health Check Pfad /health Nein
SERVICE_DISCOVERY_HEALTH_CHECK_INTERVAL Health Check Intervall (s) 10 Nein

7. Messaging (Kafka)

Variable Beschreibung Standardwert Erforderlich
ZOOKEEPER_CLIENT_PORT Zookeeper Client Port 2181 Ja
KAFKA_BROKER_ID Kafka Broker ID 1 Ja
KAFKA_ZOOKEEPER_CONNECT Zookeeper Verbindung zookeeper:2181 Ja
KAFKA_ADVERTISED_LISTENERS Kafka Listener PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 Ja
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP Security Protocol Map PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT Ja
KAFKA_INTER_BROKER_LISTENER_NAME Inter-Broker Listener PLAINTEXT Ja
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR Replikationsfaktor 1 Ja

8. Monitoring

Variable Beschreibung Standardwert Erforderlich
GF_SECURITY_ADMIN_USER Grafana Admin-Benutzer admin Ja
GF_SECURITY_ADMIN_PASSWORD Grafana Admin-Passwort admin Ja
GF_USERS_ALLOW_SIGN_UP Grafana Benutzerregistrierung false Nein
METRICS_AUTH_USERNAME Metrics-Endpunkt Benutzer admin Ja
METRICS_AUTH_PASSWORD Metrics-Endpunkt Passwort metrics Ja

9. Logging-Konfiguration

Variable Beschreibung Standardwert Erforderlich
LOGGING_LEVEL Log-Level DEBUG Nein
LOGGING_REQUESTS Request-Logging aktivieren true Nein
LOGGING_RESPONSES Response-Logging aktivieren true Nein
LOGGING_REQUEST_HEADERS Request-Header loggen true Nein
LOGGING_REQUEST_BODY Request-Body loggen true Nein
LOGGING_RESPONSE_HEADERS Response-Header loggen true Nein
LOGGING_RESPONSE_BODY Response-Body loggen true Nein
LOGGING_STRUCTURED Strukturiertes Logging true Nein
LOGGING_CORRELATION_ID Korrelations-ID einschließen true Nein
LOGGING_REQUEST_ID_HEADER Request-ID Header Name X-Request-ID Nein

10. CORS und Rate Limiting

Variable Beschreibung Standardwert Erforderlich
SERVER_CORS_ENABLED CORS aktivieren true Nein
SERVER_CORS_ALLOWED_ORIGINS Erlaubte CORS-Origins * Nein
RATELIMIT_ENABLED Rate Limiting aktivieren true Nein
RATELIMIT_GLOBAL_LIMIT Globales Rate Limit 100 Nein
RATELIMIT_GLOBAL_PERIOD_MINUTES Rate Limit Zeitraum (min) 1 Nein
RATELIMIT_INCLUDE_HEADERS Rate Limit Header einschließen true Nein

Entwicklungsumgebung-spezifische Einstellungen

Debug-Modus

DEBUG_MODE=true
DEV_HOT_RELOAD=true

Verschiedene Ports für mehrere Entwickler

Wenn mehrere Entwickler gleichzeitig arbeiten, können Sie die Ports anpassen:

# Entwickler 1 (Standard)
API_PORT=8081
POSTGRES_EXTERNAL_PORT=5432
REDIS_EXTERNAL_PORT=6379

# Entwickler 2
API_PORT=8082
POSTGRES_EXTERNAL_PORT=5433
REDIS_EXTERNAL_PORT=6380

Sicherheitshinweise

⚠️ Wichtige Sicherheitshinweise:

  1. Niemals Produktionsgeheimnisse in die Versionskontrolle einbinden
  2. JWT_SECRET in der Produktion ändern
  3. Starke Passwörter für Produktionsumgebungen verwenden
  4. API-Schlüssel regelmäßig rotieren
  5. Datenbankzugangsdaten sicher aufbewahren

Fehlerbehebung

Häufige Probleme

  1. Verbindungsfehler zu PostgreSQL:

    • Überprüfen Sie DB_HOST, DB_PORT, DB_USER, DB_PASSWORD
    • Stellen Sie sicher, dass der PostgreSQL-Container läuft
  2. Redis-Verbindungsfehler:

    • Überprüfen Sie REDIS_EVENT_STORE_HOST und REDIS_EVENT_STORE_PORT
    • Stellen Sie sicher, dass der Redis-Container läuft
  3. JWT-Authentifizierungsfehler:

    • Überprüfen Sie JWT_SECRET, JWT_ISSUER, JWT_AUDIENCE
    • Stellen Sie sicher, dass die Werte konsistent sind
  4. Port-Konflikte:

    • Ändern Sie die Port-Variablen, wenn andere Services die gleichen Ports verwenden

Logs überprüfen

# Alle Service-Logs anzeigen
docker-compose logs -f

# Spezifische Service-Logs
docker-compose logs -f postgres
docker-compose logs -f redis
docker-compose logs -f keycloak

Konfiguration validieren

# Docker Compose Konfiguration validieren
docker-compose config

# Umgebungsvariablen anzeigen
docker-compose config --services

Weitere Ressourcen