March 23, 2024

How To Create a WoW Private Server (using TrinityCore)

Hey all! I’m Lucas & World of Warcraft gamer from 2007-2011, I loved TBC and WotLK. Unfortunately, I deleted WoW in 2012 and never came back… Well, until today!

In this post, I will create a Private Server of World of Warcraft (3.3.5a) based on TrinityCore.
Time effort: 30-60 mins.

What is TrinityCore?

TrinityCore Logo

TrinityCore is an open-source project, it’s a tool that emulates the WoW Blizzard server.

You can download TrinityCore via the Github page :

And yep, I’m planning to create a repack (server files) that will make it easy to set up your own server. It will make life easier.

My PC-Setup I use

I use my local hardware for the setup. It’s easier on Windows, but Linux is also supported. In this tutorial we will use Windows.
If you want to set up a server on Linux, check out this tutorial:

My hardware

  • RTX 3080 GPU
  • AMD Ryzen 7 5800X 8-Core CPU
  • 32 GB RAM

You don’t need that much hardware power, but safe is safe.

Starting Setting up the Server

Creating a World of Warcraft (WoW) private server using TrinityCore requires a good understanding, databases & server management. Below is a basic outline of how you can set up a WoW private server using TrinityCore. Remember that running a private server for World of Warcraft is against Blizzard’s terms of service, and this tutorial is for educational purposes only.


  1. Knowledge Requirements: Basic knowledge of SQL databases, command line operations
  2. Software Requirements:
  3. Hardware Requirements: A decently powerful computer for hosting the server. The specifications depend on the player load.

Setting up the Database

Install MySQL/MariaDB: Install a database management system like MySQL or MariaDB (remember, we use Xampp). Then, create a new database.

Start the MySQL service:

This is how XAMPP looks like

If it’s green and you see “Stop”, it’s started. Great! That means your database is now TURNED ON.

Download a database management tool: We’ll use HeidiSQL, as it is available completely for free.

image 1
This is how HeidiSQL looks like

Now, enter these details (these are the default values for XAMPP):

  • Hostname: localhost (as the database is on your machine)
  • User: root
  • Password: keep this empty!

Press “CONNECT” (in my image: Öffnen – I’m german)… and you’ll see the database:

image 2

Now, we need to create a table for the World of Warcraft database, that our TrinityCore server will use. I’ll show you how that works:

image 3

Rightclick your database (see red arrow) and go to “Create new – database”. Name it trinitycore and press OK:

image 4

Should now look like this:

image 5

Now click trinitycore and your database is … empty. Nothing in it, yet. This will change later.

Install CMake and a C++ Compiler: These are required for building TrinityCore from source.

  1. Download and Install CMake:
    • Visit the CMake download page and download the Windows installer.
    • Run the downloaded installer.
    • Follow the installation wizard instructions.
    • Make sure to select “Add CMake to system PATH for all users” during the installation process.
  2. Download and Install Visual Studio:
    • Visit the Visual Studio downloads page.
    • Download the Visual Studio Community Edition installer.
    • Run the installer.
    • During installation, select the ‘Desktop development with C++’ workload.
    • Make sure to select the optional components required for C++ development.
    • Complete the installation process.

Download and Build TrinityCore

  1. Clone TrinityCore Repository:
    • Open Command Prompt or PowerShell.
    • Navigate to the directory where you want to clone the TrinityCore repository.
    • Use the following command to clone the repository:
git clone

Generate Build Files with CMake:

  • Open Command Prompt or PowerShell.
  • Navigate to the TrinityCore directory that you’ve just cloned.
  • Create a new directory named ‘build’ within the TrinityCore directory. This is where the build files will be generated.
  • Navigate into the ‘build’ directory.
  • Run CMake to generate the build files. You’ll specify the Visual Studio generator
  1. Build TrinityCore:
    • Open the generated solution file (TrinityCore.sln) in Visual Studio.
    • Build the solution by selecting ‘Build’ > ‘Build Solution’ from the Visual Studio menu.

With TrinityCore successfully built, you’re ready to configure and run your private server.

