← Go Back

Setting up a private Wow server

2024-10-25

World of Warcraft but lonelier


Prerequisites

Ensure you have docker and docker compose installed. You also need some way to edit the SQL, I suggest HeidiSQL

Download and build AzerothCore

Create a folder somewhere, eg called wowserver
Clone AzerothCore using git,:

git clone https://github.com/azerothcore/azerothcore-wotlk.git --depth 1

To add modules, use git clone in the azerothcore-wotlk/modules folder
eg:

cd azerothcore-wotlk/modules
git clone https://github.com/azerothcore/mod-aoe-loot

Once you have the modules you want cloned, build the server with

docker compose build

You shouldn't need to edit the docker-compose.yml, but you may if you want to change the port it runs on. By default it uses 8085 and 3724 for world and auth respectively. These both need to be port forwarded and/or allowed through firewalls for others to join.
For easier editing, you can change the docker volumes to be mounted files, but it isn't necessary.

Then you can start the servers with

docker compose up

or add -d for detached

Using the console / adding an account

To interface with the server, eg to add an account, run

docker attach ac-worldserver

then you can run

account create <user> <password>

Setting the realmlist for the server

Using a MySQL browser, for example HeidiSQL, navigate to acore_auth then the table realmlist. Set address to your Public IP / domain name.
If you're using cloudflare, create a DNS only (grey cloud) "A" record to your IP, you can use something such as Cloudflare DDNS to automatically update the address in cloudflare if you have a dynamic IP address.

Setting the realmlist for the client(s)

Everyone needs to adjust their ./WTF/Config.wtf in their Wow game folder and set the realmList to the IP/domain you use.
You might also need to change ./Data/enGB/realmlist.wtf (or whatever language?)
These files might need to be set to Read-only if it keeps resetting.
If you host it locally, you can just use localhost (127.0.0.1) as the ip

Configuration

You can configure the worldserver.conf and authserver.conf in ./env/dist/etc by default. If they don't exist, copy and rename the .conf.dist files to just be .conf.
You shouldn't need to touch anything here. Don't change the Bind IP or port in these .conf files, if you wish to change it you should change it in the docker-compose.yml.
There are some fun things to change in the worldserver.conf, like XP rates, crit chances, allow profanity, etc.
Some modules need to be configured to work. Often they will be disabled by default.
Check in ./env/dist/etc/modules for each module config, the server just needs to be restarted (not re-built) for them to apply.