Files
sindoring 25ad97555f MoonWell: voice chat tickets and the state feed for the voice relay
Voice goes through a separate relay (moonwell-voice-relay, from the
MoonWell client repo), never the world socket. mangosd only vouches:
`.mwvoice` answers the player with an HMAC-signed ticket and the relay
address as an addon line (prefix MWV), and every 250 ms the world thread
sends the relay each character in the world: faction, map, instance,
position, group and guild, so no client can claim a place, group or
guild of its own. The feed is read after the map update, under the
lock that keeps async packets out. Sends are counted and logged every
30 s.

MoonWell.Voice.* in mangosd.conf (off by default); the production
compose adds the voice-relay container (UDP 3725) and the voice_secret
secret, deploy/local enables voice against a relay on the Windows host.

Checked: the changed units build in vmangos-buildenv; a ticket and a
feed datagram made by this code verify in the relay tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:26:16 +04:00

50 lines
1.4 KiB
YAML

# Paths are relative to deploy/production (the first Compose file).
x-local-server: &local-server
image: vmangos-local:dev
services:
db:
restart: "no"
ports: ["127.0.0.1:13306:3306/tcp"]
realmd:
<<: *local-server
# mangosd builds the shared image once; parallel exports to one tag race.
build: !reset null
restart: "no"
depends_on:
realm-config:
condition: service_completed_successfully
ports: !override ["127.0.0.1:3724:3724/tcp"]
mangosd:
<<: *local-server
build:
args:
REQUIRE_LAUNCHER_TICKETS: "OFF"
restart: "no"
depends_on:
realm-config:
condition: service_completed_successfully
ports: !override ["127.0.0.1:8085:8085/tcp"]
environment:
CONSOLE_ENABLE: "1"
MOONWELL_VOICE_ENABLE: "1"
MOONWELL_VOICE_ADDRESS: 127.0.0.1:3725
MOONWELL_VOICE_FEED: host.docker.internal:3726
extra_hosts: ["host.docker.internal:host-gateway"]
secrets: [db_password, voice_secret]
stdin_open: true
tty: true
volumes:
- ../local/data:/data:ro
realm-config:
profiles: !reset []
environment:
REALM_ADDRESS: 127.0.0.1
REALM_NAME: Local Vanilla
secrets:
db_password:
file: ../local/secrets/db_password
db_root_password:
file: ../local/secrets/db_root_password
voice_secret:
file: ../local/secrets/voice_secret