# GeoSus Server - Docker Deployment ## Rychlý start ```bash # Build image docker build -t geosus-server . # Spusť kontejner docker run -d \ --name geosus \ -p 7777:7777 \ -p 8088:8088 \ -v geosus-data:/app/data \ geosus-server ``` ## Docker Compose (doporučeno) ```bash # Spuštění docker-compose up -d # Sledování logů docker-compose logs -f # Zastavení docker-compose down # Zastavení včetně smazání dat docker-compose down -v ``` ## Porty | Port | Protokol | Popis | |------|----------|-------| | 7777 | TCP | Herní komunikace (binární protokol s šifrováním) | | 8088 | HTTP | Stats REST API | ## Environment Variables | Proměnná | Výchozí | Popis | |----------|---------|-------| | `GEOSUS_TCP_PORT` | 7777 | TCP port pro herní komunikaci | | `GEOSUS_HTTP_PORT` | 8088 | HTTP port pro Stats API | | `GEOSUS_DATA_PATH` | data | Cesta k datové složce | | `GEOSUS_OVERPASS_URL` | https://mapz.honzuvkod.dev/api/interpreter | URL Overpass API pro mapová data | | `GEOSUS_API_KEY` | (none) | API klíč pro Stats API (volitelné) | | `DOTNET_ENVIRONMENT` | Production | Prostředí (.NET) | ## Volumes - `/app/data` - Herní data (lobby, statistiky SQLite) ## Health Check Server poskytuje health endpoint: ```bash curl http://localhost:8088/health ``` Odpověď: ```json { "status": "ok", "version": "1.0.0", "uptimeSeconds": 3600, "activeLobbies": 2, "connectedPlayers": 15 } ``` ## Vlastní konfigurace Můžeš připojit vlastní `appsettings.json`: ```bash docker run -d \ --name geosus \ -p 7777:7777 \ -p 8088:8088 \ -v geosus-data:/app/data \ -v ./my-settings.json:/app/appsettings.json:ro \ geosus-server ``` ## Logování ```bash # Živé logy docker logs -f geosus # Posledních 100 řádků docker logs --tail 100 geosus ``` ## Firewall Nezapomeň otevřít porty na firewallu: ```bash # UFW (Ubuntu) sudo ufw allow 7777/tcp sudo ufw allow 8088/tcp # firewalld (CentOS/RHEL) sudo firewall-cmd --permanent --add-port=7777/tcp sudo firewall-cmd --permanent --add-port=8088/tcp sudo firewall-cmd --reload ``` ## Reverse Proxy (volitelné) Pro HTTPS můžeš použít nginx jako reverse proxy: ```nginx server { listen 443 ssl; server_name geosus.example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; # Stats API location /api/ { proxy_pass http://localhost:8088/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } # TCP proxy pro herní komunikaci (stream modul) stream { server { listen 7777; proxy_pass localhost:7777; } } ``` ## Aktualizace ```bash # Stáhni nový kód git pull # Rebuild a restart docker-compose down docker-compose build --no-cache docker-compose up -d ``` ## Troubleshooting ### Port je obsazený ```bash # Zjisti co používá port sudo netstat -tlnp | grep 7777 sudo lsof -i :7777 ``` ### Kontejner padá ```bash # Zkontroluj logy docker logs geosus # Interaktivní shell docker run -it --rm geosus-server /bin/bash ``` ### Problémy s daty ```bash # Zkontroluj volume docker volume inspect geosus-data # Backup dat docker cp geosus:/app/data ./backup ```