Umgebungsvariablen
Drei erforderliche Werte, ein paar optionale und die Variablen, die dir gehören statt dem CMS.
Eine cmssy-App liest zwei Arten von Werten: was der Workspace vorgibt und was deine App selbst entscheidet. Diese Seite dreht sich nur darum, beides auseinanderzuhalten.
Erforderlich
Kopiere sie aus Settings → Headless im Dashboard, oder lass sie npx @cmssy/cli link in .env.local schreiben.
| Variable | Was sie ist |
|---|---|
CMSSY_ORG_SLUG | Der Slug deiner Organisation. Er steht im Delivery-Pfad - deshalb muss ein Workspace-Slug nur innerhalb seiner Organisation eindeutig sein. |
CMSSY_WORKSPACE_SLUG | Der Workspace, dessen Inhalte diese App rendert. |
CMSSY_DRAFT_SECRET | Schützt Entwurfsvorschau und Edit-Modus. Pro Workspace generiert - kein selbst ausgedachter String. |
Gib sie roh an defineCmssyConfig. Ein ?? ""-Fallback macht aus einer fehlenden Variable eine leere, und der Fehler taucht später an ganz anderer Stelle auf.
Optional, und wann du sie brauchst
| Variable | Wann |
|---|---|
CMSSY_API_TOKEN | Ein cs_-Token. Nötig für das Dev-Draft-Overlay ?cmssyDev=1 und von cmssy link gelesen. Nur für die Entwicklung - gesetzt zu lassen ändert nichts an dem, was Besucher sehen. |
CMSSY_API_URL | Überschreibt den Delivery-Endpunkt. Standard ist https://api.cmssy.io; nur beim Self-Hosting oder für ein Staging-Backend setzen. |
CMSSY_EDITOR_ORIGIN | Der Admin-Origin, der deine Site framen darf. Standard ist die cmssy-Cloud; nur setzen, wenn du den Admin selbst hostest - er steuert die postMessage-Bridge und die CSP frame-ancestors. |
Deine, nicht die des CMS
Das sind keine cmssy-Einstellungen. cmssy speichert kanonische Inhalte, niemals deine Domain, deine Analytics-IDs oder deine Route-Secrets.
| Variable | Was sie ist |
|---|---|
CMSSY_REVALIDATE_SECRET | Schützt deine eigene /api/revalidate-Route. Du erfindest den Wert und gibst denselben dem content.changed-Webhook - siehe Webhooks. |
NEXT_PUBLIC_SITE_URL | Dein öffentlicher Origin. Canonical-URLs, hreflang-Alternativen und die Sitemap entstehen daraus. |
NEXT_PUBLIC_GA_ID, NEXT_PUBLIC_GTM_ID | Analytics und Tag Manager. Rendere sie nur, wenn gesetzt, damit Preview-Deployments und lokale Läufe nicht in deinen Zahlen landen - siehe Skripte. |
Server-only heißt server-only
Jede CMSSY_*-Variable oben ist serverseitig. Next liefert nur NEXT_PUBLIC_* an den Browser - eine Client-Komponente, die die Config liest, bekommt also keinen falschen Wert, sondern gar keinen.
Das ist der Fehler, dem man begegnet: defineCmssyConfig beschwert sich über fehlende Variablen, obwohl sie korrekt gesetzt sind. Ursache ist ein Import, nicht die Umgebung - eine "use client"-Komponente hat einen Wert aus einem Modul gezogen, das die Config liest. Typen sind unkritisch, sie werden gelöscht. Werte ziehen process.env ins Bundle.
Halte Secrets aus der Versionskontrolle heraus und setze dieselben Variablen in deinem Hosting (Vercel-Projekteinstellungen oder Äquivalent).
Nächste Schritte
- Installation - wo sie zuerst gebraucht werden.
- Entwurfsvorschau - was Draft-Secret und API-Token tatsächlich freischalten.
- CLI -
cmssy linkschreibt die drei erforderlichen und prüft sie.