Skip to main content
Before building, make sure you have all required dependencies. See Requirements for the full list.
1

Clone the repository

The repository must be cloned as a git repo — plain file extraction is not supported (required by dbtool.py).
2

Initialize submodules

3

Install Python dependencies

The build system calls Python during CMake configuration to generate IPC stubs.
4

Configure with CMake

Run CMake to configure the build. The flags below match the defaults used in the CI pipeline and Docker image.
CMake option reference:
5

Build

On a successful build, the following executables are placed in the repository root:
  • xi_connect — login/connection server
  • xi_search — search and auction house server
  • xi_world — world/lobby server
  • xi_map — zone map server (one or more instances)
6

Set up the database

Before starting the server, run the database tool to import all SQL files and run migrations:
See Database setup for full details.
7

Start the server

Launch each process. The map server must start after xi_world.
Alternatively, use python tools/dbtool.py and select Launch Server from the interactive menu, which reads zone settings from the database to launch the correct number of map processes.

Building the Docker image

If you want to build a custom Docker image (for example, to include C++ modules), use the provided Dockerfiles.
Available build args:
REPO_URL and COMMIT_SHA are required for dbtool.py unless you mount the host .git directory at runtime. They also add org.opencontainers.image labels that link to your source code.
Alpine-based images are also available: