Upstream project: https://www.azerothcore.org/
Everything not listed in this document should behave the same as upstream AzerothCore. If a feature, setting, or behavior is not mentioned here, the upstream documentation is accurate and applicable.
StartOS package for AzerothCore, an open-source World of Warcraft 3.3.5a (Wrath of the Lich King) server emulator. Runs the auth server, world server, and a MySQL database, auto-downloads client map data, and auto-configures the realm address for LAN play. You bring your own clean 3.3.5a game client.
This package shares the azerothcore package id with the Playerbots flavor
(the playerbots branch,
which runs the mod-playerbots
fork and populates the world with AI players). They are mutually exclusive — pick
one flavor in the marketplace; StartOS lets you switch between them in place,
preserving your world and characters.
- Image and Container Runtime
- Volume and Data Layout
- Installation and First-Run Flow
- Network Access and Interfaces
- Actions (StartOS UI)
- Connecting a Client
- Backups and Restore
- Health Checks
- Dependencies
- Limitations and Differences
- What Is Unchanged from Upstream
- Contributing
- License
- Quick Reference for AI Consumers
All images are AzerothCore's official prebuilt images, pinned to immutable
digests in startos/manifest/index.ts.
| Image | Role | Source |
|---|---|---|
database |
MySQL backend (acore_auth, acore_world, acore_characters) | mysql:8.4 |
authserver |
Login + realm list | acore/ac-wotlk-authserver |
worldserver |
Game world server | acore/ac-wotlk-worldserver |
db-import |
One-shot database initializer | acore/ac-wotlk-db-import |
client-data |
One-shot map/vmap/mmap/dbc downloader (~1.1GB) | acore/ac-wotlk-client-data |
| Property | Value |
|---|---|
| Architectures | x86_64 |
| Entry command | Upstream entrypoint (sdk.useEntrypoint()) for the daemons |
The package uses a single volume, main, with these subpaths:
Subpath in main volume |
Container mount point | Purpose |
|---|---|---|
mysql/ |
/var/lib/mysql (database) |
All three databases |
data/ |
/azerothcore/env/dist/data (worldserver, client-data) |
Maps, vmaps, mmaps, dbc |
start9/store.json |
(package-internal) | DB password, realm name, realm address |
On first install/start, the package runs an ordered boot sequence:
- MySQL comes up (root password generated once at install, stored in
start9/store.json). - client-data one-shot downloads ~1.1GB of map data (only on first boot; idempotent thereafter).
- db-import one-shot creates/updates the three databases.
- realm-config one-shot writes this server's address into
acore_auth.realmlistso clients can connect. - authserver and worldserver daemons start.
First boot takes several minutes (the client-data download + DB init). The World Server health check shows "loading" until it finishes. Subsequent starts are fast.
| Interface ID | Port | Protocol | Purpose |
|---|---|---|---|
authserver |
3724 | TCP | WoW login (the address you put in realmlist.wtf) |
worldserver |
8085 | TCP | Game world connection |
Internal-only service ports:
3306MySQL (used by the daemons and the Create Account action)
LAN / clearnet only. WoW 3.3.5 uses a raw TCP game protocol and cannot run
over Tor. Both interfaces are declared p2p.
| Action ID | Purpose | Availability |
|---|---|---|
get-server-info |
Show the realm address + client connection details ("Connection Info") | any |
set-realm-address |
Choose which address clients use to reach the world server (needed when the box has multiple networks, e.g. LAN + tunnel) | any |
create-account |
Create a WoW login account (SRP6, written directly to the database) | only-running |
- Obtain a clean WoW 3.3.5a (build 12340) client (not included — copyrighted).
- Run Set Realm Address and pick your LAN address (e.g.
192.168.x.x). - Run Connection Info to confirm the address.
- Run Create Account to make a login.
- Edit
Data/enUS/realmlist.wtf:set realmlist <that address>. - Delete the client's
Cache/folder, launch, log in.
Included in backup: the main volume (all databases + downloaded client data).
Restore: standard StartOS restore flow (restoreInit); the realm is recreated as it was.
| Check | Method | Notes |
|---|---|---|
database |
Port 3306 listening |
30s grace |
authserver |
Port 3724 listening |
after realm config |
worldserver |
Port 8085 listening |
120s grace (first-boot map load) |
None.
- LAN / clearnet only — no Tor (raw TCP game protocol).
- Empty world — this vanilla flavor has no AI players, so the world is unpopulated unless friends on your network join. The Playerbots flavor populates it with AI players.
- Bring your own client — the game client is copyrighted and not bundled.
- Use a clean 3.3.5a client — modified clients (custom DBC) can show "Filler text" / broken quests from client-server data mismatch.
- The interactive worldserver console is disabled (
AC_CONSOLE_ENABLE=0) so logs stay clean.
- The AzerothCore server runtime, databases, and game data.
- Standard WoW 3.3.5a client connection flow (auth on 3724, world on 8085).
See CONTRIBUTING.md for local build, install, and the two-flavor branch model.
The StartOS packaging code in this repository is MIT (see LICENSE). The software it installs and runs, AzerothCore, is licensed separately under GPL-2.0 — see https://github.com/azerothcore/azerothcore-wotlk.
package_id: azerothcore
flavor: vanilla # sibling flavor: #playerbots: (playerbots branch)
architectures: [x86_64]
volumes:
main:
mysql: /var/lib/mysql # database container
data: /azerothcore/env/dist/data # worldserver + client-data
store: start9/store.json # dbPassword, realmName, realmAddress
ports:
authserver: 3724 # realmlist target
worldserver: 8085 # game world
database: 3306 # internal only
dependencies: none
boot_order: [database, client-data, db-import, realm-config, authserver, worldserver]
actions:
- get-server-info
- set-realm-address
- create-account
account_creation: direct DB insert with SRP6 (salt + verifier), no SOAP
notes:
- LAN/clearnet only (raw TCP, no Tor)
- clean 3.3.5a client required, not bundled