The auction-house bot account (ahouse) owns 9 mule characters that were showing up in the armory alongside real players. One LIKE pattern could not cover both it and RNDBOT%. Replaces botAccountPattern with botAccountPatterns, a comma-separated list of LIKE patterns, and builds the clause with Utils.botAccountFilter. An empty list now disables the filter outright rather than emitting a clause that matches nothing, so misconfiguration fails open instead of hiding everyone. The stack default becomes "RNDBOT%,ahouse"; config.default.json keeps the generic "RNDBOT%" so the fork stays upstreamable. Verified against the live realm: 29 listed before, 20 after. The 9 excluded are the ahouse mules. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
92 lines
5.1 KiB
YAML
92 lines
5.1 KiB
YAML
# Portainer stack for the Mythica armory.
|
|
#
|
|
# Differs from the upstream docker-compose.yml in three ways, all of them
|
|
# because Portainer deploys from a git checkout it manages itself:
|
|
#
|
|
# 1. Configuration comes from environment variables set in the Portainer
|
|
# stack UI, not from a .env file in the repo (upstream uses env_file,
|
|
# which Portainer git stacks do not provide).
|
|
# 2. Only the four large model-data directories are bind-mounted from the
|
|
# host. The DBC .csv files stay in the image so they stay versioned with
|
|
# the code, and Portainer re-cloning the repo cannot wipe the 2 GB of
|
|
# model data.
|
|
# 3. The unused ac-network block is dropped.
|
|
#
|
|
# See docs/mythica-deploy.md for the full procedure.
|
|
|
|
services:
|
|
armory:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: mythica-armory
|
|
restart: unless-stopped
|
|
|
|
environment:
|
|
# --- site identity -------------------------------------------------
|
|
ACORE_ARMORY_WEBSITE_NAME: ${ARMORY_WEBSITE_NAME:-Mythica}
|
|
ACORE_ARMORY_WEBSITE_URL: ${ARMORY_WEBSITE_URL:-http://192.168.1.77:48733}
|
|
ACORE_ARMORY_WEBSITE_ROOT: ${ARMORY_WEBSITE_ROOT:-}
|
|
|
|
# Item tooltips and item icons are loaded from this AoWoW instance.
|
|
# The default is a public third-party site: point this at your own
|
|
# AoWoW if you do not want that dependency.
|
|
ACORE_ARMORY_AOWOW_URL: ${ARMORY_AOWOW_URL:-https://wowgaming.altervista.org/aowow}
|
|
|
|
# --- embedding -----------------------------------------------------
|
|
# Set both when embedding the armory in a page on the main site.
|
|
ACORE_ARMORY_IFRAME_MODE__ENABLED: ${ARMORY_IFRAME_ENABLED:-0}
|
|
ACORE_ARMORY_IFRAME_MODE__URL: ${ARMORY_IFRAME_URL:-}
|
|
|
|
# --- behaviour -----------------------------------------------------
|
|
ACORE_ARMORY_LOAD_DBCS: ${ARMORY_LOAD_DBCS:-1}
|
|
# Off by default here: GM accounts on this realm belong to real
|
|
# players who should appear in the armory like anyone else. Set to
|
|
# 1 to hide them from search and 404 their character pages.
|
|
ACORE_ARMORY_HIDE_GAME_MASTERS: ${ARMORY_HIDE_GMS:-0}
|
|
|
|
# Playerbots are ordinary accounts, not game masters, so the GM
|
|
# filter does not touch them. Without this the armory lists ~1350
|
|
# bots against ~29 real characters.
|
|
# Comma-separated LIKE patterns. RNDBOT% covers the Playerbots
|
|
# accounts; ahouse is the auction-house bot, which owns 9 mule
|
|
# characters. Add further service accounts here as they appear.
|
|
ACORE_ARMORY_HIDE_BOT_ACCOUNTS: ${ARMORY_HIDE_BOTS:-1}
|
|
ACORE_ARMORY_BOT_ACCOUNT_PATTERNS: ${ARMORY_BOT_PATTERNS:-RNDBOT%,ahouse}
|
|
ACORE_ARMORY_TRANSMOG_MODULE: ${ARMORY_TRANSMOG:-0}
|
|
|
|
# 0 = serve 3D model assets from the local data directory.
|
|
# Leave it at 0: the upstream fetch tool can no longer rebuild this
|
|
# data from the Zam CDN, so the local copy is the only source.
|
|
ACORE_ARMORY_USE_ZAM_CDN: ${ARMORY_USE_ZAM_CDN:-0}
|
|
|
|
# --- realm ---------------------------------------------------------
|
|
ACORE_ARMORY_REALMS__0__NAME: ${ARMORY_REALM_NAME:-Mythica}
|
|
ACORE_ARMORY_REALMS__0__REALM_ID: ${ARMORY_REALM_ID:-1}
|
|
ACORE_ARMORY_REALMS__0__AUTH_DATABASE: ${ARMORY_AUTH_DB:-acore_auth}
|
|
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__HOST: ${ARMORY_DB_HOST:-192.168.1.60}
|
|
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__PORT: ${ARMORY_DB_PORT:-3306}
|
|
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__USER: ${ARMORY_DB_USER:?set ARMORY_DB_USER}
|
|
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__PASSWORD: ${ARMORY_DB_PASS:?set ARMORY_DB_PASS}
|
|
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__DATABASE: ${ARMORY_CHARACTERS_DB:-acore_characters}
|
|
|
|
# --- world database -------------------------------------------------
|
|
ACORE_ARMORY_WORLD_DATABASE__HOST: ${ARMORY_DB_HOST:-192.168.1.60}
|
|
ACORE_ARMORY_WORLD_DATABASE__PORT: ${ARMORY_DB_PORT:-3306}
|
|
ACORE_ARMORY_WORLD_DATABASE__USER: ${ARMORY_DB_USER:?set ARMORY_DB_USER}
|
|
ACORE_ARMORY_WORLD_DATABASE__PASSWORD: ${ARMORY_DB_PASS:?set ARMORY_DB_PASS}
|
|
ACORE_ARMORY_WORLD_DATABASE__DATABASE: ${ARMORY_WORLD_DB:-acore_world}
|
|
|
|
ACORE_ARMORY_DB_QUERY_TIMEOUT: ${ARMORY_DB_TIMEOUT:-10000}
|
|
|
|
volumes:
|
|
# The 3D model payload, extracted from the release archive. These
|
|
# four directories are exactly the top level of data.tar.gz.
|
|
- ${ARMORY_DATA_DIR:-/opt/mythica-armory/data}/meta:/data/meta
|
|
- ${ARMORY_DATA_DIR:-/opt/mythica-armory/data}/bone:/data/bone
|
|
- ${ARMORY_DATA_DIR:-/opt/mythica-armory/data}/mo3:/data/mo3
|
|
- ${ARMORY_DATA_DIR:-/opt/mythica-armory/data}/textures:/data/textures
|
|
- ${ARMORY_LOG_DIR:-/opt/mythica-armory/logs}:/logs
|
|
|
|
ports:
|
|
- "${ARMORY_PORT:-48733}:48733"
|