Initial Jedi Academy server implementation via docker/docker compose
This commit is contained in:
93
jedi-academy/README.md
Normal file
93
jedi-academy/README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# 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:<version> .
|
||||
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`).
|
||||
Reference in New Issue
Block a user