Skip to content

Getting Started

Matteo Bilotta edited this page Feb 13, 2023 · 18 revisions

Introduction

One of the main goals of the CMaNGOS Docker project is optimization.
To achieve this, two different types of images have been developed: the one used for maintainance (larger) and the one used for execution.

With this principle in mind, we can now begin! 🚀

First time run

First of all, you have to decide up to which client version you want your server to support.
Both CMaNGOS and CMaNGOS Docker use three keywords to identify it; select the one you need and keep it in mind for the next steps:

  • classic → World of Warcraft® v1.12.x
  • tbc → World of Warcraft: The Burning Crusade® v2.4.3
  • wotlk → World of Warcraft: Wrath of the Link King® v3.3.5a

Download the images

Once you've selected the supported client version, you can download the related Docker images.
To do so, you need to open a shell or command prompt and type the following lines replacing the <version> placeholder with the keyword of your choice:

docker pull ghcr.io/byloth/cmangos/<version>:latest
docker pull ghcr.io/byloth/cmangos/<version>/builder:latest
e.g.

For instance, let's say you wish to support up to the tbc version of the client...
What you have to type is:

docker pull ghcr.io/byloth/cmangos/tbc:latest
docker pull ghcr.io/byloth/cmangos/tbc/builder:latest
Tip

Be sure to replace the < and > characters as well!

Configuration

Create project directory

Create a new directory on your computer to store all the stuff related to your WoW server.
It's best not to use the same directory as the client: keep them separated from each other.

Download the docker-compose.yml1 file inside the newly created directory; make sure you don't rename it.

Actually, this file is ready-to-use and -for this reason- I had to choose a specific version to support; I chose tbc since it's my favourite one.
If you've decided to use another version, open this file using a simple text editor (e.g. notepad.exe) and be sure to replace the two occurrences of tbc with the correct version of your choice.

Warning

This procedure doesn't describe a production-ready stack deployment...
It's just a simple example of the basic working configuration of CMaNGOS Docker.

If you're looking for more specific guidance, you may find the Use in Production page useful.

Files extraction from the client

Actually, due to legal reasons and copyright policies, CMaNGOS (and -of course- CMaNGOS Docker) cannot be distributed ready-to-run or -at least- not at 100% of its functionality... In fact, it needs some extra copyrighted files from Blizzard Entertainment®.

These files -fortunately- are present within the WoW client: exact the same client you need to play.
For this reason, if you've purchased and legally own a copy, you can use a tool to extract these files directly from it.

To do this, we must first identify the path where the WoW client was installed; copy it.
Then type the following lines replacing both the <path> and <version> placeholders:

Windows Command Prompt (cmd.exe)
docker run --rm ^
           --volume "cmangos_mangosd_data:/home/mangos/data" ^
           --volume "<path>:/home/mangos/wow-client" ^
    ^
    ghcr.io/byloth/cmangos/<version>/builder:latest extract
Windows PowerShell (powershell.exe)
docker run --rm `
           --volume "cmangos_mangosd_data:/home/mangos/data" `
           --volume "<path>:/home/mangos/wow-client" `
    `
    ghcr.io/byloth/cmangos/<version>/builder:latest extract
A Unix shell (e.g. bash)
docker run --rm \
           --volume "cmangos_mangosd_data:/home/mangos/data" \
           --volume "<path>:/home/mangos/wow-client" \
    \
    ghcr.io/byloth/cmangos/<version>/builder:latest extract

Databases initialization

Since it's the first run, it's necessary to create the databases and load the initial data2 required by CMaNGOS to work correctly.

Open a new shell or a command prompt inside the server project directory you've created earlier and type the following line:

docker compose --project-name "cmangos" up mariadb

Then, within another shell or command prompt, type the following lines (be sure to replace the <version> placeholder):

Windows Command Prompt (cmd.exe)
docker run --rm ^
           --env MYSQL_SUPERUSER="root" ^
           --env MYSQL_SUPERPASS="root00" ^
           --env MANGOS_DBHOST="mariadb" ^
           --env MANGOS_DBUSER="mangos" ^
           --env MANGOS_DBPASS="mangos00" ^
           --network "cmangos_default" ^
           --volume "cmangos_mangosd_data:/home/mangos/data" ^
    ^
    ghcr.io/byloth/cmangos/<version>/builder:latest init-db
Windows PowerShell (powershell.exe)
docker run --rm `
           --env MYSQL_SUPERUSER="root" `
           --env MYSQL_SUPERPASS="root00" `
           --env MANGOS_DBHOST="mariadb" `
           --env MANGOS_DBUSER="mangos" `
           --env MANGOS_DBPASS="mangos00" `
           --network "cmangos_default" `
           --volume "cmangos_mangosd_data:/home/mangos/data" `
    `
    ghcr.io/byloth/cmangos/<version>/builder:latest init-db
A Unix shell (e.g. bash)
docker run --rm \
           --env MYSQL_SUPERUSER="root" \
           --env MYSQL_SUPERPASS="root00" \
           --env MANGOS_DBHOST="mariadb" \
           --env MANGOS_DBUSER="mangos" \
           --env MANGOS_DBPASS="mangos00" \
           --network "cmangos_default" \
           --volume "cmangos_mangosd_data:/home/mangos/data" \
    \
    ghcr.io/byloth/cmangos/<version>/builder:latest init-db

  1. This file may be updated over time.
    Make sure to check it from time to time and follow the update procedure.
  2. This information is about NPCs or mobs that can be found in the game, items or spells that are available or can be cast and quests or events that can be done... In addition, their related stats such as strength, speed or hit points, spawn or drop ratio, experience or gold gained and other stuff like that.
    If you find something that seems wrong or missing while playing, feel free to report it to the CMaNGOS team.
Clone this wiki locally