# Jedi Academy Dedicated Server (Docker) Runs a Jedi Academy dedicated server for Jedi Academy inside a Docker container using Wine. ## Requirements - [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/) ## Directory Structure ``` jka-server/ |── config/ |── snvos.cfg # Main server config (ForceMod III server configuration used by default) ├── Dockerfile ├── docker-compose.yml ├── entrypoint.sh └── server/ ├── base/ # Jedi Academy base game files (assets*.pk3, etc.) ├── ForceMod_III/ # ForceMod III pk3s and and .dll for the dedicated server └── jampded.exe # Jedi Academy dedicated server binary ``` ## Configuration Server behaviour is controlled via environment variables and bind mounts. Defaults are defined in the `Dockerfile` and can be overridden in `docker-compose.yml` or with `docker run -e`. | Variable | Default | Description | |------------|----------------|--------------------------------------------------| | `FS_GAME` | `ForceMod_III` | The mod directory to load (`fs_game`) | To override, edit the `environment` section in `docker-compose.yml`: The config for the server is passed via a bind mount. Adjust this to point to your .cfg file. ```yaml volumes: # Mount config externally so you can edit without rebuilding - ./config/snvos.cfg:/home/jamp/server/base/server.cfg:ro ``` ```yaml environment: - FS_GAME=ForceMod_III ``` ## Usage ### Build and start First build the image, adjust the version in the docker compose file, and then run it using docker compose. ```bash docker build -t jamp-server: . touch ./forcemod.log docker compose up -d ``` ### View logs ```bash docker compose logs -f ``` ### Stop the server ```bash docker compose down ``` ## Ports The following port must be open on your firewall/router: | Port | Protocol | Description | |---------|----------|------------------------------| | `29070` | UDP | Jedi Academy game traffic | The port mapping can be changed in `docker-compose.yml`: ```yaml ports: - "29070:29070/udp" ``` ## How It Works 1. The container is based on `debian:bookworm-slim` with Wine installed. 2. On first run, `entrypoint.sh` initialises the Wine prefix if it doesn't exist yet. 3. `jampded.exe` is launched via Wine with the configured `fs_game` and the mounted config file. 4. The server registers itself with the Jedi Academy master server (`+set dedicated 2`).