diff --git a/web/content/posts/api/usage/index.md b/web/content/posts/api/usage/index.md index 634662a..468701c 100644 --- a/web/content/posts/api/usage/index.md +++ b/web/content/posts/api/usage/index.md @@ -76,6 +76,7 @@ Požadavek musí obsahovat JSON objekt s následujícími poli: - `class` (string, povinné): Název třídy, které se hlášení týká. - `location` (string, povinné): Místo, kde se chyba vyskytla. Povolené hodnoty jsou: - `"TIMETABLE"` + - `"TAKES_PLACE"` - `"ABSENCES"` - `"OTHER"` - `content` (string, povinné): Popis problému. diff --git a/web/content/posts/self-hosting/index.md b/web/content/posts/self-hosting/index.md new file mode 100644 index 0000000..5fb2d32 --- /dev/null +++ b/web/content/posts/self-hosting/index.md @@ -0,0 +1,90 @@ +--- +title: "Self-hosting" +date: 2026-02-11 +tags: ["hosting", "setup"] +--- + +Tento projekt je možné hostovat vlastním způsobem, ať už pomocí Dockeru nebo nativně. + +## Požadavky + +Před začátkem se ujistěte, že máte připravené následující: + +- **Účet SPŠ Ječná**: Projekt vyžaduje platný školní e-mail a heslo pro přístup k tabulce na SharePointu. +- **Node.js 22+**: Pokud hostujete nativně. +- **Hugo**: Pro sestavení a provoz webového rozhraní. +- **Chromium/Puppeteer**: Pro automatizované stahování dat. + +## Způsoby hostování + +### Docker (Doporučeno) + +Použití Dockeru je nejjednodušší způsob, jak projekt spustit, protože automaticky řeší všechny závislosti včetně prohlížeče pro Puppeteer. + +1. **Klonování repozitáře**: + ```bash + git clone https://github.com/zitnik/jecnarozvrh.git + cd jecnarozvrh + ``` + +2. **Konfigurace**: + Upravte soubor `docker-compose.yml` a doplňte své přihlašovací údaje: + ```yaml + services: + app: + environment: + - EMAIL=vas-email@spsejecna.cz + - PASSWORD=vase-heslo + ``` + +3. **Spuštění**: + ```bash + docker-compose up -d --build + ``` + +Aplikace bude dostupná na portu `3000`. + +> **Poznámka k webu v Dockeru**: Výchozí Docker image má `SERVE_WEB` nastaveno na `false`, protože neobsahuje Hugo pro sestavení webové části. Docker verze primárně slouží jako API server. + +### Nativní instalace + +Pokud nechcete používat Docker, můžete projekt spustit přímo na svém systému. + +1. **Instalace závislostí**: + ```bash + npm install + ``` + +2. **Sestavení projektu**: + Tento krok zkompiluje TypeScript a sestaví Hugo web. + ```bash + npm run build + ``` + +3. **Nastavení proměnných prostředí**: + Vytvořte soubor `.env` v kořenovém adresáři: + ```env + EMAIL=vas-email@spsejecna.cz + PASSWORD=vase-heslo + PORT=3000 + ``` + +4. **Spuštění**: + ```bash + npm run serve + ``` + +## Environmental variables + +| Proměnná | Popis | Výchozí hodnota | +|----------|-------|-----------------| +| `EMAIL` | Školní e-mail pro přihlášení. | - | +| `PASSWORD` | Heslo k e-mailu. | - | +| `SHAREPOINT_URL` | Odkaz na Excel tabulku na SharePointu. | *Předdefinovaný odkaz na nástěnku* | +| `PORT` | Port, na kterém server poběží. | `3000` | +| `REPORT_WEBHOOK_URL` | URL pro webhook hlášení chyb (Discord/Slack). | - | +| `SERVE_WEB` | Určuje, zda se má serveovat Hugo web. | `true` | + +## Persitence dat + +Veškerá stažená data a stav prohlížeče (včetně cookies) se ukládají do složky `volume/`. Při použití Dockeru je důležité tuto složku mapovat jako volume, aby nedocházelo k opakovanému přihlašování a stahování dat při každém restartu. diff --git a/web/hugo.yaml b/web/hugo.yaml index b4186a6..94fff4e 100644 --- a/web/hugo.yaml +++ b/web/hugo.yaml @@ -13,7 +13,7 @@ mainsections: ["posts", "papermod"] minify: disableXML: true - # minifyOutput: true + minifyOutput: true pagination: disableAliases: false @@ -61,6 +61,11 @@ params: - **Toto API je NEOFICIÁLNÍ a nemá nic společného s oficiálním softwarem školy**. + footer: + text: > + Licencováno pod [GNU GPL v3.0](https://www.gnu.org/licenses/gpl-3.0.html) + +copyright: "© 2026 [Jakub Žitník](https://jzitnik.dev)" markup: goldmark: diff --git a/web/layouts/partials/extend_footer.html b/web/layouts/partials/extend_footer.html new file mode 100644 index 0000000..e69de29