Vanilla Wow in Docker

Mar 26, 2018 14:11 · 508 words · 3 minutes read wowstack development

It has been 13 years since World of Warcraft emulation servers became a thing, and widely adopted due to the Open Source release of MaNGOS in early 2005. Ever since rumors have been going around how bad and how hard it is to run a server.

Today we are going to change this for the better.

A different approach

While work on WowStack continued, it seemed like a good idea to introduce change and make everything much easier to use. This is where Docker joins the picture.

No longer will you need to install loads of dependencies, be familiar with compilers and manual software installation and face the recurring task of keeping it all up to date and running.

OpenWoW, the research effort of WowStack is proud to present Vanilla WoW in Docker. As of today, you can run a fully working Vanilla WoW server environment by just having Docker installed on a server, be it Linux, Windows or Mac OS. You choose!

The whole environment is composed of various images for data extraction from the client and images for authentication and the actual gam world.

Hop to https://github.com/wowstack/docker-classic-server to grab and copy and play with it.

Running Vanilla WoW in Docker

First, make sure you have Docker and Docker Compose installed in your machine and running. Aside from that, you will also need an installation of Vanilla WoW version 1.12.x. For now it does not really matter if you use 1.12.0, 1.12.1 or 1.12.2 as each of these will work.

Clone the repository locally:

git clone https://github.com/wowstack/docker-classic-server.git

Since the project is still in early stages we now have to make a few changes. Take a look at docker-compose.yml:

version: '3.1'

services:
...
    map_extractors:
        image: wowstack/map-tools:latest
...
        volumes:
            - "./path/to/wow/client:/opt/wowstack/data/"
            - "./data/wowstack:/opt/wowstack/share"

    world_server:
        image: wowstack/world-server:latest
...
        volumes:
            - "./data/wowstack:/opt/wowstack/share"
...

As you can see, the map_extractors service has two volumes getting mounted by Docker:

  • "./path/to/wow/client:/opt/wowstack/data/": this is used to mount a Vanilla WoW installation into the container, allowing the extractors to read from the clients MPQ archives. Specify the full path to the World of Warcraft folder
  • "./data/wowstack:/opt/wowstack/share": this is a local directory which will be used to store exxtracted data and generated files. E.g. maps will live here

On the world_server service we meet an old friend:

  • "./data/wowstack:/opt/wowstack/share": here we mount generated files for the world server, allowing it to read maps, client databases, etc.

To get your Vanilla WoW environment up and running we start off by pulling the current container images:

docker-compose pull

Be aware that these images are updated daily currently and unversioned for now, so you have to pull these images/tags:

  • wowstack/map-tools:latest
  • wowstack/auth-server:latest
  • wowstack/world-server:latest

For storing game content and characters data we use

  • mariadb:10.1

Starting the environment is just one single command:

docker-compose up -d

You can watch what is going on using docker-compose logs or tools like Kitematic. Be aware that initial startup time can take up to two hours for generating all maps. After this your Vanilla WoW installation will be listening on localhost/127.0.0.1.

To destroy all things execute docker-compose down.

Comments powered by Disqus