Setting up a TrinityCore WoW server takes a few hours of focused work, but the process is completely doable even if you have never compiled software before. I built my first TrinityCore private server over a weekend, and the steps below walk you through exactly what I did to extract client data files and get a working Wrath of the Lich King realm running on my home machine.
This guide covers the full TrinityCore WoW server installation for the 3.3.5a client in 2026, from matching client versions and running extractor tools to configuring worldserver.conf and importing the MySQL databases. Whether you want a single player sandbox, a private realm for friends, or a full development environment, these steps apply.
Table of Contents
What Is TrinityCore and Why Run a Private WoW Server
TrinityCore is a free, open-source MMORPG server framework that emulates World of Warcraft. It reads game data extracted from the actual WoW client and simulates the server side of the game, handling player connections, character storage, NPC behavior, and quest logic. The project is derived from the older MaNGOS codebase and now supports multiple expansions, with the 3.3.5a branch (Wrath of the Lich King) being the most stable and widely used.
People run TrinityCore for several reasons. Some want a single player experience with bot companions to revisit the game they love. Others host private realms for friend groups with custom rates and modifications. Game developers and researchers use TrinityCore as a learning platform to study MMORPG architecture, and content creators build modified servers for unique scenarios. Whatever your goal, the core installation steps are identical.
The TrinityCore project is community-driven, with active development on GitHub, a support forum at talk.trinitycore.org, and a Discord community. The wiki documentation is thorough but assumes technical familiarity, which is why this guide adds plain-language explanations and beginner notes to each step.
TrinityCore Prerequisites and System Requirements
Before you write a single command, your machine needs to meet TrinityCore’s hardware and software requirements. The good news is that a modern gaming PC or a modest Linux VPS will handle a small server easily. I run my test server on a 6-core AMD processor with 16 GB of RAM and it handles 20 to 30 concurrent players without breaking a sweat.
Here is what you need before starting the TrinityCore WoW server installation:
- Operating system: Windows 10/11 (64-bit) or a modern Linux distribution (Ubuntu 22.04, Debian 12, CentOS Stream)
- CPU: Quad-core processor from the last 8 years; TrinityCore is single-threaded for most game logic but uses extra cores for map and network processing
- RAM: Minimum 8 GB; 16 GB recommended if you also run MySQL on the same machine
- Storage: 30 GB free for the WoW client plus another 5 GB for extracted data and compiled binaries
- Network: Stable broadband connection; upload speed matters more than download for hosting
- WoW client version 3.3.5a (build 12340): This is the only client version that matches the most stable TrinityCore branch
The client version matching step trips up many beginners. TrinityCore supports multiple client versions, but each server branch is locked to one specific client build. The 3.3.5a branch (also called the WotLK branch) requires a WoW client at exactly build 12340. If your client is a different build number, your server will refuse to accept connections or will crash with version mismatch errors. You can verify your client build by checking the file size of WoW.exe (it should be around 9.6 MB) or by opening the game and looking at the version string on the login screen.
Setting Up Build Tools for TrinityCore Compilation
TrinityCore is written in C++ and must be compiled from source code on your specific operating system. There is no pre-built “install and run” package that includes everything. The compilation step is what converts the source code into executables your computer can actually run. This is the part that scares most beginners, but modern build tools make it straightforward.
For Windows users, you need three things: Git for Windows to clone the TrinityCore repository, CMake to generate build files, and Visual Studio 2019 or 2022 (Community Edition is free) to compile the code. OpenSSL and MySQL Connector C++ are also required, and TrinityCore provides pre-built libraries to simplify this step.
Here is the Windows build tool installation sequence:
- Download and install Git for Windows from git-scm.com, accepting default options
- Download and install Visual Studio Community 2022, selecting “Desktop development with C++” workload during installation
- Download and install CMake from cmake.org, choosing “Add CMake to system PATH” during install
- Download the TrinityCore dependencies package matching your Visual Studio version from the TrinityCore wiki
- Extract the dependencies to C:TrinityCoredependencies
For Linux users, the equivalent setup is faster. On Ubuntu or Debian, run the following commands to install build dependencies:
sudo apt update
sudo apt install git cmake make gcc g++ mysql-client libmysqlclient-dev libssl-dev libboost-all-dev libbz2-dev libreadline-dev
Once dependencies are installed, clone the TrinityCore repository to your working directory. The 3.3.5a branch is what you want for the Wrath of the Lich King client:
cd /home/youruser
git clone -b 3.3.5a https://github.com/TrinityCore/TrinityCore.git
cd TrinityCore
mkdir build && cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/youruser/server
make -j$(nproc)
make install
The compilation step takes 15 to 45 minutes depending on your hardware. Linux builds are typically faster than Windows because the toolchain is more efficient. If you see CMake errors during this step, the most common causes are missing dependencies or wrong Visual Studio versions. Check the troubleshooting section below for specific fixes.
Client Data Extractors: What Each Tool Does
TrinityCore cannot read the WoW client directly. The client files are compressed and packaged in formats that include game logic, graphics, and proprietary data structures the server does not need. TrinityCore provides three extractor tools that pull out only the data the server requires: DBC files, map files, and movement maps. Understanding what each extractor does helps you diagnose problems when something goes wrong.
The three extractors are stored in your compiled server directory, usually at C:TrinityCorebin on Windows or /home/youruser/server/bin on Linux. Here is what each one produces:
| Extractor Tool | Output Folder | Purpose |
|---|---|---|
| mapextractor | dbc, maps | Extracts DBC files (client data tables) and basic map terrain data |
| vmap4extractor | vmaps | Extracts visual map data used for line-of-sight and collision detection |
| mmaps_generator | mmaps | Generates movement maps that control NPC pathfinding and player navigation |
DBC files are the client’s data tables. They contain everything from spell IDs and item stats to creature names and map dimensions. The server reads these to know what exists in the game world. Without DBC files, your server has no idea what spells, items, or NPCs exist.
Map files contain the actual terrain geometry for each zone. When a player moves through Azeroth, the server uses these files to determine elevation, water levels, and zone boundaries. Maps are mandatory for any server that wants to handle player movement correctly.
VMaps (visual maps) handle line-of-sight calculations. When an NPC needs to know whether it can see a player through a doorway or around a corner, it checks VMaps data. This is essential for hunter pet pathing, spell targeting, and stealth mechanics.
MMaps (movement maps) are the most computationally expensive to generate. They store pre-calculated navigation meshes that allow NPCs to find paths around obstacles. Without MMaps, NPCs will get stuck on every rock and pillar in the game world. Generation takes several hours on most machines.
How to Extract TrinityCore Client Data Files
The extraction process has four distinct stages, and each one must complete successfully before the next starts. I learned this the hard way when I skipped running vmap4extractor and spent two hours wondering why my NPCs were walking through walls. Run them in order, and check the output folder after each tool completes.
Step 1: Prepare the WoW client directory. Locate your WoW 3.3.5a installation folder. You will see folders named Data, Interface, and an executable file. You need the root folder, not the Data subfolder. Note the full path; you will need it for the next steps.
Step 2: Run mapextractor. This tool reads the client’s MPQ archives and writes DBC files and basic map data. On Windows, copy mapextractor.exe from your server’s bin folder to your WoW directory and double-click it. On Linux, copy it to the WoW folder and run it from the terminal.
cp /home/youruser/server/bin/mapextractor /path/to/wow/
cd /path/to/wow/
./mapextractor
The tool will create two new folders in your WoW directory: dbc and maps. The extraction takes 5 to 15 minutes depending on your storage speed. You should see console output listing each map as it is processed.
Step 3: Run vmap4extractor. This step extracts visual map data for line-of-sight calculations. Copy vmap4extractor.exe to your WoW folder and run it the same way you ran mapextractor. It will create a folder called Buildings. After it completes, run vmap4assembler.exe (included with vmap4extractor) to convert the Buildings folder into the final vmaps folder.
./vmap4extractor
./vmap4assembler
mv vmaps /path/to/server/data/
Step 4: Generate movement maps. This is the longest step. The mmaps_generator reads your vmaps and computes navigation meshes for every map in the game. Expect this to take 2 to 6 hours on a modern CPU. Run it from your server’s bin folder:
./mmaps_generator
When complete, you will have three folders in your server’s data directory: dbc, maps, vmaps, and mmaps. Move all four into the same data folder where your worldserver binary will look for them. The default location is C:TrinityCorebinRelWithDebInfo or /home/youruser/server/bin/ on Linux.
Configuring TrinityCore Config Files
TrinityCore uses three primary configuration files that control server behavior: worldserver.conf for game world settings, authserver.conf for account authentication, and bnetserver.conf for Battle.net integration (used by newer client versions). For the 3.3.5a branch, you primarily need worldserver.conf and authserver.conf.
The source code includes .dist versions of each config file. These contain all available settings with documentation comments. To activate a config, copy the .dist file and remove the .dist extension:
cp worldserver.conf.dist worldserver.conf
cp authserver.conf.dist authserver.conf
The most important settings to configure in worldserver.conf are:
- LoginDatabaseInfo, WorldDatabaseInfo, CharacterDatabaseInfo, HotfixDatabaseInfo: MySQL connection strings for each of the four databases TrinityCore uses
- DataDir: Path to the folder containing your extracted dbc, maps, vmaps, and mmaps
- RealmID: Numeric identifier for your realm (usually 1 for a single-server setup)
- GameType, RealmZone: Server type flags (PvP, PvE, Normal, etc.)
- Rates.Blizzard.* settings: Experience, loot, and reputation multipliers
For authserver.conf, the critical setting is LoginDatabaseInfo, which must match the MySQL credentials you set up in the database stage. Most beginners only need to change the password field, leaving the default username “trinity” and hostname “localhost.”
If you want to run your server on a different IP or port, edit BindIP and Port settings. The default port is 8085 for worldserver and 3724 for authserver. If you plan to expose the server to the internet, you will also need to configure firewall rules to allow these ports.
TrinityCore Database Setup and Import
TrinityCore uses MySQL or MariaDB to store account information, character data, and game world content. The project splits its data across four databases to organize different types of information. Setting up the database correctly is the most common stumbling block for new server administrators, mostly because of permission errors and import order mistakes.
The four TrinityCore databases are:
- auth: Stores account credentials, realm list, and login server data
- characters: Stores player characters, inventory, and character-specific data
- world: Stores NPC spawns, quests, items, game objects, and all content
- hotfixes: Stores client-side hotfix data that updates game tables
Here is the database setup process for a fresh installation:
- Install MySQL 8.0 or MariaDB 10.5 or newer on your server or local machine
- Start the MySQL service and connect as the root user
- Create a dedicated trinity user with privileges on the four databases
- Create empty databases for auth, characters, world, and hotfixes
- Import the base SQL files from the TrinityCore sql/base folder
- Import the full database SQL files from the sql/full folder (these contain all game content)
The MySQL user creation script looks like this:
CREATE USER 'trinity'@'localhost' IDENTIFIED BY 'YourSecurePassword';
GRANT ALL PRIVILEGES ON auth.* TO 'trinity'@'localhost';
GRANT ALL PRIVILEGES ON characters.* TO 'trinity'@'localhost';
GRANT ALL PRIVILEGES ON world.* TO 'trinity'@'localhost';
GRANT ALL PRIVILEGES ON hotfixes.* TO 'trinity'@'localhost';
FLUSH PRIVILEGES;
The SQL files are located in the TrinityCore source repository under the sql directory. The base folder contains schema files that must be imported first. The full folder contains content data and must be imported second. Importing them in the wrong order will result in foreign key constraint errors.
To import a SQL file from the command line:
mysql -u trinity -p auth < /path/to/TrinityCore/sql/base/auth_database.sql
mysql -u trinity -p characters < /path/to/TrinityCore/sql/base/characters_database.sql
For large world database files, the import can take 20 to 60 minutes. If you see “MySQL server has gone away” errors during import, increase the max_allowed_packet setting in your MySQL configuration file to 256 MB and restart the service.
Starting TrinityCore and Connecting Your Client
Once databases are populated and configs are set, you can launch the server binaries. Run authserver first, wait for it to fully initialize and show “Realm list ready” in the console, then start worldserver. Worldserver will download additional data from the client and may take several minutes the first time it runs.
To connect your WoW client to your local server, edit the realmlist file. On Windows, this is located at DataenUSrealmlist.wtf inside your WoW folder. Change the entry to:
set realmlist localhost
For remote servers, replace localhost with the server’s public IP address. You may also need to modify the DataDir configuration in your worldserver.conf to match the folder containing your extracted data files.
Create a game account through the authserver console by typing account create username password, then assign administrator permissions with account set gmlevel username 3 -1 (level 3 is administrator). Log into the game with these credentials and you will spawn in the starting zone with full GM access.
Troubleshooting Common TrinityCore Installation Errors
Even with careful preparation, TrinityCore installations encounter predictable errors. The TrinityCore forums and r/wowservers community have catalogued the most frequent issues, and most have well-known fixes. I will walk you through the five most common errors and exactly how to resolve them.
CMake cannot find OpenSSL. This error appears as “Could NOT find OpenSSL” during the cmake configuration step. The fix is to specify the path to OpenSSL explicitly:
cmake ../ -DOPENSSL_ROOT_DIR=/usr/include/openssl
On Windows, download the TrinityCore dependencies package and extract it, then point CMake to the dependencies folder with -DTRINITY_CORE_DEPENDENCIES_PATH.
MySQL connection refused on server startup. If worldserver shows “Cannot connect to MySQL database,” check that MySQL is actually running with systemctl status mysql or by opening the MySQL Workbench. Confirm your username and password in worldserver.conf match the credentials you created. Make sure the LoginDatabaseInfo, WorldDatabaseInfo, CharacterDatabaseInfo, and HotfixDatabaseInfo lines all have the correct password.
Client version mismatch errors. If the worldserver console shows “Client build mismatch” or players get disconnected immediately, your client build does not match the server branch. Verify your client is build 12340 for the 3.3.5a branch. Re-download the client if necessary from a trusted source.
Missing maps or vmaps errors. If the server complains about missing map files, the extraction did not complete successfully. Check that your data directory contains dbc, maps, vmaps, and mmaps folders. Re-run the extractors if any folder is missing or appears suspiciously small.
Missing DLL errors on Windows. Errors like “vcruntime140.dll is missing” or “MSVCP120.dll is missing” mean you need to install the Visual C++ Redistributable packages. Download both x86 and x64 versions from Microsoft and install them. These packages include the runtime libraries Visual Studio requires.
Slow mmaps generation or crashes. If mmaps_generator crashes partway through, your system may be running out of memory. Close other applications to free up RAM, or run the generator with fewer parallel jobs using the –threads parameter. Each thread uses approximately 1 to 2 GB of RAM during processing.
For errors not covered here, the TrinityCore forum has a dedicated troubleshooting section, and the community is generally responsive to well-formed questions. Include your operating system, TrinityCore branch, error messages from the console, and what you have already tried when asking for help.
Looking for related server administration topics? Browse our Server Setup and Game Server Administration guides for more tutorials.
Frequently Asked Questions About TrinityCore Installation
What client version do I need for TrinityCore?
For the most stable TrinityCore 3.3.5a branch, you need a Wrath of the Lich King client at exactly build 12340. Other branches support different expansions: the master branch uses recent retail clients, while legacy branches support TBC and vanilla versions. Version mismatch is the most common cause of connection failures, so verify your client build before troubleshooting anything else.
How long does TrinityCore compilation take?
On modern hardware, expect 15 to 30 minutes on Linux and 30 to 60 minutes on Windows for the initial TrinityCore compilation. The mmaps_generator step is separate and takes an additional 2 to 6 hours depending on your CPU and storage speed. Total time from source download to a working server is typically 4 to 8 hours.
Can I run TrinityCore as a single player server?
Yes, TrinityCore works perfectly for single player use. Point your realmlist to localhost, create one account, and play with no other users connected. Many players add Playerbot AI modules to fill the world with companion characters. The server handles single player identically to multiplayer except that no other clients connect.
Do I need MySQL for TrinityCore?
Yes, TrinityCore requires MySQL 8.0 or MariaDB 10.5 or newer. The server uses four separate databases: auth, characters, world, and hotfixes. MySQL can run on the same machine as the server for small setups, or on a separate database server for larger deployments. PostgreSQL is not supported by the TrinityCore project.
What are DBC, Maps, VMaps, and MMaps?
DBC files are client data tables containing spell definitions, item stats, and creature information. Maps contain terrain geometry for each zone. VMaps handle line-of-sight calculations for spell targeting and NPC vision. MMaps are pre-calculated navigation meshes that allow NPCs to pathfind around obstacles. All four must be extracted from your WoW client before the server can run.
Final Thoughts on TrinityCore WoW Server Setup
Installing TrinityCore and extracting client data files is a multi-stage process that rewards patience and methodical execution. The core flow is straightforward: match your client version to the 3.3.5a branch, compile the source code with CMake, run the three extractor tools against your WoW folder, configure worldserver.conf and authserver.conf, import the four MySQL databases, and launch the server binaries.
Most failed installations come from skipping steps or running them out of order. Take time to verify each stage before moving on, especially the client build number and the database import sequence. Once your server is running, the TrinityCore community offers extensive module support, custom script repositories, and active forums where you can find help with advanced configurations. If you want to learn more about customizing your private WoW server experience, explore our guides on game server administration.