Wrath of the Lich King
Setup sheet · 3.0.2 — 3.3.5
The best-documented setup in emulation. If a guide exists for any branch, it exists for this one, and the module ecosystem assumes you are here.
Before you start
Everything below assumes a clean host- A 3.3.5a (12340) clientExtraction reads your own legally obtained install. No client files ship with any core.
- Roughly 80 GB freeExtracted maps, vmaps, and mmaps dwarf the core itself. Check before you start.
- GCC 12+ · CMake 3.16+ · Boost 1.74+ · MySQL 8.0Install all of it up front — a missing dev package fails several steps later.
- Ports 3724 · 8085 reachableAuth then world. If only the first is open, players see the realm list and then hang.
Choose a path
Steps rewrite themselves belowInstall the toolchain
Everything on this sheet assumes GCC 12+ · CMake 3.16+ · Boost 1.74+ · MySQL 8.0. Install these first — a half-configured toolchain fails three steps later with a confusing error.
$ sudo apt update && sudo apt install -y git cmake make gcc g++ \ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev \ libncurses-dev libboost-all-dev mysql-server $ cmake --version && gcc --version # confirm before continuing
Unpack the repack
A repack carries compiled binaries and a seeded world database in one archive. Fastest route to a running realm, and the one that needs a fresh bundle every time the core moves.
$ sha256sum -c wf-wotlk-3.3.5a-repack.tar.zst.sha256 $ tar --zstd -xf wf-wotlk-3.3.5a-repack.tar.zst $ cd wf-wotlk && ls # bin/ etc/ sql/ tools/
Import the seeded database
The repack's SQL bundle creates all three schemas and fills the world database in one pass. This is the step that takes the longest.
$ mysql -u root -p < sql/create_databases.sql $ mysql -u root -p acore_world < sql/wotlk_world.sql $ mysql -u root -p acore_auth < sql/wotlk_auth.sql $ mysql -u root -p acore_characters < sql/wotlk_characters.sql
Extract client data
The core needs maps, vmaps, and mmaps generated from a 3.3.5a (12340) client you own. Nothing is downloaded — this reads your install and writes into the server's data directory.
# run from the client root, not the server directory $ cd /path/to/client-3.3.5a $ ~/realm/bin/mapextractor $ ~/realm/bin/vmap4extractor && ~/realm/bin/vmap4assembler Buildings vmaps $ ~/realm/bin/mmaps_generator --threads $(nproc) $ mv maps vmaps mmaps dbc ~/realm/data/
Point the config at your database
Two files: authserver.conf handles logins, worldserver.conf handles everything else. Copy the .dist versions before editing so you can diff against defaults later.
$ cp etc/authserver.conf.dist etc/authserver.conf $ cp etc/worldserver.conf.dist etc/worldserver.conf $ $EDITOR etc/worldserver.conf # see the key table below
Start both servers
authserver first, then worldserver. The world server holds the console — leave it in the foreground the first time so you can watch it load.
$ ./bin/authserver & $ ./bin/worldserver # "World initialized in X minutes" means you are up
Create an account and log in
Accounts live in the auth database, not in a config file. Create the first one from the worldserver console, then point the client at your host.
> account create admin <password> > account set gmlevel admin 3 -1 # then, client side — edit realmlist.wtf set realmlist 127.0.0.1
Configuration keys
Edit before first launchVerify it worked
In order — each one gates the next- Auth server acceptsThe client reaches the realm list. If it stalls here, it is port 3724 or the gamebuild column.
- World loads fullyThe console reports the world initialized with no missing-map warnings.
- Character enters the worldLogin, create a character, and zone in. Falling through terrain means vmaps failed.
- Movement is validatedRun, mount, and use a flight path. Rubber-banding points at mmaps, not at latency.
When it goes wrong
The four failures everyone hitsaddress to your public IP, not 127.0.0.1, for anyone outside the host.gamebuild column must equal your client build (12340). A one-digit mismatch fails every login.data/vmaps. Rerun the extractor and assembler in order.sql/updates/ in filename order — they are not idempotent out of sequence.License terms you inherit
Read these before you redistributeThis core carries copyleft terms from its lineage. Anything you distribute travels under the same license, with source.
Serving a modified core publicly counts as distribution under the stricter terms. A private realm does not trigger it.
Bundles are issued per operator and are not transferable. Do not rehost them or pass them on.
Maps, DBC, and art stay under the publisher's terms. Extract from a client you own; never redistribute them.
Every era in full
One page per branch, with all deployment paths- Vanilla Era1.0.0 — 1.12.2 · build 1.12.2
- The Burning Crusade2.0.1 — 2.4.3 · build 2.4.3
- Wrath of the Lich King3.0.2 — 3.3.5 · build 3.3.5a
- Cataclysm4.0.1 — 4.3.4 · build 4.3.4
- Mists of Pandaria5.0.4 — 5.4.8 · build 5.4.8
- Warlords of Draenor6.0.2 — 6.2.4 · build 6.2.4
- Legion7.0.3 — 7.3.5 · build 7.3.5
- Battle for Azeroth8.0.1 — 8.3.7 · build 8.3.7
- Shadowlands9.0.1 — 9.2.7 · build 9.2.7
- Dragonflight10.0.0 — 10.2.7 · build 10.2.7
- The War Within11.0.0 — 11.0.7 · build 11.0.7
- Midnight Era12.0.0+ · build 12.0.0+In development