Skip to content

Repository files navigation

Tortoise WoW (Docker)

Run a private Turtle WoW server with Docker. This stack uses Shyalya/tortoise-wow with playerbots.

The server work and install steps come from this video:

Tortoise WoW / playerbots setup (YouTube)

This repository ships a Compose file. CI builds and publishes the server images to GHCR. The published binaries use a portable x86-64-v2 CPU target so the image does not depend on the instruction set of the CI runner.

What you need

  • Docker Desktop (or Docker Engine with Compose v2)
  • A Turtle WoW 1.18.1 client (build 7272)
  • Client data folders: dbc, maps, vmaps, mmaps
  • Several GB of free disk space

The images do not include client data. You extract that data from your game client. The video and the Linux install guide show how.

Quick start

1. Get the Compose files

git clone https://github.com/Nescabir/tortoise-docker.git
cd tortoise-docker

2. Create your settings file

cp .env.example .env

Edit .env:

  1. Set strong values for DB_ROOT_PASSWORD and DB_PASSWORD.
  2. Set REALM_ADDRESS to an address your game client can reach.
  3. Set DATA_PATH if your client data is not in ./data.

Use 127.0.0.1 for REALM_ADDRESS only when the client runs on the same machine. For another PC on your LAN, use your host LAN IP and set GAME_BIND_IP=0.0.0.0 in .env — by default the game ports are only published on 127.0.0.1, so other machines cannot reach them even if REALM_ADDRESS points at your LAN IP.

3. Add client data

Put the extracted folders here (or under your DATA_PATH):

data/
  dbc/
  maps/
  vmaps/
  mmaps/

4. Start with Compose

Compose pulls the published images and starts the stack:

docker compose up -d

The first start downloads the images (if needed) and imports the world database. This takes several minutes.

Then watch the world server:

docker compose logs -f mangosd

Wait until the log shows:

World server is up and running

The first start with playerbots is slow. The server builds bot gear data before it is ready. Do not create an account before that line appears.

5. Create a game account

docker compose exec -u turtle mangosd bash -c 'echo "account create myuser mypass" > /opt/turtle/run/mangosd.in'

Check that the account exists:

docker compose exec -T db mariadb -uroot -pYOUR_ROOT_PASSWORD -e "SELECT id, username FROM tw_logon.account;"

Replace YOUR_ROOT_PASSWORD with the value of DB_ROOT_PASSWORD from .env.

6. Connect with the client

Edit realmlist.wtf in your Turtle WoW client:

set realmlist 127.0.0.1

Use the same host as REALM_ADDRESS in .env. Then log in with the account you created.

CPU compatibility and local builds

If an older published image exits with code 132 (SIGILL), rebuild it locally with the same portable target and select it with TURTLE_IMAGE:

docker build \
  --build-arg BUILD_PLAYERBOTS=ON \
  --build-arg CPU_TARGET=x86-64-v2 \
  -t tortoise-wow:playerbots-local .
TURTLE_IMAGE=tortoise-wow:playerbots-local docker compose up -d

The TURTLE_IMAGE override is optional; without it, Compose uses the published image selected by TAG.

Useful settings

Setting Default Meaning
REALM_ADDRESS 127.0.0.1 Host the client uses to reach the world server
REALM_NAME TurtleWoW Name of the realm in the client list
DATA_PATH ./data Folder with dbc, maps, vmaps, mmaps
TAG playerbots Image variant (playerbots or no-bots)
TURTLE_IMAGE published image from TAG Optional full image reference, useful for a local build
AI_PLAYERBOT_ENABLED 1 Turn bots on or off (playerbots image only)
AI_MIN_RANDOM_BOTS / AI_MAX_RANDOM_BOTS 10 / 10 How many random bots to keep online

Keep bot counts low for the first start. Raise them later in .env, then run:

docker compose up -d mangosd

Editing server configs

mangosd.conf, realmd.conf, aiplayerbot.conf, and ahbot.conf are written to ./config on the host (or CONFIG_PATH from .env) the first time the stack starts.

Edit any setting there directly — for example server rates, difficulty, or announce messages. Settings that also have a .env variable (see the table above) get overwritten from that variable on every start; everything else you edit is left as-is.

After editing, restart the affected service:

docker compose up -d mangosd realmd

Common commands

View logs:

docker compose logs -f realmd
docker compose logs -f mangosd

Stop the stack:

docker compose down

Start again (keeps your database):

docker compose up -d

Reset the database (deletes characters and accounts):

docker compose down
docker volume ls
docker volume rm tortoise-docker_db-data tortoise-docker_init-marker
docker compose up -d

Volume names can include your Compose project name. Use docker volume ls to confirm the names.

Troubleshooting

Problem What to do
Login fails / unknown account Wait for World server is up and running, then create the account again
Account create does nothing mangosd is still starting; wait and retry
Realm list is empty or offline Check that realmd and mangosd are up: docker compose ps
Client hangs after you pick the realm Set REALM_ADDRESS to an IP the client can reach; world port is 8090
Empty world / no NPCs First database import failed; check docker compose logs db-init
No bots Use TAG=playerbots and AI_PLAYERBOT_ENABLED=1
Client crash: interface corrupt Use the published image from this project; do not strip Turtle addons
LAN client can't reach the realm Set GAME_BIND_IP=0.0.0.0 in .env (default 127.0.0.1 only accepts connections from the host itself), then docker compose up -d

Credits

Server code stays under the upstream project license. This repository only provides the Docker packaging.

About

Shyalya's Tortoise WoW fork Docker images

Resources

Stars

39 stars

Watchers

1 watching

Forks

Packages

Used by

Contributors

Languages