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
This commit is contained in:
Claude
2026-04-04 16:27:29 +00:00
parent 6374b0b786
commit a0496210a5

View File

@@ -0,0 +1,120 @@
# 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.
```javascript
// 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.
```javascript
// 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.
---
## Related Files
- `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** 🔥❄️