Zmienne środowiskowe
Trzy wartości wymagane, kilka opcjonalnych i te zmienne, które należą do Ciebie, a nie do CMS-a.
Aplikacja cmssy czyta dwa rodzaje wartości: to, co daje workspace, i to, o czym decyduje Twoja aplikacja. Cała ta strona jest o trzymaniu ich osobno.
Wymagane
Skopiuj je z Settings → Headless w panelu albo pozwól, żeby npx @cmssy/cli link zapisał je w .env.local za Ciebie.
| Zmienna | Czym jest |
|---|---|
CMSSY_ORG_SLUG | Slug Twojej organizacji. Siedzi w ścieżce dostawczej - dlatego slug workspace'u musi być unikalny tylko w obrębie organizacji. |
CMSSY_WORKSPACE_SLUG | Workspace, którego treść renderuje ta aplikacja. |
CMSSY_DRAFT_SECRET | Chroni podgląd roboczy i tryb edycji. Generowany per workspace - to nie jest string, który wymyślasz. |
Przekaż je do defineCmssyConfig surowo. Fallback ?? "" zamienia brakującą zmienną w pustą, a błąd wychodzi później, w niezwiązanym miejscu.
Opcjonalne i kiedy ich potrzebujesz
| Zmienna | Kiedy |
|---|---|
CMSSY_API_TOKEN | Token cs_. Wymagany przez nakładkę dev draft ?cmssyDev=1 i czytany przez cmssy link. Tylko development - zostawienie go nie zmienia tego, co widzą odwiedzający. |
CMSSY_API_URL | Nadpisanie endpointu dostawczego. Domyślnie https://api.cmssy.io; ustaw tylko przy self-hoście albo backendzie stagingowym. |
CMSSY_EDITOR_ORIGIN | Origin panelu, który może osadzić Twój serwis w ramce. Domyślnie chmura cmssy; ustaw tylko przy self-hoście panelu, bo steruje i mostem postMessage, i CSP frame-ancestors. |
Twoje, nie CMS-a
To nie są ustawienia cmssy. cmssy trzyma treść kanoniczną i nigdy Twojej domeny, Twoich ID analityki ani sekretów Twoich route'ów.
| Zmienna | Czym jest |
|---|---|
CMSSY_REVALIDATE_SECRET | Chroni Twój własny route /api/revalidate. Wartość wymyślasz sam i tę samą podajesz webhookowi content.changed - zobacz webhooki. |
NEXT_PUBLIC_SITE_URL | Twój publiczny origin. Z niego buduje się kanoniczne URL-e, alternatywy hreflang i sitemapę. |
NEXT_PUBLIC_GA_ID, NEXT_PUBLIC_GTM_ID | Analityka i tag manager. Warunkuj na nich renderowanie, żeby preview deployment i lokalne uruchomienia nie wchodziły do Twoich liczb - zobacz skrypty. |
Serwerowe znaczy serwerowe
Każda zmienna CMSSY_* powyżej jest serwerowa. Next wysyła do przeglądarki tylko NEXT_PUBLIC_*, więc komponent kliencki czytający konfigurację nie dostaje wartości błędnej - dostaje żadnej.
To właśnie ta awaria, na którą ludzie trafiają: defineCmssyConfig krzyczy o brakujących zmiennych, choć zmienne są ustawione poprawnie. Przyczyną jest import, nie środowisko - komponent "use client" wyciągnął wartość z modułu czytającego konfigurację. Typy są w porządku, są wymazywane. Wartości wciągają process.env do bundla.
Trzymaj sekrety poza repozytorium, a na produkcji ustaw te same zmienne u swojego hostingu (Vercel project settings albo odpowiednik).
Następne kroki
- Instalacja - tam używasz ich pierwszy raz.
- Podgląd roboczy - co naprawdę odblokowują draft secret i token API.
- CLI -
cmssy linkzapisuje wymagane trzy i je weryfikuje.