# Empyrion - Galactic Survival

Panel-native dedicated server module for Empyrion.

## How it works

- Image: `panel-empyrion:latest` — built from `./Dockerfile` (Debian 12 + Wine + Xvfb + tini).
- Game files: downloaded by the panel's SteamCMD updater sidecar into the `panel-<id>-game` named volume. Because Empyrion's dedicated server ships only as a Windows binary, the updater uses `+@sSteamCmdForcePlatformType windows` (declared in `module.yaml` via `platform: windows`).
- Entrypoint: boots Xvfb, initializes a Wine prefix on first run, then runs `EmpyrionDedicated.exe` under `wine64` with `-batchmode -nographics -logFile -` so Unity pipes its log to stdout.

## First-run flow

1. Build the image (one-time):
   ```bash
   docker build -t panel-empyrion:latest modules/empyrion
   ```
2. Create an instance in the panel (defaults are fine).
3. Click **Update** on the instance — the SteamCMD sidecar downloads ~3.5 GB of Windows build into the `game` volume.
4. Click **Start** — the entrypoint seeds `dedicated.yaml` from the shipped default, starts Xvfb, bootstraps Wine, and launches the server.

First boot is slow (Wine prefix init + Empyrion's own first-run map generation). Subsequent starts are 30–60s.

## Ports

| Name   | Proto | Default | Notes                       |
|--------|-------|---------|-----------------------------|
| game   | UDP   | 30000   | Srv_Port — main traffic     |
| query  | UDP   | 30001   | Steam query                 |
| client | UDP   | 30002   | Client connect              |
| eac    | UDP   | 30003   | EasyAntiCheat               |
| csw    | TCP   | 30004   | CSW API (internal for now)  |

## No RCON (yet)

Empyrion has no native RCON protocol. The in-game `admin` console commands can only be issued from a connected client. Third-party tools (Empyrion Web Admin / EAH) fill this gap and can be layered on later via plugins — not wired into this module for v1.
