Building VMaNGOS
ThoriumLXC publishes container images that include the vmangos source, along with build scripts. These images can be used to create emulator server binaries.
The Builder Image is the core component responsible for compiling the VMaNGOS emulator server. It handles the entire build process, from source code to final binary artifacts.
Info
If you are uncertain how to run these commands, or what they are doing, check out the build architecture overview. It'll help you understand the high-level concepts behind this.
Running a build
To build vmangos using the builder image, you can use the following command for the 2025.02.23
version. This will download the image from one of the registries, and run the build. Builder images are built to support argumentless builds.
You can use any of these commands, the differences between them being where the image is downloaded from. The image will be the same regardless of where you download it from, creating a container named vmangos-build
.
docker run --name vmangos-build ghcr.io/thoriumlxc/vmangos-builder:2025.02.23
docker run --name vmangos-build docker.io/thoriumlxc/vmangos-builder:2025.02.23
docker run --name vmangos-build gitlab.org/thoriumlxc/vmangos-builder:2025.02.23
docker run --name vmangos-build quay.io/thoriumlxc/vmangos-builder:2025.02.23
Info
These images are typically 1-3 GiB in size. Be aware of this if you are on limited bandwidth connections.
Depending on the capabilities of your system, this can take a while to download the images, and run the build processes. The outputs from the build will be written to the directory /opt/mangos
within the container image.
The Build
When this has finished, you will need to extract the build emulation binaries from the completed container. We'll do this by copying the files from the vmangos-build
container. In a terminal, run the following command to copy the files from the folder /opt/mangos
in the container, to a folder named vmangos
on your machine:
docker cp vmangos-build:/opt/mangos vmangos
This will look like the following in the folder structure:
.
├── bin
│ ├── Extractors
│ │ ├── config.json
│ │ ├── MapExtractor
│ │ ├── mmap_extract.py
│ │ ├── MoveMapGenerator
│ │ ├── offmesh.txt
│ │ ├── VMapAssembler
│ │ └── VMapExtractor
│ ├── mangosd
│ ├── realmd
│ └── run-mangosd
├── config
├── etc
│ ├── mangosd.conf
│ ├── mangosd.conf.dist
│ ├── realmd.conf
│ └── realmd.conf.dist
└── storage
├── data
├── honor
└── logs
You can then use the bin/mangosd
, bin/realmd
or any of the other binaries for running the emulator server on a Ubuntu (linux) environment.