Files
firefrost-operations-manual/docs/tasks/server-matrix-node-fix/README.md
Claude a0496210a5 Add Task #91: Fix Server Matrix node detection
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
2026-04-04 16:27:29 +00:00

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:

  1. Node name matching ("TX1", "NC1", "Node 2", "Node 3")
  2. 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

  1. SSH to Command Center (63.143.34.217) via MobaXterm
  2. cd /path/to/arbiter-3 (verify actual path)
  3. Edit src/panel/discovery.js — add nodeId
  4. Edit src/routes/admin/servers.js — update grouping logic with node IDs
  5. Restart Arbiter: sudo systemctl restart arbiter-3
  6. Verify all 18 servers appear in Trinity Console
  7. 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.


  • services/arbiter-3.0/src/panel/discovery.js
  • services/arbiter-3.0/src/routes/admin/servers.js
  • .env (MINECRAFT_NEST_IDS)

Fire + Frost + Proper Node Detection 🔥❄️