--- 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.