Skip to content

Proměnné prostředí ​

Tato stránka shrnuje všechny konfigurační proměnné prostředí pro platformu Než zazvoní CMS. Popisuje význam jednotlivých voleb, jejich výchozí hodnoty a pravidla pro bezpečné nakládání s konfigurací. Je určena pro správce platformy.

Konfigurace služeb (PostgreSQL, Strapi, Next.js a Caddy) je uložena v jediném souboru .env v kořenovém adresáři projektu.

Kde soubor najdete ​

Konfigurační soubor leží v kořenovém adresáři projektu na serveru (obvykle /opt/webyskol/.env).

V repozitáři je k dispozici vzorový soubor .env.example, který obsahuje strukturu proměnných bez tajných hodnot. Skutečný soubor .env nepatří do gitu. Na serveru musí mít nastavena přístupová práva chmod 600. Všechna vygenerovaná hesla a klíče evidujte ve správci hesel Passbolt.

Na následujícím snímku vidíte přehled sekce Nastavení v administraci:

Přehled nastavení v administraci

Postup nastavení na novém serveru ​

Při instalaci nového serveru postupujte podle těchto kroků:

  1. Vytvořte soubor: Zkopírujte předlohu příkazem cp .env.example .env.
  2. Vygenerujte tajné klíče: Každou tajnou hodnotu vytvořte příkazem openssl rand -base64 32.
  3. Nastavte domény: Vyplňte domény pro administraci (CMS_HOST), veřejnou adresu (CMS_PUBLIC_URL), základní doménu (SITE_BASE_DOMAIN) a seznam domén škol (SITE_HOSTS).
  4. Zabezpečte soubor: Nastavte oprávnění příkazem chmod 600 .env.
  5. Uložte údaje do Passboltu: Všechna hesla a klíče bezpečně zaznamenejte.
  6. Odstraňte počáteční heslo: Po prvním úspěšném startu systému řádek ADMIN_PASSWORD ze souboru .env smažte.

Pole a nastavení ​

Databáze PostgreSQL ​

PoleK čemu sloužíPovinnéTip
POSTGRES_DBNázev databáze v kontejneruNeV Docker Compose nastaveno na strapi.
POSTGRES_USERUživatel databázeNeV Docker Compose nastaveno na strapi.
POSTGRES_PASSWORDHeslo k databázi PostgreSQLAnoVygenerujte pomocí openssl rand -base64 32.

Bezpečnostní klíče jádra Strapi ​

PoleK čemu sloužíPovinnéTip
APP_KEYSKlíče pro podepisování cookies relacíAnoČtyři řetězce oddělené čárkou, z openssl rand -base64 32.
API_TOKEN_SALTSůl pro generování API tokenůAnoUnikátní řetězec vygenerovaný přes openssl.
ADMIN_JWT_SECRETKlíč pro JWT tokeny administraceAnoSlouží k ověřování přihlášených uživatelů administrace.
TRANSFER_TOKEN_SALTSůl pro transfer tokenyAnoPožadováno jádrem Strapi pro přenos dat.
ENCRYPTION_KEYKlíč pro šifrování dat v databáziAnoVygenerujte pomocí openssl rand -base64 32.

Prvotní inicializace administrátora ​

Platí pouze při prvním spuštění systému na prázdné databázi:

PoleK čemu sloužíPovinnéTip
ADMIN_EMAILE-mail prvního superadminaAno (první start)Slouží pro přihlášení hlavního správce.
ADMIN_PASSWORDHeslo prvního superadminaAno (první start)Předává se jako Docker secret. Po startu z .env smažte.
ADMIN_FIRSTNAMEKřestní jméno superadminaNeVýchozí hodnota je Admin.
ADMIN_LASTNAMEPříjmení superadminaNeVýchozí hodnota je NZ.

Síťové adresy a rozhraní ​