Download & Install Boost

  1. Boost: Depending on your Boost version, you may require a newer version of CMake. Here’s an example: Boost 1.80 requires CMake 3.24.2 (with 3.24.1 it will display warnings).
    • Download the prebuilt Windows Binary for Visual Studio 2022 (or higher).
    • Here’s the link for the minimum version: 64bit Boost 1.78.0
    • If you prefer a higher Boost version, check this link. Note that not all versions are currently supported by TrinityCore (minimum is 1.78) or CMake (e.g., CMake 3.24.1 will throw CMake errors with Boost 1.80).
    • Install the package to the default location (usually C:\local\boost_1_XX_0\).
    • Add an environment variable to the “System” variable named BOOST_ROOT with the value of your Boost installation directory, e.g., C:/local/boost_1_73_0. It’s important to use “/”, not “” when pointing to the directory. Make sure that it does not have a trailing slash at the end of the path. If you encounter problems, add the same variable in the “USER” variables section as well.
  2. CMake:
    • Download and install the Latest Release -windows-x86_64.msi file. NEVER download the RC (Release Candidate) versions.
    Download here:
    • Select “Microsoft Visual Studio 2022” and do not select the Win32 platform.
    Note: If you’re using a different MySQL server such as Wampserver with included MySQL or any other software, you’ll need to point CMake to that directory (similar to how it was done for Boost). Add an environment variable to the “System” variable named MYSQL_ROOT with the value of your MySQL installation directory, e.g., c:/wamp/bin/mysql/mysql5.7.19. Remember to use “/”, not “” when pointing to the directory. (Using bundled MySQL servers is at your own risk and is not supported.)
  3. MySQL development files:
    • These files are typically shipped with MySQL Server. Search for them in the program files directory: MySQL\MySQL Server 8.X\lib and MySQL\MySQL Server 8.X\include.
  4. OpenSSL:
    • Download the 64-bit version. – here:
    • Depending on the MySQL version you installed, select a compatible OpenSSL version
      • For MySQL 8.0.34 and newer, use OpenSSL 3.
      • For MySQL 8.0 to 8.0.33, use OpenSSL 1.1.1.
    • Find the 64-bit version by locating the latest Win64 OpenSSL that is NOT the “light” version. For example: Win64 OpenSSL v3.1.2.
    • While installing OpenSSL, choose “The OpenSSL binaries (/bin) directory” (NOT “The Windows system directory”) when given the choice on where to copy the OpenSSL DLLs. These DLLs will need to be located easily for Core Installation.

While installing OpenSSL, choose The OpenSSL binaries (/bin) directory (NOT “The Windows system directory”)
when given the choice on where to copy the OpenSSL DLLs. These DLLs will need to be located easily for Core Installation:


(Optional) If you use different PCs to compile/run Trinity, install one of the following packages on your Server-PC to avoid missing dependencies (depending on your Visual Studio Version and your Server-PC Operating System):

  • Microsoft Visual C++ 2022 Redistributable Package.

Note: TrinityCore cannot be run on Windows XP, Windows Server 2003, or Windows Vista.

Windows Core Installation

