# Instalace na vlastní server

draften můžete provozovat na vlastním serveru. Pošta, koncepty i klíče pak
zůstávají u vás; ven jde jen to, co pošlete poskytovateli jazykového modelu
(nebo nic, když použijete lokální model).

Tahle stránka je přehled, jak je instalace postavená. Samotný postup je
v článku [Instalace krok za krokem](/cs/admin/installing).

## Balíček a licence

Každé vydání draftenu je jeden **balíček**, soubor `draften-<verze>.tar`.
Obsahuje obrazy všech služeb, soubory, které je spouštějí, podepsaný seznam
všeho uvnitř a příkaz `./draften`, kterým se instalace spravuje. Na serveru
nepotřebuje nic kromě Dockeru.

K provozu potřebujete **licenci** — soubor, který od nás dostanete a nahrajete
v rozhraní. Omezuje počet schránek a asistentů a její klíč slouží i ke
stahování nových vydání. Víc v článku [Licence](/cs/admin/licence).

## Z čeho se instalace skládá

Všechno běží v Dockeru přes `docker compose`:

| Služba | Co dělá |
|---|---|
| `db` | databáze MariaDB — drží všechno: nastavení, pokyny, zprávy, koncepty, šifrovaná tajemství. Z jiného stroje na ni nic nesahá |
| `worker` | čte schránky, volá modely, píše koncepty, učí se, spouští kroky průvodce. Může jich běžet víc |
| `web-blue`, `web-green` | webové rozhraní a API ve dvou barvách: jedna slouží, druhá čeká na další verzi — proto se aktualizuje bez výpadku |
| `proxy` | vstup zvenčí: přepíná mezi barvami webu a volitelně ukončuje HTTPS |
| `updater` | volitelně: provádí, co provozovatel zadá ve Správě instalace (aktualizace, návrat, počet procesů, výměna klíče, záloha) a každý den zálohuje databázi |
| `cloudflared` | volitelně: zveřejnění rozhraní přes Cloudflare Tunnel |

Rozhraní a worker spolu přímo nemluví — oba pracují se stejnou databází;
co potřebuje poštu nebo model, zařadí rozhraní do fronty úloh pro workera.

## Co budete potřebovat

- server x86-64 s Linuxem a Dockerem 24 nebo novějším (s pluginem compose),
  4 GB paměti a 20 GB disku,
- adresu, na které bude rozhraní dostupné, a u ní HTTPS — certifikát přímo
  v draftenu, nebo vaši reverzní proxy či tunel,
- přístup ke schránkám: registraci aplikace v Microsoft Entra, servisní účet
  Google Workspace nebo údaje k IMAP,
- API klíč k modelu (Anthropic, OpenAI) nebo vlastní OpenAI-kompatibilní server,
- licenci od nás.

## HTTPS

- **V draftenu**: dejte instalátoru certifikát a jeho klíč (PEM). draften pak
  poslouchá na portu 443 a z portu 80 přesměrovává. Obnovený certifikát
  nasadíte příkazem `./draften certificate nový.pem nový.key` bez ztráty
  jediného požadavku. Certifikát si obstaráváte sami (od certifikační autority
  nebo klientem ACME).
- **Před draftenem**: bez certifikátu poslouchá draften na `127.0.0.1:8085`
  a HTTPS ukončuje vaše proxy nebo tunel.

## Updater

Updater je volitelná služba, která provádí to, co provozovatel zadá ve
**Správě instalace → Instalace**: aktualizaci na novou verzi, návrat na
předchozí, změnu počtu procesů workeru, výměnu šifrovacího klíče a zálohu
databáze. Každý den navíc sám zálohuje databázi. Spouští k tomu tentýž
`./draften`, jaký byste spustili vy.

Updater má přístup k Dockeru, tedy práva roota na serveru. Rozhraní samo
k Dockeru nikdy nesahá — updateru jen zapíše žádost do databáze. Zapíná se při
instalaci (v `.env` je `COMPOSE_PROFILES=updater`); bez něj jde všechno
z příkazové řádky.

## Nastavení v `.env`

Soubor `.env` v adresáři instalace zapíše instalátor a čte ho jen jeho
vlastník. Drží infrastrukturu a tajemství; všechno o asistentech je
v databázi a nastavuje se v rozhraní.

| Proměnná | K čemu |
|---|---|
| `DRAFTEN_VERSION`, `DRAFTEN_EDITION` | verze, která běží, a edice (`onprem`) |
| `DB_ROOT_PASSWORD`, `DB_PASSWORD` | hesla databáze |
| `MASTER_KEY` | klíč, kterým jsou v databázi zašifrovaná tajemství (API klíče, přístupy ke schránkám, klienti pro přihlášení). **Uložte si kopii mimo server** |
| `MASTER_KEY_PREVIOUS` | předchozí klíč po jeho výměně, dokud jsou v `backups/` výpisy z doby před ní |
| `WEB_APP_SECRET` | náhodný řetězec pro podepisování relací |
| `WEB_PUBLIC_URL` | adresa, na které lidé rozhraní otevírají; z ní se skládají návratové adresy přihlášení |
| `WEB_BIND`, `DRAFTEN_TLS`, `WEB_TLS_BIND` | kde poslouchá HTTP a HTTPS |
| `COMPOSE_PROFILES` | volitelné služby: `updater`, `tunnel` |
| `DRAFTEN_BACKUPS` | kolik výpisů databáze před aktualizací držet v `backups/` (výchozí 3) |
| `DRAFTEN_DAILY_BACKUPS` | kolik denních záloh a záloh na požádání držet (výchozí 7; `0` denní zálohu vypne) |
| `DRAFTEN_BACKUP_AT`, `DRAFTEN_TIMEZONE` | čas denní zálohy a jeho pásmo (výchozí `01:00`, `Europe/Prague`); čas nastavený v rozhraní má přednost |
| `CLOUDFLARE_TUNNEL_TOKEN` | jen s Cloudflare Tunnelem |
| `INTERVAL_SECONDS`, `WORKER_CONCURRENCY` | výchozí interval kontrol a počet souběžných kontrol (lépe se nastavují v rozhraní) |
| `WORKER_REPLICAS` | kolik procesů `worker` běží na tomto stroji (výchozí 1), viz [Provoz a výkon](/cs/admin/operations) |

Hodnota se znakem `$` se v `.env` musí psát jako `$$` — jinak se část za
dolarem tiše ztratí. Klíče vygenerované příkazem `openssl rand -hex 32` dolar
nikdy neobsahují.

## Co kde leží

| | |
|---|---|
| `.env` | nastavení a tajemství instalace |
| `compose.yaml`, `proxy/` | jak kontejnery běží; každá aktualizace je nahradí |
| `backups/` | výpisy databáze: denní, na požádání a před aktualizacemi — kopírujte je mimo server |
| `data/` | log a reporty workera |
| `updates/` | balíčky čekající na instalaci; stahuje sem i updater |
| `NOTES.md` | co změnilo nainstalované vydání |

## Dál

- [Instalace krok za krokem](/cs/admin/installing),
- [Správa instalace](/cs/admin/installation-admin) — verze, licence, výchozí klíče
  a odesílatel, organizace,
- [Aktualizace přes updater](/cs/admin/updating-with-the-updater)
  a [z příkazové řádky](/cs/admin/updating),
- [Provoz a výkon](/cs/admin/operations),
- [Zálohy a obnova](/cs/admin/backup-and-restore),
- [Řešení potíží](/cs/admin/troubleshooting).
