TrinityCore Series: World of Warcraft TrinityCore 3.3.5 (24011) Server Setup Guide for Dummies
本文最后更新于 171 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。
Article Abstract
This article records in detail the complete process of setting up a World of Warcraft TrinityCore 3.3.5 (24011) version server on a Debian 12 system, covering key steps such as environment configuration, compiler tool installation, MySQL database deployment, and map data extraction and import. Addressing the Boost library dependency issue caused by version upgrades, it was resolved by modifying the cmake configuration and installing missing components. It is particularly emphasized that database deployment needs to be planned on an independent server in advance to avoid service interruption, and public network access is achieved by adjusting the realmlist table configuration. Finally, the server was successfully run, account creation and GM permission configuration were completed, and it is pointed out that subsequent modules such as registration websites and NPC bots can be expanded to provide a foundation for multi-user collaboration and functional expansion.
Qwen3-14B · 2026-06-18

Choice of Environment

As for which specific environment to use for deployment, it depends on your own choice; you can use Windows or Linux. Since my home server is running PVE virtual machine 7.4 (based on Debian 11), I will use the latest Debian 12 to set it up.

Since the latest version of TC 3.3.5 is currently 24011, I will use this version:
https://github.com/TrinityCore/TrinityCore/releases/tag/TDB335.24011

image.png

Preparation: Before the formal installation, make sure you have completed the system initialization, including the installation of the Debian 12 system (virtual machine, physical machine, or LXC are all fine; I am currently using LXC), related configuration of root user privileges (depending on personal habits, including allowing root username login, installing and allowing SSH password login, etc.; of course, key-based login is more secure), IP address configuration, replacement of apt sources with domestic mirrors, etc.

Start Setting Up

Assuming the above steps have been completed, let's formally enter the setup steps:

Install compilation tools, related libraries, and MySQL database

# routine, update data sources-get update-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
#boostdependencies, as follows
apt-get install -y libboost-dev \-system-dev \-filesystem-dev \-program-options-dev \-iostreams-dev
# zlibin zlib1g-dev
apt-get install zlib1g-dev
# openssl
apt-get install libssl-dev 
# readline
apt-get install libreadline-dev-dev-common libmariadb-dev-compat libmariadb-dev-client mariadb-server

Note 1: For different versions of Debian or Ubuntu, the above commands may not be exactly the same. The system I installed at that time was the newly released Debian 12. If you use a different version later, the default libraries may vary, so you might need to make minor adjustments based on your actual environment.
Note 2: Another issue is whether the device deploying TC is always kept on. This is because a later issue involves the account registration website needing to write to the database. If the machine where the database is installed is shut down, the registration website cannot be used during shutdown. This was also a problem I encountered, which forced me to first migrate the database to a virtual machine, and then to another device dedicated to running containers. Exporting and importing data back and forth was a real pain. If you plan to set up an account registration website in the future, you should plan from the very beginning to find a dedicated device that runs 24/7 to host the database. Of course, if it is a cloud server, there is no such problem. Using my own home server is a bit of a hassle because of noise, power consumption, etc., requiring scheduled power-ons and power-offs.

Create wow user

Operate using the root account

adduser wow

Agreed Directories

# 以wow权限执行
su wow
cd

su wow

# TrinityCore源码目录
mkdir /home/wow/TrinityCore

# 服务器程序目录,最终完成后会包含etc,bin,data三个子目录
mkdir /home/wow/server3.3.5

# 客户端目录。后面用于存放客户端版本,提取客户端数据
mkdir /home/wow/client12340

To facilitate subsequent operations, prioritize creating the following 3 directories https://blog.csdn.net/fanrongwoaini/article/details/113864338 # TrinityCore source directory

Server-side source code download:

image.png

If GitHub is inaccessible, you can also download it from the following link:Invincible File Sharingmkdir /home/wow/TrinityCore”blog.tangwudi.com“# Server program directory, which will eventually contain three subdirectories: etc, bin, and datamkdir /home/wow/server3.3.5# Client directory. Used later to store the client version and extract client data

cd /home/wow/TrinityCore
wget https://github.com/TrinityCore/TrinityCore/archive/refs/tags/TDB335.24011.zip
#解压
unzip TDB335.24011.zip

