# Xtream Player - Nginx Setup Guide ## Problem Fixed Když jste provozovali aplikaci přes nginx, video přehrávač nefungoval. Problém byl v chybějících **CORS (Cross-Origin Resource Sharing)** headerech. Nyní jsme: 1. ✅ Přidali CORS headers do Java backendu 2. ✅ Přidali support pro OPTIONS preflight requests 3. ✅ Vytvořili optimalizovanou nginx konfiguraci pro streamování videa ## Spuštění s Docker Compose (Doporučeno) Nejjednodušší způsob je spustit obě služby (backend + nginx) najednou: ```bash docker-compose up -d ``` Aplikace pak bude dostupná na: - **Frontend s nginx**: http://localhost/ - **Backend přímo**: http://localhost:8080/ ## Ruční Spuštění ### 1. Spusťte backend Java aplikaci: ```bash ./mvn clean package java -jar target/xtream-player-1.0.0.jar ``` ### 2. Spusťte nginx: ```bash docker run -d \ -p 80:80 \ -v $(pwd)/deploy/nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro \ nginx:latest ``` Nebo s native nginx (Linux): ```bash cp deploy/nginx/nginx.conf /etc/nginx/sites-available/xtream-player sudo ln -s /etc/nginx/sites-available/xtream-player /etc/nginx/sites-enabled/ sudo systemctl reload nginx ``` ## HTTPS/SSL Setup Pro bezpečné HTTPS připojení: 1. Vytvořte SSL certifikáty: ```bash mkdir -p deploy/nginx/ssl # Použijte Let's Encrypt, self-signed certs, nebo váš certifikát ``` 2. Upravte `deploy/nginx/nginx.conf`: ```nginx server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; # ... rest of config } # Redirect HTTP to HTTPS server { listen 80; return 301 https://$server_name$request_uri; } ``` 3. Aktualizujte docker-compose.yml pro SSL volume ## Troubleshooting ### Video přehrávač stále nefunguje? 1. **Zkontrolujte browser console** (F12 → Console): - Hledejte CORS errory - Hledejte "stream-proxy" errory 2. **Zkontrolujte nginx logs**: ```bash docker logs # nebo sudo tail -f /var/log/nginx/error.log ``` 3. **Zkontrolujte backend logs**: ```bash docker logs # nebo koukejte na console kde jste spustili Java ``` ### Nginx vrací 502 Bad Gateway? - Ujistěte se, že backend je spuštěný na portu 8080 - Zkontrolujte, že nginx má přístup k backendu (network settings) - Zkontrolujte nginx logs pro konkrétní chybu ### Velké soubory se neloadují? - V nginx.conf je `client_max_body_size 256M;` - zvyšte v případě potřeby - Ujistěte se, že `proxy_buffering off;` je nastaveno pro `/api/stream-proxy` ## Architektura ``` Klient (browser) ↓ Nginx (reverse proxy, CORS headers) ↓ Java aplikace (8080) ├─ /api/... (API endpoints s CORS) ├─ /api/stream-proxy (HLS stream proxy) └─ / (static HTML/CSS/JS) ``` ## CORS Headers Nyní jsou automaticky přidávány všem odpovědím: ``` Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With Access-Control-Max-Age: 86400 ``` Pokud potřebujete omezit origin (bezpečnější), měňte `Access-Control-Allow-Origin` v kódu.