Files
esh-pfi-infrastructure/stacks/zonos-gateway/compose.yaml
T
vh e0d1c44137 chore(fleet): repoint stale irv-ml1 refs (10.100.79.3 -> irv-ml1.nh3.internal)
The 2026-09-06 headscale cutover retired irv-ml1's wg0 tunnel IP 10.100.79.3
(now 10.6.110.50). Repointed all LIVE canonical refs to the DNS NAME so the next
move can't re-break them: homepage.href/siteMonitor labels across 25 stack
composes, load-bearing env defaults (asset-engine INFERENCE_HOST, open-webui
AUDIO_TTS_OPENAI_API_BASE_URL, skaldsong SKALDSONG_TTS_BASE_URL, zonos-gateway
ZONOS_URL, dia), homepage services.yaml manual cards (Voice Design Studio,
IRV-ML1), and servers/irv-ml1/ssh-target. Updated the stale 'WG tunnel' comment
to the mesh reality.

Left as-is: README curl-examples and .env.example comments (docs), and historical
mentions in CLAUDE.md/persistent-memory. NOTE: applying the label repoints to the
RUNNING irv-ml1 containers needs a recreate per service (labels read at creation);
deployed .env values are separate from these canonical defaults.
2026-09-07 15:08:56 -07:00

35 lines
1.5 KiB
YAML

# zonos-gateway — deploys on irv-ml1 next to the Zonos server.
# Follows the fleet convention: /opt/docker/compose/zonos-gateway/compose.yaml,
# tunables in an adjacent .env (this file stays constant).
services:
zonos-gateway:
build: .
image: zonos-gateway:0.2.0
container_name: zonos-gateway
restart: unless-stopped
# Colocated with Zonos: reach the host's :1920 from inside the container.
# host-gateway resolves host.docker.internal to the host's bridge IP.
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
# Default targets the Zonos server on the same host. For a non-colocated
# or dev target, override in .env (e.g. ZONOS_URL=http://irv-ml1.nh3.internal:1920).
ZONOS_URL: ${ZONOS_URL:-http://host.docker.internal:1920}
PORT: ${PORT:-8890}
DEFAULT_VOICE: ${DEFAULT_VOICE:-Cora}
VOICES_DIR: /app/voices
REQUEST_TIMEOUT_S: ${REQUEST_TIMEOUT_S:-600}
volumes:
# Host-managed voices (2026-07-17): drop <Name>.wav in ./voices + restart
# -> selectable as voice:"Name", no image rebuild (matches the registry's
# filesystem-drop-in design). Emmie added this way.
- ./voices:/app/voices:ro
ports:
- "${PORT:-8890}:8890"
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8890/health', timeout=5).status==200 else 1)"]
interval: 30s
timeout: 8s
retries: 3
start_period: 15s