Setting Up a World of Warcraft Server on Debian

After the closure of the official World of Warcraft server in China, many long-time players felt a sense of loss. World of Warcraft has been part of their lives for over a decade, and this closure effectively closed the door to Azeroth.

When God closes a door, we can open a window ourselves. With the shutdown of the official servers, more players are eager to set up their own servers and become server administrators. This guide will share how to set up a World of Warcraft server.

To build a commercial server, you need the World of Warcraft server and client. If you lack technical skills, you can hire someone to assist with setup and debugging or learn from experts.

World of Warcraft Server Options

There are multiple versions available:

  • 60-level Classic Era
  • 70-level The Burning Crusade
  • 80-level Wrath of the Lich King
  • 85-level Cataclysm
  • 90-level Mists of Pandaria
  • 100-level Warlords of Draenor
  • 110-level Legion
  • 120-level Battle for Azeroth

Choose your preferred version or one that is popular among players.

Server Requirements

Player experience and game smoothness depend on the server. World of Warcraft does not have high server requirements. CPUs like Intel E5 or Core i9 series with 16 cores can meet the needs. In addition to the CPU, consider server bandwidth and defense. Bandwidth determines how many players can be online simultaneously. There are shared and dedicated bandwidth options.

Game development often faces attacks from competitors or attack groups. Choosing a server with low defense could result in connectivity issues, directly affecting player experience. High-defense servers are essential.

Defense comes in two forms: single-machine defense and cluster defense. Single-machine defense protects one server. Cluster defense uses a group of firewalls to protect multiple servers. If an attack exceeds the cluster's capacity, all servers in the cluster may crash. Different data centers offer varying levels of protection and after-sales service. Server performance can be tested for initial assessment.

Setting Up a World of Warcraft Server on Debian

Preparation

Install Dependencies

apt-get update
apt-get install git clang cmake make gcc g++
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

Boost dependencies

apt-get install -y libboost-all-dev \
libboost-system-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-iostreams-dev

MariaDB server

apt-get install libmariadbclient-dev

zlib

apt-get install zlib1g-dev

OpenSSL

apt-get install libssl-dev

Readline

apt-get install libreadline-dev

MySQL

apt-get install -y libmysqlclient-dev

Create a wow user

Username: wow

adduser wow
su wow

If using Windows Subsystem for Linux, set the default user.

In Windows command line, run:

cd %HOMEPATH%\AppData\Local\Microsoft\WindowsApps

Find the debian.exe file (ubuntu.exe if using Ubuntu)

debian.exe config --default-user wow

After setting, entering the subsystem will use the wow user.

Directory Setup

Execute as wow user

su wow
cd ~

Since it is an online game, both client and server files are needed. Create corresponding directories for later operations.

TrinityCore source code directory

mkdir /home/wow/TrinityCore

Server directory, containing etc, bin, and data subdirectories

mkdir /home/wow/server3.5.5

Client directory, used to store client versions and extract client data

mkdir /home/wow/client12340

Download Files

Server Download

Release TDB 335.22061 · TrinityCore/TrinityCore · GitHub

cd /home/wow/TrinityCore
wget https://github.com/TrinityCore/TrinityCore/archive/refs/tags/TDB335.22061.zip

Unzip:

unzip TDB335.22061.zip

Client Download

Client version: 3.3.5 (12340)

Download and extract, then upload the files to the Linux server.

Compile Server

Switch to wow user

su wow
cd /home/wow/TrinityCore/TrinityCore-TDB335.22061

Build the project:

mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server3.5.5
# This step may take time; use nohup or screen
make -j$(nproc) install

After compilation, the /home/wow/server3.5.5 directory will contain bin, etc, and data.

bin contains the executable files. data will hold the extracted map data from the client. etc contains configuration files.

Note: Check these directories for later use.

Modify Configuration Files

Copy worldserver.conf.dist and authserver.conf.dist, then remove .dist from the names.

cp /home/wow/server3.5.5/etc/worldserver.conf.dist worldserver.conf
cp /home/wow/server3.5.5/etc/authserver.conf.dist authserver.conf

Modify DataDir = "." to DataDir = "../data" in worldserver.conf.

Note: You can use a relative path "../data" or an absolute path "/home/wow/server3.5.5/data".

Extract Client Data

DBC and Maps Files

Copy the downloaded client to the designated client directory /home/wow/client12340 and navigate to it.

cd /home/wow/client12340

Run the following command to extract client data:

/home/wow/server3.5.5/bin/mapextractor

mkdir /home/wow/server3.5.5/data

cp -r dbc maps /home/wow/server3.5.5/data

Visual Maps (vmaps)

cd /home/wow/client12340

/home/wow/server3.5.5/bin/vmap4extractor

mkdir vmaps

/home/wow/server3.5.5/bin/vmap4assembler Buildings vmaps

cp -r vmaps /home/wow/server3.5.5/data

Movement Maps (mmaps)

cd /home/wow/client12340

mkdir mmaps

/home/wow/server3.5.5/bin/mmaps_generator

