Portainer stack and deployment doc for Nox #1

Merged
yrtria merged 2 commits from mythica-deploy into master 2026-09-02 13:11:14 -06:00
Owner

Sets this fork up to deploy as a Portainer stack on Nox, next to the Mythica web page. Read-only against the AzerothCore databases over the LAN — nothing runs on the game server, which is tuned for the playerbot load.

What's here

  • docker-compose.mythica.yml — a Portainer-shaped compose file
  • docs/mythica-deploy.md — the full procedure, including the model-data step

Why not upstream's compose

Portainer deploys from a git checkout it manages itself, which breaks two assumptions upstream makes:

  1. env_file: .env — git stacks don't provide one. Configuration comes from Portainer stack environment variables instead, with ARMORY_DB_USER and ARMORY_DB_PASS required so the stack fails loudly rather than starting misconfigured.
  2. ./data:/data — that resolves inside Portainer's clone directory, so a re-clone could wipe 2 GB of model data. Only the four large model directories (meta, bone, mo3, textures) are bind-mounted from a fixed host path; the DBC .csv files stay in the image so they remain versioned with the code.

The unused ac-network block is dropped.

The model data problem, recorded in the doc

Upstream's fetchdata tool no longer works. Zam reorganised that part of the CDN: meta/armor and meta/item still resolve, but every character path 404s — checked meta/character/* and meta/charactercustomization2/* against the live, wrath and classic prefixes and several filename spellings. The failure is silent: a run reports success while producing no character data, and the app then dies at startup on meta/charactercustomization2/1_0.json.

So the v1.0.0 snapshot is the only remaining source, and it is now mirrored into this fork's own release rather than linked to GitHub — split into five parts, because NPM in front of the forge returns 413 at 2 GB (500 MB uploads fine). SHA256SUMS.txt covers both the parts and the reassembled archive.

Verified the archive actually contains what the app was missing: 21 entries under meta/character/ and 21 under meta/charactercustomization2/, 50,612 files total.

Checked, no action needed

acore is already granted from 192.168.1.% and MySQL on the game server binds 0.0.0.0, so Nox can connect as-is. The doc includes an optional read-only armory user, which is worth doing for a public-facing read-only app.

Still external

Item icons and tooltips are hotlinked from a third-party AoWoW instance (wowgaming.altervista.org). ARMORY_AOWOW_URL repoints it, but removing the dependency properly means running your own AoWoW. That is now the only external asset dependency — the model data is self-hosted.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd

Sets this fork up to deploy as a Portainer stack on Nox, next to the Mythica web page. Read-only against the AzerothCore databases over the LAN — **nothing runs on the game server**, which is tuned for the playerbot load. ## What's here - `docker-compose.mythica.yml` — a Portainer-shaped compose file - `docs/mythica-deploy.md` — the full procedure, including the model-data step ## Why not upstream's compose Portainer deploys from a git checkout it manages itself, which breaks two assumptions upstream makes: 1. **`env_file: .env`** — git stacks don't provide one. Configuration comes from Portainer stack environment variables instead, with `ARMORY_DB_USER` and `ARMORY_DB_PASS` required so the stack fails loudly rather than starting misconfigured. 2. **`./data:/data`** — that resolves inside Portainer's clone directory, so a re-clone could wipe 2 GB of model data. Only the four large model directories (`meta`, `bone`, `mo3`, `textures`) are bind-mounted from a fixed host path; the DBC `.csv` files stay in the image so they remain versioned with the code. The unused `ac-network` block is dropped. ## The model data problem, recorded in the doc Upstream's `fetchdata` tool **no longer works**. Zam reorganised that part of the CDN: `meta/armor` and `meta/item` still resolve, but every character path 404s — checked `meta/character/*` and `meta/charactercustomization2/*` against the `live`, `wrath` and `classic` prefixes and several filename spellings. The failure is silent: a run reports success while producing no character data, and the app then dies at startup on `meta/charactercustomization2/1_0.json`. So the v1.0.0 snapshot is the only remaining source, and it is now mirrored into this fork's own release rather than linked to GitHub — split into five parts, because NPM in front of the forge returns 413 at 2 GB (500 MB uploads fine). `SHA256SUMS.txt` covers both the parts and the reassembled archive. Verified the archive actually contains what the app was missing: 21 entries under `meta/character/` and 21 under `meta/charactercustomization2/`, 50,612 files total. ## Checked, no action needed `acore` is already granted from `192.168.1.%` and MySQL on the game server binds `0.0.0.0`, so Nox can connect as-is. The doc includes an optional read-only `armory` user, which is worth doing for a public-facing read-only app. ## Still external Item icons and tooltips are hotlinked from a third-party AoWoW instance (`wowgaming.altervista.org`). `ARMORY_AOWOW_URL` repoints it, but removing the dependency properly means running your own AoWoW. That is now the only external asset dependency — the model data is self-hosted. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
yrtria added 1 commit 2026-09-02 11:22:08 -06:00
Add a Portainer stack and deployment doc for Nox
Some checks failed
Build / build (push) Waiting to run
Lint / eslint (push) Waiting to run
Build / build (pull_request) Has been cancelled
Lint / eslint (pull_request) Has been cancelled
52a3af6642
Deploys this fork alongside the Mythica web page, reading the AzerothCore
databases over the LAN. Nothing runs on the game server itself.

docker-compose.mythica.yml differs from upstream's compose because Portainer
deploys from a git checkout it manages:

- Configuration comes from Portainer stack environment variables rather than
  a .env file in the repo, which git stacks do not provide.
- Only the four large model-data directories are bind-mounted from the host,
  so the DBC csv files stay versioned with the code in the image and a repo
  re-clone cannot wipe the 2 GB of model data.
- The unused ac-network block is dropped.

The doc also records why the model data is a manual step: upstream's fetchdata
tool no longer works, because Zam reorganised the CDN and every character path
now 404s. A run appears to succeed while producing no character data, and the
app then fails at startup on meta/charactercustomization2/1_0.json. The v1.0.0
snapshot mirrored into this fork's release is the only remaining source.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
yrtria added 1 commit 2026-09-02 11:31:55 -06:00
docs: chown the data directory before downloading into it
Some checks failed
Build / build (push) Has been cancelled
Lint / eslint (push) Has been cancelled
Build / build (pull_request) Has been cancelled
Lint / eslint (pull_request) Has been cancelled
788afd6e8e
The procedure created /opt/mythica-armory with sudo but then ran the curl
downloads as the normal user, so every one failed with "Permission denied /
Failure writing output to destination". Adds the chown and notes that user
ownership is fine, since the container reads the bind mount as root.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
yrtria merged commit ffdeacc0c4 into master 2026-09-02 13:11:14 -06:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: yrtria/azerothcore-armory#1
No description provided.