Umgebungsvariablen (.env)
Umgebungsvariablen (.env) sind Konfigurationswerte, die außerhalb des Quellcodes als Schlüssel-Wert-Paare gespeichert werden. Sie ermöglichen es, sensible Informationen wie Datenbankzugänge oder API-Schlüssel sicher von der Anwendungslogik zu trennen.
Ausführliche Erklärung
Umgebungsvariablen sind Werte, die das Betriebssystem oder die Laufzeitumgebung einer Anwendung zur Verfügung stellt. Typische Beispiele sind Datenbank-URLs, API-Schlüssel, Debug-Modi oder Verbindungsparameter zu externen Services. Sie werden zur Laufzeit aus der Umgebung eingelesen, sodass derselbe Code in verschiedenen Umgebungen – etwa lokal, im Staging oder in der Produktion – ohne Änderungen funktioniert.
Die .env-Datei ist dabei eine weit verbreitete Konvention: eine einfache Textdatei im Format KEY=VALUE, die von speziellen Bibliotheken (wie dotenv für Node.js oder python-dotenv für Python) eingelesen und in die Laufzeitumgebung der Anwendung geladen wird. Damit entfällt das Hardcodieren sensibler Daten im Quellcode, was sowohl die Sicherheit erhöht als auch die Verwaltung verschiedener Umgebungen vereinfacht.
Für KMU ist die saubere Trennung von Code und Konfiguration entscheidend: Sie verhindert, dass Zugangsdaten versehentlich in Versionskontrollsysteme wie Git eingecheckt und dadurch öffentlich zugänglich werden. Gleichzeitig ermöglicht sie flexible Deployments, da unterschiedliche Umgebungen einfach durch angepasste Variablen gesteuert werden können, ohne den Anwendungscode zu ändern.
Wichtig ist jedoch: Eine .env-Datei ist kein vollwertiges Secret-Management. In produktiven Umgebungen sollten sensible Werte idealerweise über die Infrastruktur (Cloud-Provider-Secrets, Container-Umgebungsvariablen, dedizierte Secret-Manager wie HashiCorp Vault oder Infisical) verwaltet werden. Die .env-Datei eignet sich vor allem für die lokale Entwicklung und muss strikt aus Repositories ausgeschlossen werden – üblicherweise über .gitignore.
Praxisbeispiel
Ein österreichisches IT-Beratungsunternehmen mit 12 Mitarbeitenden entwickelt eine Webanwendung zur Kundenverwaltung. Lokal arbeitet jede Entwicklerin mit einer SQLite-Testdatenbank, im Staging-System läuft eine PostgreSQL-Datenbank, in der Produktion eine verwaltete Cloud-Datenbank. Statt drei verschiedene Code-Versionen zu pflegen, nutzt das Team Umgebungsvariablen: In der .env-Datei steht lokal DATABASE_URL=sqlite:///local.db, im Staging wird die Variable per Container auf die Test-PostgreSQL gesetzt, in Produktion auf die Cloud-Instanz. Der Code bleibt identisch, nur die Umgebung unterscheidet sich.
Code-Beispiel
# Beispiel .env-Datei (lokal, NICHT in Git!)
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb
API_KEY=sk_test_abc123xyz
APP_ENV=development
DEBUG=true
# Node.js: Laden mit dotenv
require('dotenv').config();
const dbUrl = process.env.DATABASE_URL;
# Python: Laden mit python-dotenv
from dotenv import load_dotenv
import os
load_dotenv()
db_url = os.getenv('DATABASE_URL')