AzerothCore is a free, open-source server emulator for World of Warcraft 3.3.5a (Wrath of the Lich King). It lets you run your own WoW private server using two server programs, a MySQL database and optional modules that add features.

What is AzerothCore?

AzerothCore is server software that recreates the server side of World of Warcraft as it was in patch 3.3.5a. It is written in C++, developed in the open on GitHub, and focused on that single game version. Because all of its work goes into one version, it aims for stable, accurate Wrath of the Lich King content rather than support for many expansions at once.

The project is run by volunteers. Fixes arrive as a steady stream of changes rather than big releases, so owners update from the source and rebuild every so often.

Where does AzerothCore come from?

AzerothCore belongs to the same family of emulators as MaNGOS and TrinityCore. It began in 2016 from SunwellCore, a code base that was itself built on TrinityCore. Its goals were a cleaner code base, a modular design and a long-term focus on 3.3.5a. Today it is one of the most used emulators for Wrath of the Lich King servers, alongside TrinityCore.

What do authserver and worldserver do?

An AzerothCore server is two programs that run side by side:

  • authserver handles logins. It checks the account name and password, then sends the client the list of realms it can join. It listens on port 3724 by default.
  • worldserver runs the game itself: the world, creatures, quests, combat, chat and every connected player. It listens on port 8085 by default and has its own console, where you run commands such as creating accounts or announcing a restart.

One authserver can list several realms, and each realm is a separate worldserver. Most servers run one of each. Each program has its own configuration file, where you set the database details, the realm name, the rates and many gameplay options.

Which databases does it use?

AzerothCore stores its data in MySQL or MariaDB, split across three databases, named acore_auth, acore_characters and acore_world by default:

  • auth - accounts, account permissions, bans and the realm list
  • characters - characters, items, guilds, mail and progress
  • world - the game content: creatures, items, quests, spawns and loot

AzerothCore creates and updates the world database itself, so you rarely edit it by hand except to add custom content. The auth and characters databases hold your players' data and are the ones to back up most carefully.

The worldserver also needs map, collision and pathfinding files generated from a compatible game client with the extractor tools that come with the project. They are a large part of its memory use.

What are AzerothCore modules?

Modules are add-ons that extend the server without changing the core source code. A module is a folder of code, often with its own configuration file and SQL changes, that you place in the modules folder of your AzerothCore source and build together with the core. Popular modules add features such as transmogrification, automatic scaling of dungeons for small groups, custom NPCs and extra commands.

Because modules live apart from the core, you can update AzerothCore without redoing your custom work, as long as each module stays compatible. Keep these points in mind:

  • Adding or removing a module means rebuilding and restarting the server.
  • Many modules include SQL that has to be applied to the right database.
  • Modules are written by different people and kept up to date at different speeds, so test each one on a copy before adding it to a live realm.

Which client do players need, and how do they connect?

Players need a compatible World of Warcraft 3.3.5a game client. AzerothCore does not provide one, and current retail or classic clients cannot connect to it.

The client finds your server through its realmlist. In 3.3.5a this is a small text file named realmlist.wtf, usually in the language folder inside the client's Data folder, holding one line:

set realmlist your.server.address

On the server, the realm entry in the auth database must also hold your server's public address. If it still holds the local address, players can log in but cannot enter the realm, because authserver sends them to an address they cannot reach. Ports 3724 and 8085 must be open in the firewall. Configuring Your WoW Private Server covers the realmlist, the configuration files and the ports in more detail.

What hardware matters as the player count grows?

  • Memory is the main limit. The worldserver keeps the game world, creatures, spells and player data in memory, and its use grows with the number of players online and how much of the world they are active in.
  • CPU speed matters for a smooth game. The worldserver updates every active map many times a second, and it can spread map updates across several threads, so extra cores help as more areas get busy.
  • Fast storage keeps database saves and start-up quick, which matters more as the characters database grows.
  • Network protection matters more than raw bandwidth. Each player uses little traffic, but game servers are common targets for DDoS attacks.

Size the server for your busiest hour, not the average, and leave headroom for events, new content and modules, which all add to memory use.

How does AzerothCore run on HostBarrel?

HostBarrel's WoW Private Server Hosting runs AzerothCore 3.3.5a on Ubuntu, delivered with the database and dependencies set up and ready for players. Plans are sized by player count, and the larger plans have more RAM for the reasons above. Every plan includes DDoS protection and full root SSH access, so you can edit the configuration, add modules, rebuild the server and manage the databases from the command line or phpMyAdmin. Every plan except the entry plan also includes a free website panel with player registration, a character Armory and an ItemStore. For your first steps, see Getting Started with WoW Private Server Hosting.