Note: Because at the very beginning I referred to the article by CSDN blogger "开始沸腾了" (

Client-side download

, thanks to him for his great article), and only when I finished writing the article did I realize he had made a typo... But the screenshots were already taken and couldn't be changed (I only re-took a few screenshots in the middle, but most of them used old screenshots from the previous version)~ I am someone who pays great attention to naming conventions and strictly requires them of others in projects, so this issue made me very uncomfortable (although it actually has no impact, my OCD really suffered)... It really is: "a single slip can cause lasting sorrow." In short, just don't mind this error in the screenshots... I have changed all the commands to 3.3.5.
, access password is: "
https://pan.baidu.com/s/1O0cAfuWe6B4S1faNhK04UA?pwd=6ah9

cmake

su wow
cd /home/wow/TrinityCore/TrinityCore-TDB335.24011
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server3.3.5 #构建项目

image.png

/home/wow/TrinityCore

vim /home/wow/TrinityCore/TrinityCore-TDB335.24011/cmake/genrev.cmake

cd /home/wow/TrinityCore

image.png

wget https://github.com/TrinityCore/TrinityCore/archive/refs/tags/TDB335.24011.zip

image.png

Then save and exit.

Then the following error occurred again:

image.png

This is because the ”boost_locale” package is missing, so we need to install this package. First, check which packages contain boost-locale:

apt search boost-locale

The following results are displayed:

image.png

Then we install the missing packages:

sudo apt-get install libboost-dev
sudo apt install libboost-locale1.74-dev #这里可能大家要根据自己当时的版本做微调

sudo apt install libboost-locale1.74-dev # Here, you may need to make minor adjustments based on your version at the time

cd /home/wow/TrinityCore/TrinityCore-TDB335.24011/build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server3.3.5

Success:

Compile

make -j $(nproc) install

cd /home/wow/TrinityCore/TrinityCore-TDB335.24011/build

image.png

ls /home/wow/server3.3.5

image.png

After successful compilation:

image.png

ls /home/wow/server3.3.5

image.png

In these 2 directories, under bin are the executable files, and under etc are the configuration files.

Map data loading

Create data directory

Used to store map data

mkdir /home/wow/server3.3.5/data

Modify configuration files

把Under etc are 2 configuration file templates, which are required by the two programs mentioned above and will be used later.和mkdir /home/wow/server3.3.5/dataworldserver.conf.dist

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

Copy each of them, and then remove the suffix **.dist**

Extract map data from client

cp /home/wow/server3.3.5/etc/worldserver.conf.dist /home/wow/server3.3.5/etc/worldserver.conf
cd /home/wow/client12340/wow-3.5.5
Note: There are many game options in TC's worldserver.conf. I will write a dedicated article to introduce them when I have time. Before that, you can search online first; there are a ton of articles dedicated to introducing them.

cd /home/wow/client12340/wow-3.5.5

image.png

Copy the downloaded client to the agreed client directory /home/wow/client12340 above, and enter the directory

  • cd /home/wow/client12340/wow-3.5.5
/home/wow/server3.3.5/bin/mapextractor

image.png

image.png

cp -r dbc maps /home/wow/server3.3.5/data
  • DBC and Maps files
/home/wow/server3.3.5/bin/vmap4extractor

image.png

mkdir vmaps
/home/wow/server3.3.5/bin/vmap4assembler Buildings vmaps

image.png

cp -r vmaps /home/wow/server3.3.5/data
  • /home/wow/server3.3.5/bin/vmap4extractor
mkdir mmaps
/home/wow/server3.3.5/bin/mmaps_generator

image.png

cp -r mmaps /home/wow/server3.3.5/data
cd /home/wow/server3.3.5/data
ls

image.png

Database Configuration

cd /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/create/

image.png
Movement Maps (aka mmaps)

mkdir mmaps

mysql -u root -p -h 127.0.0.1 #如果非默认的3306,就用-P参数后加端口

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

image.png

show databases; 

ls

image.png

cd /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/create/
The files in this red box are the ones we will use.

source /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/create/create_mysql.sql

image.png

show databases;

image.png

mysql -u root -p -h 127.0.0.1 # If it is not the default 3306, use the -P parameter followed by the port

