# 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
```