cp -r mmaps /home/wow/server3.5.5/data

Copy map data to the data directory:

cp -r dbc maps /home/wow/server3.5.5/data
cp -r vmaps /home/wow/server3.5.5/data
cp -r mmaps /home/wow/server3.5.5/data

Database

Use root to start the database. We already installed mariadb-server during the environment setup (you can also use mysql).

Start Database

systemctl enable mysql
systemctl restart mysql

Initialize Database

mysql_secure_installation

# Enter current password for root (enter for none):

# Change the root password? [Y/n]
Y

# Enter password twice

# Remove anonymous users? [Y/n]
Y

# Disallow root login remotely? [Y/n]

# Remove test database and access to it? [Y/n]
Y

# Reload privilege tables now? [Y/n]
Y

Login to Database

mysql -u root

Successful login shows:

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Import Data

1. Create Database

Source /home/wow/TrinityCore/TrinityCore-TDB335.22061/sql/create/create_mysql.sql

Show all databases:

show databases

+--------------------+ | Database | +--------------------+ | auth | | characters | | information_schema | | mysql | | performance_schema | | world | +--------------------+

2. Create Tables use auth;

Source /home/wow/TrinityCore/TrinityCore-TDB335.22061/sql/base/auth_database.sql

use characters;

Source /home/wow/TrinityCore/TrinityCore-TDB335.22061/sql/base/characters_database.sql

Load Map Data

Create a data directory to store map data:

mkdir /home/wow/server3.5.5/data

Configure Network

Connect to the database and run the following SQL to open the auth database and check the realmlist table:

use auth;

select id, name, address, localaddress, gamebuild from realmlist;

address is the current IP and the client connection IP. By default, it is 127.0.0.1 when running locally. When deploying to a server, change it to the server IP.

port is the external port and the client connection port. Ensure this port is open.

localaddress is the internal IP.

gamebuild is the client version number, which depends on the client version used (12340 or 13930).

Start Server

Run authserver (the authentication service, where account logins are verified before requesting the worldserver):

/home/wow/server3.5.5/bin/authserver

# or

/home/wow/server3.5.5/bin/authserver -c /home/wow/server3.5.5/etc/authserver.conf

A successful startup displays:

Connected to MySQL database at 127.0.0.1

DatabasePool 'auth' opened successfully. 2 total connections running.

Started auth database connection pool.

Loading IP Location Database...

Added realm "Trinity" at 127.0.0.1:8085.

Run worldserver:

/home/wow/server3.5.5/bin/worldserver

If you followed the steps correctly, the output might indicate a missing file:

TDB_full_world_335.22061_2022_06_01.sql!!!
File "TDB_full_world_335.22061_2022_06_01.sql" is missing,
download it from "https://github.com/TrinityCore/TrinityCore/releases"
uncompress it and place the file "TDB_full_world_335.22061_2022_06_01.sql"
in the directory "/home/rendu".

Based on the message from the worldserver, download the file from the provided link.

World initialized in 11 minutes 39 seconds

Starting up anti-freeze thread (60 seconds max stuck time)...

TrinityCore rev. fc56410b6e0d 2021-02-19 00:42:06 +0200 (3.3.5 branch) (Unix, RelWithDebInfo, Static) (worldserver-daemon) ready...

TC>

Seeing the above output means the worldserver started successfully.

Add Account

Create a username idc02 with password idc02 using the following command format:

account create <user> <pass>

TC>TC> account create idc02 idc02

Upgrade to GM

You can set the gmlevel of idc02 to 3 to upgrade to a GM account. Run the following in the worldserver command line:

TC> account set gmlevel idc02 3 -1

Login to Game

Open the cliant directory, find wow.exe, and create a wow.bat in the same directory with the following content:

On a local setup, fill in 127.0.0.1. For a remote server, use the server IP, which should match the address in realmlist.

echo y | rd /s "Cache"

echo SET realmlist "103.219.39.*" > Data\zhTW\realmlist.wtf

echo SET realmlist "103.219.39.*" > Data\enTW\realmlist.wtf

echo SET realmlist "103.219.39.*" > Data\zhCN\realmlist.wtf

echo SET realmlist "103.219.39.*" > Data\enCN\realmlist.wtf

echo SET realmlist "103.219.39.*" > Data\enUS\realmlist.wtf

echo SET realmlist "103.219.39.*" > realmlist.wtf

start Wow.exe
goto end

Run the script, and the client configuration will be complete. You can now enter the game.

The BaoTa panel is convenient for managing the system.

Here is the installation script for the BaoTa Linux panel.

CentOS:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 1ba5f33df

Ubuntu/Debian:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh 1ba5f33df

Install only the panel without any web services.

In the panel, set the API interface: Panel Settings -> API Interface, enable the interface, and save the API key, add the server IP to the whitelist

Open the following ports:

1001: Server connection port 1002: User login port 1003: MySQL database port 1004: SOAP port

Tags: World of Warcraft server setup debian TrinityCore game server

Posted on Fri, 05 Jun 2026 16:06:55 +0000 by richrock