Scripts become first-class: named, versioned, uploaded via the UI, optionally scoped to a game or map. Any change that would land on scope-matched servers (marking-required or new version of a scoped script) must first pass a beta. The beta runs a per-server state machine — deploy -beta.gsc → wait empty → Komodo restart → wait healthy → optionally wait for a real match end (games_sp.log 'ExitLevel: executed') — before it's eligible for promotion. Rollback is always available and restores from .OLD. The shared/scripts mirror and its betas/ staging folder are gone. Every server now has a tracked script inventory (server_scripts table), populated only by explicit upload flows. New: /scripts, /scripts/[id], /betas/[id] UI; /api/scripts + /api/betas + /api/servers/[name]/scripts endpoints; scripts.ts, inventory.ts, beta.ts (rewritten), beta-runner.ts, match-log.ts, komodoInspectHealthy(). Removed: push.ts, /api/push, BetaPanel, legacy importer. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
39 lines
1.2 KiB
TOML
39 lines
1.2 KiB
TOML
# Komodo stack definition. Deploys electric-cherry as a managed container on
|
|
# the same host running the T5 Plutonium servers. Mounts /root/zombies so the
|
|
# app can push scripts to the same paths push_scripts.sh used, and dedicates
|
|
# a small subdir for its SQLite state.
|
|
|
|
[[stack]]
|
|
name = "electric-cherry"
|
|
|
|
[stack.services.web]
|
|
image = "electric-cherry:latest"
|
|
restart = "unless-stopped"
|
|
ports = ["3000:3000"]
|
|
|
|
volumes = [
|
|
"/root/zombies:/root/zombies:rw",
|
|
"/root/zombies/.electric-cherry:/data:rw"
|
|
]
|
|
|
|
# Lets RCON_HOST=host.docker.internal reach game servers running on the
|
|
# same Komodo host without knowing each container's internal IP.
|
|
extra_hosts = ["host.docker.internal:host-gateway"]
|
|
|
|
[stack.services.web.env]
|
|
SERVERS_ROOT = "/root/zombies/t5"
|
|
REL_DEST = "runtime/plutonium/storage/t5/raw/scripts/sp"
|
|
BETA_ARCHIVE_DIR = "/root/zombies/beta-archive"
|
|
DB_PATH = "/data/cherry.db"
|
|
DEPLOY_KEEP_DAYS = "7"
|
|
|
|
# secrets: bind via Komodo's env-file or secret store
|
|
KOMODO_ADDRESS = "https://komodo.example.internal"
|
|
KOMODO_API_KEY = ""
|
|
KOMODO_API_SECRET = ""
|
|
|
|
# RCON — shared password across every T5 Plutonium server in the fleet.
|
|
RCON_PASSWORD = ""
|
|
RCON_HOST = "host.docker.internal"
|
|
RCON_TIMEOUT_MS = "3000"
|