How to Create a WoW 3.3.5a Private Server — AzerothCore & TrinityCore Step-by-Step
Complete step-by-step guide to compiling AzerothCore or TrinityCore, importing databases, extracting maps/vmaps/mmaps, and launching your own 3.3.5a realm.
By RealmRanking · WoW Community Editor
Share this article

Launching a World of Warcraft 3.3.5a private server in 2026 still starts with the same foundation: a stable emulator core, clean client data, and correctly configured auth/world services. This guide walks server owners through AzerothCore (recommended for most new realms) and notes where TrinityCore differs, so you can go from zero to a login screen without guessing which repository or config file comes next.
AzerothCore vs TrinityCore
AzerothCore (AC) is a fork focused on modularity, SQL-based scripting, and fast onboarding — ideal if you want battleground fixes, custom NPCs, and Discord-friendly documentation. TrinityCore (TC) is the long-running reference implementation many developers know; choose it if your team already ships TC patches. Both target 3.3.5a build 12340. This tutorial uses AzerothCore commands by default and calls out TrinityCore equivalents where paths differ.
Requirements before you compile
- A dedicated machine or VPS: 4+ CPU cores, 8 GB RAM minimum (16 GB recommended for live realms)
- MariaDB 10.5+ or MySQL 8.0 with utf8mb4 support
- Git, CMake 3.16+, and a C++17 compiler (Visual Studio 2022 on Windows; build-essential on Linux)
- A legal copy of WoW 3.3.5.12340 client files for extraction only — never redistribute Blizzard assets
- Open ports: 3724 (auth), 8085 (world), optional 7878 (SOAP/RA)
1. Prepare MySQL / MariaDB
Create a dedicated database user and three schemas. For AzerothCore the default names are acore_auth, acore_characters, and acore_world. Import the base SQL from the core repository (data/sql/base/) in order: auth → characters → world, then apply updates from data/sql/updates/. TrinityCore uses similar auth/characters/world splits under sql/base/. Grant your acore user full privileges on all three schemas.
2. Clone and compile the core
Clone AzerothCore with git clone https://github.com/azerothcore/azerothcore-wotlk.git --depth 1, then init submodules. On Windows, run the provided acore dashboard installer or open the CMake solution and build authserver and worldserver in Release. On Linux: mkdir build && cd build, cmake ../ -DCMAKE_INSTALL_PREFIX=~/acore, make -j$(nproc), make install. TrinityCore follows the same pattern from github.com/TrinityCore/TrinityCore with branch 3.3.5.
3. Extract client data (DBC, maps, vmaps, mmaps)
Point the extractors at your 3.3.5.12340 client folder. Run map_extractor, vmap4_extractor, and vmap4_assembler, then mmaps_generator (this last step can take hours). Copy the resulting dbc, maps, vmaps, and mmaps folders into your server data directory. Mismatch between client build and extracted data is the #1 cause of crash-on-login — verify build 12340 before extracting.
4. Configure authserver.conf and worldserver.conf
- LoginDatabaseInfo / WorldDatabaseInfo / CharacterDatabaseInfo — host, port, user, password, schema names
- RealmID = 1 and bind IPs (0.0.0.0 for public VPS)
- DataDir pointing to your extracted folders
- Rates (XP, drop, gold) — start conservative; rebalance after beta feedback
- Motd and RealmName — players see these on the realm list
5. Insert the realm row and create a GM account
In acore_auth.realmlist, add your realm: id 1, name, address (public IP or DNS), port 8085, gamebuild 12340. Create an account via the in-game console or auth database: .account create admin password, then .account set gmlevel admin 3 -1. Set your client realmlist.wtf to set realmlist your.server.ip (see our WoW 3.3.5a client setup guide).
6. Start services and test locally
Start authserver first, then worldserver. Watch the console for missing maps or SQL errors. Log in with a fresh account, create a character, and verify trainer, spell, and quest scripts. Run a stress test with bots or friends before opening to the public. Snapshot your database after a clean beta weekend.
7. Production checklist
- Configure firewalls — only expose required ports
- Set up daily MySQL backups and test restores
- Enable anti-cheat and GM ticket logging
- Publish connection steps on your website (client + realmlist + patches)
- List the realm on RealmRanking with accurate tags (x rates, progression, PvP rules)
8. List your server on RealmRanking
Once your realm is stable, claim your listing on RealmRanking, upload a banner, and link this guide from your FAQ page. Players searching for new 3.3.5a realms discover servers through rankings and guides — accurate metadata and daily vote engagement keep you visible after launch week.
Article FAQ
AzerothCore is the most popular choice in 2026 for new 3.3.5a projects — active community, modular scripts, and straightforward Windows/Linux tooling. TrinityCore remains viable for teams already invested in its codebase or custom TC modules.
Use client build 3.3.5.12340 (Wrath of the Lich King). Your server databases, DBC files, and map extractors must match this build exactly.
Yes. Both AzerothCore and TrinityCore compile natively on Ubuntu/Debian. Use MariaDB, open ports 3724 (auth) and 8085 (world), and run authserver/worldserver under systemd or screen.
List your realm on RealmRanking with accurate rates and features, link this guide from your website, and encourage daily votes after your first raid lockout weekend.
Comments
Loading comments…

