| name | eco-server-setup |
| description | Set up and operate the coilysiren Eco game server on kai-server - download/install, push mods, start via systemd, Discord Link + Chronicler, NidToolBox, and game-state resets. Flags the legacy-vs-kai-server path split so old invoke commands do not bite. Aliases - eco server setup, set up eco server, eco game server, push eco mods, restart eco server, eco resets, nidtoolbox, chronicler, discord link. |
Eco server setup
Status: 🛠 Runbook | Last updated: 2026-07-03
Editor's notes over the Eco setup, split into per-step references. This layer routes:
which procedure, in what order, and the traps. The references keep every command.
The trap that bites first
Two eras coexist. The invoke push-asset-local / pull-asset-remote flows in the
references target the OLD path /home/ubuntu/games/eco/ and are STALE since the
kai-server migration. The live server is a Steam install at
/home/kai/Steam/steamapps/common/EcoServer/. The references also name a retired
coily/invoke CLI - read those command names as shape, then map the paths onto the
Steam root and drive the live scripts below. Nothing loads until a restart.
Which procedure
- First install or version bump ->
references/eco-server-setup-download-install.md.
Live install is scripts/eco-server-pre.sh (steamcmd app 739590).
- Ship mod changes ->
references/eco-server-setup-push-mods.md. Release zips:
scripts/install-eco-mod.sh NAME. Source mods: scripts/install-eco-mod-source.sh NAME.
- Boot or reboot ->
references/eco-server-setup-start-server.md. Live start is
scripts/eco-server-start.sh (token from SSM /eco/server-api-token, injected
into Configs/Network.eco as ServerAPIToken, never on argv - issue #2).
- Guarded auto-promote of a change ->
references/eco-server-setup-promote-rollback.md.
ward eco test --promote drives scripts/eco-server-{snapshot,health-check,rollback}.sh
(snapshot -> apply -> restart -> health + canary -> healthy|auto-rollback; ward#582).
- Discord relay or event logging ->
references/eco-server-setup-discord-chronicler.md
(MightyMoose core, Discord Link, Chronicler + SQLite).
- Admin tooling ->
references/eco-server-setup-nidtoolbox.md, then
references/eco-server-setup-nidtoolbox-configs.md for the JSON configs.
- Wipe the world ->
references/eco-server-setup-resets.md (keep-map vs random-map
differ only by GenerateRandomWorld).
Ordering
Install (pre.sh) -> public then private mods -> start via systemd -> Discord/Chronicler
-> NidToolBox + configs. Resets are one-off.
Traps
- No restart = no pickup. Every mod script ends WITHOUT restarting the server.
- A mod-backed web app must be live and returning JSON BEFORE it gets
UPSTREAM_URL,
or it 500-loops (see the push-mods reference).
- Chronicler needs
libSQLite.Interop.so compiled on the host and the bundled DLL
removed.
- k3s pods reach the native server only via the
hostAliases loopback pin, not the
public URL.
Execution boundary
The scripts under scripts/ do the work on kai-server. This skill only routes. Index:
references/eco-server-setup.md. Repo pointer: README.md.