Instalace v Dockeru¶
Docker stack obsahuje tři služby: web (Django + Daphne), db (PostgreSQL 17) a redis (Redis 7). Před ním má být reverzní proxy s HTTPS. V návodu používáme Caddy, který certifikát od Let's Encrypt získá automaticky.
Požadavky¶
- Linuxový server s Dockerem a Docker Compose v2 (
docker compose). - Doména (např.
odbavto.example.cz) s DNS záznamem A/AAAA na server. - Otevřené porty 80 a 443.
- Zhruba 1 GB RAM a 2 GB místa na disku.
1. Stažení aplikace¶
2. Konfigurace¶
Upravte v .env minimálně tyto hodnoty:
COMPOSE_PROJECT_NAME=odbavto
SECRET_KEY=<dlouhy-nahodny-retezec>
ALLOWED_HOSTS=odbavto.example.cz
CSRF_TRUSTED_ORIGINS=https://odbavto.example.cz
DB_NAME=odbavto
DB_USER=odbavto
DB_PASSWORD=<silne-heslo>
SECRET_KEY vygenerujete například takto:
Popis všech proměnných najdete v kapitole Konfigurace (.env).
3. Síť pro reverzní proxy¶
Služba web nepublikuje žádný port na hostitele. Je připojená do externí Docker sítě web, přes kterou na ni vidí reverzní proxy. Síť jednou vytvořte:
4. Spuštění¶
Při každém startu kontejneru web se automaticky provedou databázové migrace a collectstatic. Stav ověříte příkazy:
5. Reverzní proxy (Caddy)¶
Pokud na serveru Caddy ještě neběží, spusťte ho jako samostatný kontejner ve stejné síti web. Například v adresáři ~/caddy:
Název kontejneru je ${COMPOSE_PROJECT_NAME}-web, tedy s COMPOSE_PROJECT_NAME=odbavto je to odbavto-web. Caddy předává WebSockety automaticky, nic dalšího se nastavovat nemusí.
Jiná reverzní proxy
Funguje i Nginx, Traefik a další. Proxy musí předávat hlavičku X-Forwarded-Proto a podporovat WebSocket upgrade (cesta /ws/). V docker-compose.yml je nastaveno BEHIND_PROXY=True, takže Django hlavičce X-Forwarded-Proto věří.
6. První administrátor¶
Na serveru se výchozí účet odbavto nezakládá. Administrátora vytvoříte ručně:
Pak otevřete https://odbavto.example.cz/, přihlaste se a v administraci /admin/ založte účty dalším uživatelům (viz Uživatelé).
Data a svazky (volumes)¶
| Volume | Obsah | Zálohovat |
|---|---|---|
postgres_data |
Databáze | Ano |
private_media |
Nahrané obrázky a loga štítků | Ano |
app_logs |
Logy aplikace | Volitelně |
Svazky mají v názvu prefix projektu, např. odbavto_postgres_data. Postup zálohy je v kapitole Aktualizace a zálohy.
Kontrolní seznam po instalaci¶
-
https://odbavto.example.cz/se načte s platným certifikátem. - Přihlášení administrátora funguje.
- Ve skeneru jde zapnout kamera (ověřuje HTTPS).
- Testovací speciální štítek se vytiskne.
- Je nastavená pravidelná záloha databáze a
private_media.