Note: If both the mariadb database and Trinitycore are on the same machine, connect using 127.0.0.1. However, if the database is separated, like in my case where I use a separate Mac mini to run the database (e.g., 192.168.10.130 in the figure below), you can deploy the database according to your own planning:

use auth;
source /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/base/auth_database.sql
use characters;
source /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/base/characters_database.sql

You can view the current default databases

There are 4 databases by default.
There are many tables in the auth database, one of which is very important, namely realmlist. It contains the port and address that the main program worldserver listens to, as well as the game version ID, etc. Here, it depends on whether you just want to play at home by yourself, or put it on the network (private network or public network) for everyone to play together. Different needs require different settings.

The following command is to view the specific content of items such as id, name, port, address, etc., in the realmlist table of the auth database, which also affects how you play later.

use auth;
select id,name,port,address,localaddress,gamebuild from realmlist;

image.png

select id,name,port,address,localaddress,gamebuild from realmlist;
The port determines the port that the main worldserver program listens to. There is no need to change this, just use the default. The important part is the address. Generally speaking, if the database and the main program are installed on the same server, then this address can just be set to the interface address of this server (for LAN play). However, if it is published on the internet, then the address setting here is very important. If you purchased a cloud server and have a fixed public IP address, you can directly set it to the public IP address here, or of course, use the domain name corresponding to the public IP. If it is set up in an intranet, and the public IP address is on the egress device with port forwarding configured, then this should be set to the public IP address on the egress device, or the corresponding domain name.

use auth;UPDATE realmlist SET address = '【your_ip】' WHERE id = 1

use auth;UPDATE realmlist SET address = '【your_ip】' WHERE id = 1

image.png

Edit configuration files

After modification, it looks like this:

vim /home/wow/server3.3.5/etc/authserver.conf

vim /home/wow/server3.3.5/etc/authserver.conf
Try to keep the default values for ports and addresses; the key part is as follows:“
LoginDatabaseInfo = “127.0.0.1;3306;trinity;trinity;auth”

image.png

If you are playing on the local machine, such as running the server on Windows and opening the client on the same machine, you don't need to change this. However, if the database and the server program are not on the same host, you need to modify this. For example, I changed it to the IP address of the database in the local area network, 192.168.10.130, port 3306:

vim /home/wow/server3.3.5/etc/worldserver.conf

vim /home/wow/server3.3.5/etc/worldserver.conf“
DataDir = ”.”

DataDir = "/home/wow/server3.3.5/data

image.png

LoginDatabaseInfo     = "127.0.0.1;3306;trinity;trinity;auth"
WorldDatabaseInfo     = "127.0.0.1;3306;trinity;trinity;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"

LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"

image.png

Start the server

Run authserver first

/home/wow/server3.3.5/bin/authserver

image.png

CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
202309070102175.png

Then run worldserver

/home/wow/server3.3.5/bin/worldserver

202309070104592.png

/home/wow/server3.3.5/bin/authserver
Note: The error below is very frustrating. In previous versions, if you used MariaDB, this error would occur. I searched all over foreign forums, and at that time, the advice from experts was to just use MySQL, because the combination of TC and MariaDB easily triggers this error. Crucially, when installing MySQL via apt back then, the default DB was just replaced from MySQL to MariaDB... This wasted a lot of my time, having to reinstall MySQL and recompile, which was a real pain... Fortunately, starting from the version 23061 I am installing now, the latest MariaDB is supported, so you don't have to go through all that trouble.

cd /home/wow/server3.3.5/bin/
wget https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.24011/TDB_full_world_335.24011_2024_01_21.7z

Do you remember that we only initialized the two databases, auth and characters, earlier? The world database was not initialized and is empty, which is why this error occurs here.Invincible File Sharingmkdir /home/wow/TrinityCore”blog.tangwudi.com“So, download according to the address prompted below:cd /home/wow/server3.3.5/bin/wget https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.24011/TDB_full_world_335.24011_2024_01_21.7z
Note: If GitHub is inaccessible, you can also visit the following link to download:

apt-get install p7zip-full

/home/wow/server3.3.5/bin/

7z x TDB_full_world_335.24011_2024_01_21.7z

Install 7-Zip:

./worldserver

image.png

Extract:
image.png

7z x TDB_full_world_335.24011_2024_01_21.7z

Log into the world

Add account

Run worldserver again:

Create account

./worldserver

