A vmangos 1.12.1 realm and a game-data host for the iNilla iOS client, in one docker compose up
This is basically vmangos with an added endpoint to serve WoW 1.12.1 Data so that users don't need to transfer it themselves and instead just point the iNilla iOS client to the endpoint.
iNilla is a World of Warcraft 1.12.1 client for the iPhone. This repository is its companion home-network backend: everything the iOS app needs from a machine on your LAN.
| service | port | what the app uses it for |
|---|---|---|
realmd |
3724 | logon: the server profile's host and port |
mangosd |
8085 | the world: realmd hands the app REALM_ADDRESS:8085 |
datahost |
8099 | the one-time download of the game's Data folder (5.4 GB, resumable, SHA-256 verified), in English and optionally German, with the addons that go with it (pfQuest built in) |
db |
— | MariaDB for vmangos. Never published. |
db-init, extract |
— | one-shot jobs on every up: database setup/upgrades and map extraction. They exit when done. |
The server is vmangos built from source at a pinned commit, with
its world database, the core's migrations, and dbc/maps/vmaps (and optionally mmaps)
extracted from your own client. Warden is off, because the iNilla client does not implement it.
Nothing from Blizzard is in this repository or in any image: your Data folder is mounted read-only.
- Docker: Docker Desktop on Windows or macOS, or Docker Engine + Compose v2 on Linux. x86-64. The machine needs about 2 GB of free RAM while playing and about 10 GB of disk (mostly build cache; the realm itself is under 2 GB).
- A World of Warcraft 1.12.1 client (build 5875, English/enUS). Only its
Datafolder is used:dbc.MPQ,patch.MPQ,terrain.MPQand the rest. - A fixed LAN address for that machine (a DHCP reservation in your router), because the phone connects to it by address.
cp .env.example .envIn .env, set:
WOW_DATA_DIRto your client'sDatafolder.REALM_ADDRESSto this machine's LAN IP.- The two database passwords (
DB_ROOT_PASSWORD,DB_PASSWORD).openssl rand -hex 16makes good ones. INILLA_DATA_TOKENcan stay empty on a home network: the phone then needs no token. Set one before the data host is reachable from the internet.
Then start the stack:
docker compose up -dThe first run takes about 10–30 minutes, and the command returns once everything has started:
- It compiles vmangos (about 5–15 minutes, depending on your cores).
db-initimports the world database (under a minute).extractpullsdbc,mapsandvmapsout of your client (a few minutes).mangosdloads the world.
Every later up takes seconds: each step checks for its own result first. Follow a step with
docker compose logs -f extract, for example.
Then create an account (1.12 has no sign-up, so accounts are made on the server):
docker compose exec mangosd vmangos-console account create alice s3cretpass
docker compose exec mangosd vmangos-console account set gmlevel alice 6 # optional: full GMWith the phone on the same Wi-Fi:
- Add the server. In iNilla, go to Servers → Add:
- host: your
REALM_ADDRESS, port3724, server software vmangos
- host: your
- Get the game data, once. On the setup screen, open Game data. The URL is filled in
from the server you added (
http://<REALM_ADDRESS>:8099/); the token field stays empty unless you set one. Tap Check server, pick the language if the server offers more than one, then Download. It is 5.4 GB, and pfQuest installs right after it. Keep the app open and the screen on. An interrupted download resumes where it stopped, and every file is hash-checked before use. (You can also skip the download and copy theDatafolder in with Finder or the Files app.) - Allow Local Network access when iOS asks. Without it, the app cannot reach anything on your LAN.
- Log in with the account from above. The realm is listed as
REALM_NAME.
Check the host from the phone's browser: http://<REALM_ADDRESS>:8099/ should answer with one
line of text.
docker compose ps # what is running (db-init and extract show "Exited (0)")
docker compose logs -f mangosd # the world server's log
docker compose restart mangosd # after editing config/mangosd.conf
docker compose stop # stop the realm (characters are saved)
docker compose up -d # start it again
docker compose exec mangosd vmangos-console server info- Server settings (rates, the message of the day, the content patch and so on): edit
config/mangosd.confandconfig/realmd.conf, which holdKey = Valueoverrides applied over vmangos' defaults on every start. - The realm (name, address, type): edit
.env, then rundocker compose up -dsodb-initrewrites the realm row.
Accounts, GM commands, backups, updating vmangos, turning on mmaps and troubleshooting are covered in docs/OPERATIONS.md. How the pieces fit together, and why, is in docs/DESIGN.md.
Any 1.12.1 core with Warden off works with the app (vmangos, cMaNGOS). To give its players the game data and pfQuest without this repository's realm, run the data host alone:
WOW_DATA_DIR="/path/to/WoW 1.12.1/Data" docker compose -f compose.datahost.yaml up -dIt needs nothing else from this stack. WOW_DATA_DIR_DEDE, INILLA_DATA_TOKEN and the
addons/ folder work the same as in the full stack.
| path | what |
|---|---|
compose.yaml |
the stack |
.env.example |
every setting, documented. Copy it to .env. |
config/ |
overrides for mangosd.conf and realmd.conf |
docker/vmangos/ |
the vmangos image: Dockerfile (compile at a pinned commit, world DB snapshot, runtime) and bin/ (the roles: inilla-db-init, inilla-extract, inilla-realmd, inilla-mangosd, plus vmangos-console) |
datahost/ |
inilla-datahost, the Rust service that serves the Data folder and the addons to the app |
addons/ |
your own addons for the app, per language (see addons/README.md) |
compose.datahost.yaml |
only the data host, beside a server you already run |
docs/ |
operations and design notes |
The archives in your Data folder belong to Blizzard. Serving your own copy to your own phone is
between you and your copy of the game. Serving it to anyone else means distributing Blizzard's
files, so only share it with people who own the game, and set a token before the data host is
reachable from outside your home. iNilla is an
independent fan project, not affiliated with or endorsed by Blizzard Entertainment. vmangos is
GPLv2 and is built unmodified from its upstream source. Our own code is MIT OR Apache-2.0.