panel v0.9.2 — open-source game server manager

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 01:06:16 -07:00
commit 0f6aea796c
2164 changed files with 301480 additions and 0 deletions
@@ -0,0 +1,24 @@
-- 010_port_allocation.sql — per-agent port range + per-instance assigned ports
--
-- Why: probing net.Listen for "is this port free?" only catches CURRENTLY
-- bound ports. Two ARK servers, one running, one stopped — the running
-- one's 7777 binding is detected, but the stopped one's intent isn't.
-- Result: a fresh create assigns 7777 to a new server, then the stopped
-- one fails to start because something else now owns its port.
--
-- Fix: persist each instance's assigned host ports in the DB, and let
-- operators set a per-agent port range. Allocation now consults BOTH
-- the persisted assignments AND the live probe — whichever rules out
-- a port first wins.
ALTER TABLE agents
ADD COLUMN port_range_start INTEGER,
ADD COLUMN port_range_end INTEGER;
-- assigned_ports holds the actual host ports the panel allocated for
-- this instance, keyed by manifest port name. Example:
-- {"game": 7777, "raw": 7778, "rcon": 27020}
-- Stays attached even when the instance is stopped — that's the whole
-- point: stopped instances reserve their ports against the next create.
ALTER TABLE instances
ADD COLUMN assigned_ports JSONB NOT NULL DEFAULT '{}'::jsonb;