1
0
Files
jecnarozvrh/web/content/posts/self-hosting/index.md
jzitnik-dev bb70b8bc9d
All checks were successful
Remote Deploy / deploy (push) Successful in 9s
docs: Some website modifications
2026-02-11 11:51:53 +01:00

91 lines
2.7 KiB
Markdown

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