Cloning a repo via Git Gui
  1. Pulling the Source:
    • Create a directory where Core files will be pulled, for example: C:\Trinity.
    • Right-click on the directory and select Git Extensions -> Clone (or on recent versions: GitExt Clone…).
    • Fill in the data as follows:
      • For 3.3.5 (WotLK Client): This will clone the 3.3.5a branch, recommended for starters and those wanting playable content.
      • For master (currently Dragonflight client): This will clone the master branch. Note that this is NOT recommended for starters as it doesn’t ship most content after 3.3.5a.
    • Click Clone. Within a few minutes, all TrinityCore source files will be pulled into the directory C:\Trinity.
    Note: If you don’t specify a branch, Git will pull master by default.
  2. Configuring and generating Visual C++ solutions with CMake:
    • Before you begin, create an empty directory called Build. In this example, we will use C:\Build.
    • Click Browse Source… and select the source directory (C:\Trinity).
    • Click Browse Build… and select the build directory (C:\Build).
    • Click Configure.
    • Make sure that “Use default native compilers” is checked (should be checked by default).
    • In the drop-down menu, choose the version of the compiler you downloaded in the Software Required section. Be sure to choose the Win64 version if you’re working on 64-bit compilation.
    • Click Finish.
    • Make sure Tools is checked already. This will compile the map extractors needed later in the setup. In the master branch (up to 6.2.4 tag), this will also generate connection_patcher.exe.
    • Click Configure again. As long as you have error(s) typed in red in the log window, you will have to check your parameters and click again on it.
    • Click Generate. This will install the selected build files into your C:\Build folder.
  3. Compiling the Source:
    • In Visual Studio, browse into your C:\Build folder and open TrinityCore.sln with Visual Studio Community. Alternatively, you can use the button [Open Project] in the CMake window to open the solution directly with VS.
    • On the menu at the top, click Build and select Configuration Manager.
    • Set Active Solution Configuration to RelWithDebInfo.
    • Right-click ALL_BUILD and select Build, or go to the Build menu and click Rebuild Solution (Ctrl+Alt+F7).
    • If your GUI does not show Solution Explorer, click the Build menu and select Rebuild Solution.
    • Compilation time varies from machine to machine, typically taking between 5 and 30 minutes.
    • If you are asked to “Reload build files” during the compile, do so.
    • When the build is complete, you will find a message similar to the one below (the numbers may be different):vbnetCopy code========== Build: 22 succeeded, 0 failed, 0 up-to-date, 1 skipped ==========
    • Your freshly compiled binaries will be in the C:\Build\bin\RelWithDebInfo or C:\Build\bin\Debug folder. These are all used to run your server at the end of this instruction.
    Note: pdb files only exist if you compile on Debug or RelWithDebInfo modes. It’s not mandatory, but it’s recommended to compile the core on at least RelWithDebInfo mode to get proper crash logs. To report crash logs, it’s MANDATORY to compile on Debug or RelWithDebInfo mode.Please remember to rename the worldserver.conf.dist and authserver.conf.dist / bnetserver.conf.dist files to worldserver.conf and authserver.conf / bnetserver.conf respectively, unless you want to keep the configuration files of a previously compiled version of the core.
  4. Keeping the Source Up-to-Date:
    • TrinityCore Developers are always at work fixing and adding new features to the core. You can always check them here, or by viewing them from within Git Extensions.
    • Open your TrinityCore repository in GitExtensions.
    • Click on the blue arrow.
    • In the new window, click Pull. This will sync your local repo to the latest commits from the branch you have set up as default.
    • Now you will need to re-run CMake Configure & Generate to update your solution (.SLN) files.
    • Compile the downloaded source.
    • Run worldserver; it will apply all new SQL files (you can see that in the console).

Creating the Map Files (with Tools)

  • Now switch to the bin/RelWithDebInfo folder and you’ll find 4 exe files:


  • Copy them to your WoW directory and run each of them. First mapsextractor.exe, then vmap4extractor.exe, then vmap4assembler.exe, then mmaps_generator.exe (this will take some time)
  • Copy the generated folders to your server directory

How to become a GM / Admin

Follow these steps to establish your authority and create login accounts.

Server Initialization

Once you’ve completed all the necessary setup steps, it’s time to launch your server. Start by running the authserver (or bnetserver on the master) to kickstart your server. Keep in mind that the authserver allows you to log in with your username (email on master)/password to access the Realm Selection screen. Meanwhile, the worldserver facilitates connection to the realm itself. Once you’re in-game, you can safely close the authserver if you prefer no one else to connect to the server.

Important Note: Avoid creating accounts directly in your database unless you’re absolutely confident in your understanding of the process.

Creating Login Accounts

To create a login account, enter the GM command directly into the worldserver window using the syntax: account create (or bnetaccount create on master). Here’s an example syntax:

account create <user> <pass>

If you want to designate the account as a GM, follow up with:

account set gmlevel <user> 3 -1

In this command, $account represents the account name to be changed, #level denotes the GM level (ranging from 0 to 3, with 3 being the highest), and #realmid indicates the realm ID. Setting the GM level to “3” grants full GM access.

Step 3: Accessing GM Commands

Access the world database using your database management tool and locate the command table. This table provides a comprehensive list of GM commands, including their descriptions and the required security level (GM level) to use them. Make sure to keep your database up-to-date for the most accurate information. The security level of a command determines which GM levels can utilize it, along with all higher GM levels.

Step 4: Logging into the Server

Minimize your server windows and launch WoW. Avoid using the Launcher to launch WoW unless you’ve edited the file’s patchlist option. Log in using the account credentials you just created. You should see the Trinity realm available for selection. Log in, create a character, and you’re ready to roll!

Account Creation Examples:

Here are examples for both 3.3.5 and master:

  • For 3.3.5:
    • Create account: account create <user> <pass>
    • Set GM level: account set gmlevel <user> 3 -1
  • For master:
    • Create account: bnetaccount create <user> <pass>
    • Set GM level: account set gmlevel <user#realm> 3 -1

Note: The username used for setting GM level differs from the username created with bnetaccount. You must manually find the username in auth.account.username.

Share this post:

Discover more articles