Skip to content

Environment

Umgebungsvariablen enthalten nur, was sich je Umgebung unterscheidet. Alles Projektfeste gehört in project.config.ts.

Das Schema wird über Astros astro:env deklariert und ist damit typisiert. Fehlt eine Pflichtvariable oder hat sie einen unzulässigen Wert, scheitert der Build.

Variablen

VariableWerteVorgabeZweck
PUBLIC_ENVIRONMENTproduction · preview · developmentdevelopmentSteuert Indexierbarkeit und das Laden von GTM (M5)
PUBLIC_TURNSTILE_SITE_KEYZeichenketteNur nötig bei forms.captcha: 'turnstile'

.env.example ist die Vorlage und enthält keine echten Werte. Eine lokale .env wird nicht versioniert.

Die Grenze zwischen öffentlich und geheim

Präfix PUBLIC_ bedeutet öffentlich

Jede Variable mit dem Präfix PUBLIC_ landet im Browser-Bundle und ist für jeden lesbar. Ein Geheimnis darf dieses Präfix niemals tragen.

Der Turnstile-Sitekey ist per Design öffentlich — er identifiziert das Widget. Der zugehörige Secret Key wird ausschließlich serverseitig zur Prüfung verwendet und liegt in der Konfiguration des Formular-Handlers auf dem Server, niemals im Repository.

Damit ergeben sich drei Orte für Werte:

OrtInhalt
project.config.tsProjektfeste, öffentliche Werte — versioniert
.env bzw. GitHub VariablesUmgebungsabhängige, öffentliche Werte
GitHub Secrets und serverseitige KonfigurationGeheimnisse — niemals im Repository

Verhalten je Umgebung

In production prüft der Build zusätzlich, ob die Konfiguration noch Platzhalter enthält — etwa eine site.url auf example.de — und ob ein konfiguriertes Captcha tatsächlich einen Sitekey hat. Beides bricht den Build ab.

In development und preview greifen diese Regeln nicht: Ein noch nicht fertig initialisiertes Projekt soll lokal baubar bleiben.

Nur production ist indexierbar

Jede andere Umgebung liefert auf allen Seiten noindex, nofollow und ein Disallow: / in der robots.txt aus. Ein Produktions-Deployment muss die Variable setzen — siehe Indexierung.