Overview
The official image is published atghcr.io/landsandboat/server:latest (Ubuntu-based) and ghcr.io/landsandboat/server:alpine (Alpine-based). The image contains the compiled server binaries, scripts, SQL, and tools — but not a database.
Prerequisites: mesh volumes
Navigation and line-of-sight meshes are shipped in a separate image. You must load them into named Docker volumes before starting the server:losmeshes, navmeshes) persist across container restarts.
Database configuration
A database is not included in the image. You must provide connection credentials via environment variables:| Variable | Also accepted as | Description |
|---|---|---|
XI_NETWORK_SQL_HOST | — | Database hostname or IP |
XI_NETWORK_SQL_PORT | — | Database port (default 3306) |
XI_NETWORK_SQL_DATABASE | MARIADB_DATABASE | Database name |
XI_NETWORK_SQL_LOGIN | MARIADB_USER | Database username |
XI_NETWORK_SQL_PASSWORD | MARIADB_PASSWORD | Database password |
Running the server
Docker Compose
Docker Compose is the recommended approach. It manages all services, health checks, and startup order automatically.Volume mounts
| Mount path | Purpose |
|---|---|
/server/losmeshes | Line-of-sight mesh data (load from ximeshes image) |
/server/navmeshes | Navigation mesh data (load from ximeshes image) |
/server/tools/config.yaml | dbtool configuration (controls express updates, backups) |
/server/settings/map.lua | Override individual settings files |
/server/modules | Lua and SQL runtime modules |
Customization
Settings via environment variables
Any setting in asettings/*.lua file can be overridden with an environment variable using the format:
Settings files
For more extensive changes, bind-mount an entire settings file:Modules
Bind-mount a modules directory to load Lua and SQL runtime modules:C++ modules require building a custom image. See Build from source for build-arg options.
Default user
The image runs as userxiadmin (UID 1000, GID 1000). Ensure that bind-mounted files and directories are readable by UID 1000.
Port reference
| Port | Protocol | Service | Purpose |
|---|---|---|---|
| 54001 | TCP | xi_connect | Login view |
| 54002 | TCP | xi_search | Search / auction house |
| 54230 | TCP | xi_connect | Login data |
| 54230 | UDP | xi_map | Zone data |
| 54231 | TCP | xi_connect | Login auth |
| 8088 | TCP | xi_world | HTTP API (disabled by default) |