Vzhled
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:

Postup nastavení na novém serveru
Při instalaci nového serveru postupujte podle těchto kroků:
- Vytvořte soubor: Zkopírujte předlohu příkazem
cp .env.example .env. - Vygenerujte tajné klíče: Každou tajnou hodnotu vytvořte příkazem
openssl rand -base64 32. - 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). - Zabezpečte soubor: Nastavte oprávnění příkazem
chmod 600 .env. - Uložte údaje do Passboltu: Všechna hesla a klíče bezpečně zaznamenejte.
- Odstraňte počáteční heslo: Po prvním úspěšném startu systému řádek
ADMIN_PASSWORDze souboru.envsmažte.
Pole a nastavení
Databáze PostgreSQL
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
POSTGRES_DB | Název databáze v kontejneru | Ne | V Docker Compose nastaveno na strapi. |
POSTGRES_USER | Uživatel databáze | Ne | V Docker Compose nastaveno na strapi. |
POSTGRES_PASSWORD | Heslo k databázi PostgreSQL | Ano | Vygenerujte pomocí openssl rand -base64 32. |
Bezpečnostní klíče jádra Strapi
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
APP_KEYS | Klíče pro podepisování cookies relací | Ano | Čtyři řetězce oddělené čárkou, z openssl rand -base64 32. |
API_TOKEN_SALT | Sůl pro generování API tokenů | Ano | Unikátní řetězec vygenerovaný přes openssl. |
ADMIN_JWT_SECRET | Klíč pro JWT tokeny administrace | Ano | Slouží k ověřování přihlášených uživatelů administrace. |
TRANSFER_TOKEN_SALT | Sůl pro transfer tokeny | Ano | Požadováno jádrem Strapi pro přenos dat. |
ENCRYPTION_KEY | Klíč pro šifrování dat v databázi | Ano | Vygenerujte 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:
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
ADMIN_EMAIL | E-mail prvního superadmina | Ano (první start) | Slouží pro přihlášení hlavního správce. |
ADMIN_PASSWORD | Heslo prvního superadmina | Ano (první start) | Předává se jako Docker secret. Po startu z .env smažte. |
ADMIN_FIRSTNAME | Křestní jméno superadmina | Ne | Výchozí hodnota je Admin. |
ADMIN_LASTNAME | Příjmení superadmina | Ne | Výchozí hodnota je NZ. |
Síťové adresy a rozhraní
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
CMS_HOST | Doména administrace bez protokolu | Ano | Např. cms.lab.navit.cz. Pravidlo pro Caddy a Traefik. |
CMS_PUBLIC_URL | Veřejná adresa CMS s protokolem | Ano | Např. https://${CMS_HOST}. Prohlížeč z ní načítá média. |
CMS_URL | Interní adresa CMS v síti Dockeru | Ne | Výchozí http://cms:1337. Propojuje web s CMS. |
PUBLIC_URL | Veřejná adresa předaná kontejneru Strapi | Ne | Přebírá hodnotu ${CMS_PUBLIC_URL}. |
HOST | Rozhraní pro poslech v kontejneru | Ne | Výchozí hodnota je 0.0.0.0. |
PORT | Port aplikace v kontejneru | Ne | Výchozí hodnota je 1337. |
TRUST_PROXY | Příznak běhu za reverzní proxy | Ne | Výchozí true. Nutné pro klientské IP a Secure cookies. |
STRAPI_TELEMETRY_DISABLED | Vypnutí telemetrie | Ne | Výchozí true. Vypíná sběr dat Strapi. |
Domény škol a webový frontend
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
SITE_BASE_DOMAIN | Základní doména platformy | Ano | Weby bez vlastní domény běží na <slug>.<SITE_BASE_DOMAIN>. |
DEFAULT_SCHOOL_SLUG | Výchozí škola pro localhost a IP | Ne | Jen pro vývoj a testy. Na produkci nechte prázdné. |
SITE_HOSTS | Domény škol pro Caddy oddělené mezerou | Ano (produkce) | Caddy pro ně automaticky vystavuje TLS certifikáty. |
ACME_EMAIL | Kontaktní e-mail pro Let's Encrypt | Ano (produkce) | Pro oznámení certifikační autority. |
SITE_NOINDEX | Zákaz indexace webu vyhledávači | Ne | Hodnota 1 odešle X-Robots-Tag: noindex. Pro demo a staging. |
Provozní limity a kvóty
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
RATE_LIMIT_API | Limit za minutu na IP pro /api | Ne | Výchozí hodnota je 300. Interní dotazy se nepočítají. |
RATE_LIMIT_ADMIN | Limit za minutu na IP pro administraci | Ne | Výchozí hodnota je 600. Pro nahrávání a správu obsahu. |
RATE_LIMIT_LOGIN | Limit pokusů o přihlášení za 5 minut na IP | Ne | Výchozí hodnota je 20. Ochrana před útoky na heslo. |
WEB_RATE_LIMIT_PER_MIN | Limit za minutu na IP na webu | Ne | Výchozí hodnota je 1200. Limit v proxy.ts. |
SCHOOL_MEDIA_QUOTA_MB | Kvóta médií školy v MB | Ne | Výchozí hodnota je 2048 (2 GB na školu). |
UPLOAD_MAX_MB | Maximální velikost souboru v MB | Ne | Výchozí hodnota je 50. Limit pro nahrávání souborů. |
CORS_ORIGINS | Povolené domény pro CORS oddělené čárkou | Ne | Vý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 envPří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_PASSWORDsmazat. - 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_KEYSneboSITE_HOSTS), uzavřete ji do uvozovek.

