The protbot sent "DSGN:\x00" as the sign request type, but the server strips the last 3 characters as a version suffix. Send "DSGN:041" (ZZ client mode 41) to match the real client format. The entrance channel entry parser read 14 bytes for remaining fields but the server writes 18 bytes (9 uint16, not 7), causing a panic when parsing the server list. The channel server panicked on disconnect when a session had no decompressed save data (e.g. protbot or early client disconnect). Guard Save() against nil decompSave. Also fix docker-compose volume mount for Postgres 18 which changed its data directory layout.
Docker for Erupe
Quick Start
-
From the repository root, copy and edit the config:
cp config.example.json docker/config.jsonEdit
docker/config.json— setDatabase.Hostto"db"and match the password todocker-compose.yml(default:password). -
Place your quest/scenario files in
docker/bin/. -
Start everything:
cd docker docker compose up
The database is automatically initialized and patched on first start via init/setup.sh.
pgAdmin is available at http://localhost:5050 (default login: user@pgadmin.com / password).
Building Locally
By default the server service pulls the prebuilt image from GHCR. To build from source instead, edit docker-compose.yml: comment out the image line and uncomment the build section, then:
docker compose up --build
Stopping the Server
docker compose stop # Stop containers (preserves data)
docker compose down # Stop and remove containers (preserves data volumes)
To delete all persistent data, remove these directories after stopping:
docker/db-data/docker/savedata/
Updating
After pulling new changes:
-
Check for new patch schemas in
schemas/patch-schema/— apply them via pgAdmin orpsqlinto the running database container. -
Rebuild and restart:
docker compose down docker compose build docker compose up
Troubleshooting
Postgres won't populate on Windows: init/setup.sh must use LF line endings, not CRLF. Open it in your editor and convert.