TC> account create wow1 wow1
TC> Account created: wow1

Upgrade to GM

Success.
Here, I created an account with the username wow1 and password wow1, and upgraded it to GM level.

TC> account set gmlevel wow1 3 -1
TC> Security level of account WOW1 changed to 3.

Client configuration

TC> account create wow1 wow1TC> Account created: wow1You can promote wow1's gmlevel to 3 to upgrade it to a GM account. Enter the following in the worldserver command line:

#在本地跑ip用127.0.0.1,这个ip对应上面realmlist中的address,我这里因为是放在互联网上,所以用的域名,如下:
echo y | rd /s "Cache"
echo SET realmlist "wlk.example.com" > Data\zhTW\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\enTW\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\zhCN\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\enCN\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\enUS\realmlist.wtf
echo SET realmlist "wlk.example.com" > realmlist.wtf
start Wow.exe

Then, run the script. At this point, the client connection configuration is successfully initialized and you can log in to the game. In the future, you can just run wow.exe directly to log in.

If you want authserver and worldserver to start on boot, you can refer to my other article:Debian Series: 3 Common Ways to Set Commands or Scripts to Run at Startup。

For how to build a high-end registration website to go with user registration, see my other article:TrinityCore Series: Deploying World of Warcraft TrinityCore 3.3.5 Registration Website

Regarding account registration, in addition to directly adding account data in the backend as mentioned in this article, you can also build a dedicated registration website yourself to complete it (for detailed steps, please refer to my other article:TrinityCore Series: Deploying World of Warcraft TrinityCore 3.3.5 Registration Website), I have also built a demo website for the registration website, the URL is as follows:Invincible Azeroth, you can check out the effect first.

Afterword

Actually, if it is just set up to play, it is very simple. Just install both the database and the server-side software on one host (such as a cloud host). However, because my requirements became more and more later, and the databases of many applications used the same mariadb, I later created a separate independent database and imported the original data over. Anyway, it was just all kinds of tossing. Therefore, it is recommended that everyone think about it at the very beginning. If this database is originally only for wow, then it is fine to install it on one device. If there are other plans in the future, it is recommended to separate them at the beginning to avoid tossing again later. And, if you have more ideas, such as adding npcbots (refer to my other article:TrinityCore Series: Adding npcbots to version 3.3.5 (24011)), it is recommended that everyone still learn some routine operations of the database, after all, there are quite a few database operations involved later.

P.S.: Actually, I didn't really want to write this article at first. After all, the blogger ”开始沸腾了” wrote a very good article. However, TrinityCore has upgraded two minor versions. Especially at his time, TrinityCore version 22061's default database was MySQL, but in the next version 23061, it became MariaDB. The change was very big, and the installation details also changed a lot. I had to re-record it, which is why I wrote this article. Generally, I wouldn't spend energy rewriting excellent articles.

View Related Categories · 3 Matches
📌 Content Structure Prompt:
This content is part of the following knowledge map, where you can view the complete content path: Blog Knowledge Map。
📎 Related Articles
Share this article
The blog content is original, please indicate the source when reposting! The RSS address of the blog is:https://blog.tangwudi.com/feed, welcome to subscribe; if needed, you can join theTelegram Groupto discuss questions together.

Comments

  1. Ruomi
    Windows Chrome 130.0.0.0
    2 years ago
    2024-11-04 21:31:57

    OP, let me ask, if it is just a small group of 100 people, what server configuration would be enough?

    • Owner
      Ruomi
      Macintosh Chrome 130.0.0.0
      2 years ago
      2024-11-04 23:12:28

      A few hundred people would still need some consideration, but 100 people is not many. I think any current mainstream computer can do it. For Win, 16G of memory is definitely stable; for Linux hosts, 8G of memory is probably enough, and I don't know if 4G of memory will work.

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗ
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
Kaomoji
Emoji
Little Dinosaur
Flower!
Previous
Next
       

👋 Welcome to “Wudi's Personal Blog”

Here, long-term exploration is mainly carried out around the following directions:

🧱 Personal Digital Infrastructure and Blog System Construction
☁️ Cloudflare and Network Architecture Practice
🧠 AI and Knowledge System Exploration
🛡️ Network Security and Access Optimization
🎵 Music and Sound Cognition
👁️ Cognitive Perspectives and Worldviews