panel v0.9.1 — open-source game server manager
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user