PoleK čemu sloužíPovinnéTip
CMS_HOSTDoména administrace bez protokoluAnoNapř. cms.lab.navit.cz. Pravidlo pro Caddy a Traefik.
CMS_PUBLIC_URLVeřejná adresa CMS s protokolemAnoNapř. https://${CMS_HOST}. Prohlížeč z ní načítá média.
CMS_URLInterní adresa CMS v síti DockeruNeVýchozí http://cms:1337. Propojuje web s CMS.
PUBLIC_URLVeřejná adresa předaná kontejneru StrapiNePřebírá hodnotu ${CMS_PUBLIC_URL}.
HOSTRozhraní pro poslech v kontejneruNeVýchozí hodnota je 0.0.0.0.
PORTPort aplikace v kontejneruNeVýchozí hodnota je 1337.
TRUST_PROXYPříznak běhu za reverzní proxyNeVýchozí true. Nutné pro klientské IP a Secure cookies.
STRAPI_TELEMETRY_DISABLEDVypnutí telemetrieNeVýchozí true. Vypíná sběr dat Strapi.

Domény škol a webový frontend ​

PoleK čemu sloužíPovinnéTip
SITE_BASE_DOMAINZákladní doména platformyAnoWeby bez vlastní domény běží na <slug>.<SITE_BASE_DOMAIN>.
DEFAULT_SCHOOL_SLUGVýchozí škola pro localhost a IPNeJen pro vývoj a testy. Na produkci nechte prázdné.
SITE_HOSTSDomény škol pro Caddy oddělené mezerouAno (produkce)Caddy pro ně automaticky vystavuje TLS certifikáty.
ACME_EMAILKontaktní e-mail pro Let's EncryptAno (produkce)Pro oznámení certifikační autority.
SITE_NOINDEXZákaz indexace webu vyhledávačiNeHodnota 1 odešle X-Robots-Tag: noindex. Pro demo a staging.

Provozní limity a kvóty ​

PoleK čemu sloužíPovinnéTip
RATE_LIMIT_APILimit za minutu na IP pro /apiNeVýchozí hodnota je 300. Interní dotazy se nepočítají.
RATE_LIMIT_ADMINLimit za minutu na IP pro administraciNeVýchozí hodnota je 600. Pro nahrávání a správu obsahu.
RATE_LIMIT_LOGINLimit pokusů o přihlášení za 5 minut na IPNeVýchozí hodnota je 20. Ochrana před útoky na heslo.
WEB_RATE_LIMIT_PER_MINLimit za minutu na IP na webuNeVýchozí hodnota je 1200. Limit v proxy.ts.
SCHOOL_MEDIA_QUOTA_MBKvóta médií školy v MBNeVýchozí hodnota je 2048 (2 GB na školu).
UPLOAD_MAX_MBMaximální velikost souboru v MBNeVýchozí hodnota je 50. Limit pro nahrávání souborů.
CORS_ORIGINSPovolené domény pro CORS oddělené čárkouNeVýchozí hodnota odpovídá ${PUBLIC_URL}.

Tipy a doporučení ​

Kontrola souborů před verzováním

Před potvrzením změn v gitu ověřte, že konfigurační soubor není sledován:

sh
git ls-files | grep -i env

Příkaz nesmí vrátit žádný soubor s reálnými produkčními hodnotami.

Smazání počátečního hesla

Hodnota ADMIN_PASSWORD slouží pouze pro první inicializaci prázdné databáze. Jakmile je účet vytvořen, heslo zůstává uloženo v databázi. Ponechání hodnoty v souboru .env je bezpečnostní riziko.

Časté chyby ​

  • Ponechání hesla správce v souboru: Po prvním spuštění zapomene správce řádek s ADMIN_PASSWORD smazat.
  • Vyplnění DEFAULT_SCHOOL_SLUG na produkci: Při vyplnění systém zobrazí danou školu při přístupu přes IP adresu nebo neznámou doménu. Na produkci nechte hodnotu vždy prázdnou.
  • Zadání protokolu do CMS_HOST nebo SITE_HOSTS: Tyto proměnné vyžadují čistá doménová jména bez https:// a bez koncových lomítek.
  • Chybějící uvozovky u hodnot s mezerami či čárkami: Pokud hodnota obsahuje čárky nebo mezery (např. APP_KEYS nebo SITE_HOSTS), uzavřete ji do uvozovek.

Související ​