Problem: Servers without -TX/-NC in name don't appear in Trinity Console Root cause: Grouping logic filters by name substring, not node ID Affected: 6 of Holly's new servers not showing Fix requires: 1. Update discovery.js to include nodeId from API 2. Update servers.js to group by node ID instead of name Waiting for: Michael to get home (needs MobaXterm + node IDs from Panel) Sign-off: Claude (Chronicler #60) Email: claude@firefrostgaming.com
3.2 KiB
Task: Fix Server Matrix Node Detection
Task ID: #91
Created: April 4, 2026
Status: In Progress — waiting for Michael to get home (needs MobaXterm)
Priority: High (blocking Holly's new servers from appearing)
Problem
Holly added 6 new servers ~2 hours ago. They don't appear in Trinity Console Server Matrix.
Root Cause: The matrix grouping logic filters servers by either:
- Node name matching ("TX1", "NC1", "Node 2", "Node 3")
- Server name containing "TX" or "NC"
Servers that match NEITHER condition fall through and aren't displayed.
Affected Servers (not showing):
- Beyond Ascension
- Wold's Vaults
- Otherworld [Dungeons & Dragons]
- DeceasedCraft
- Submerged 2
- (1 more — 18 total, 12 showing)
Servers showing (have -TX or -NC suffix):
- Mythcraft 5 - NC
- Create Plus - TX
- Vanilla - TX
- Beyond Depth - TX
- (8 more)
The Fix
Part 1: Update discovery.js
File: /home/claude/firefrost-services/services/arbiter-3.0/src/panel/discovery.js
Change: Add nodeId to the returned server object.
// Line 25-28, change from:
}).map(server => ({
identifier: server.attributes.identifier,
name: server.attributes.name
}));
// To:
}).map(server => ({
identifier: server.attributes.identifier,
name: server.attributes.name,
nodeId: server.attributes.node
}));
Part 2: Update servers.js grouping logic
File: /home/claude/firefrost-services/services/arbiter-3.0/src/routes/admin/servers.js
Change: Replace name-based filtering with node ID filtering.
// Line 47-48, change from:
const txServers = enrichedServers.filter(s => s.node === 'TX1' || s.node === 'Node 3' || s.name.includes('TX'));
const ncServers = enrichedServers.filter(s => s.node === 'NC1' || s.node === 'Node 2' || s.name.includes('NC'));
// To (replace X and Y with actual node IDs):
const TX_NODE_ID = X; // Get from Pterodactyl Admin → Nodes
const NC_NODE_ID = Y; // Get from Pterodactyl Admin → Nodes
const txServers = enrichedServers.filter(s => s.nodeId === TX_NODE_ID);
const ncServers = enrichedServers.filter(s => s.nodeId === NC_NODE_ID);
Information Needed
Before implementing, get from Pterodactyl Admin → Nodes:
- TX1 (Dallas) Node ID: ___
- NC1 (Charlotte) Node ID: ___
Implementation Steps
- SSH to Command Center (63.143.34.217) via MobaXterm
cd /path/to/arbiter-3(verify actual path)- Edit
src/panel/discovery.js— add nodeId - Edit
src/routes/admin/servers.js— update grouping logic with node IDs - Restart Arbiter:
sudo systemctl restart arbiter-3 - Verify all 18 servers appear in Trinity Console
- Commit changes to Gitea
Future Consideration
Also discussed: Removing the nest filter entirely for future expansion (Ark, Palworld, etc.)
Current filter: MINECRAFT_NEST_IDS=1,6,7
Recommendation: Consult Gemini before removing — may have downstream implications for whitelist sync trying to write to non-Minecraft servers.
Related Files
services/arbiter-3.0/src/panel/discovery.jsservices/arbiter-3.0/src/routes/admin/servers.js.env(MINECRAFT_NEST_IDS)
Fire + Frost + Proper Node Detection 🔥❄️