Files
claudetools/wiki/systems/gururmm-build.md
Mike Swanson 0665e3a007 wiki/memory: retire GuruRMM 'VM' framing + correct Windows build chain
Two sweeps:
1. .30 is a PHYSICAL box (Lenovo ThinkCentre M83, Ubuntu 26.04), not a Jupiter
   VM — the VM was decommissioned 2026-06-12. Fixed inventory tables and the
   gururmm-build system page (overview, index, jupiter, gururmm-build,
   POWER_FAILURE_RUNBOOK).
2. Windows build chain: Beast (GURU-BEAST-ROG, tailnet 100.101.122.4, i9-14900K)
   is PRIMARY; Pluto (172.16.3.36) is FALLBACK. Verified against build-windows.sh
   (`attempt_build beast || attempt_build pluto`). Fixed overview, index,
   projects/gururmm (build-host table + flow + host detail), systems/pluto, and
   the reference_pluto_build_server memory.

Submodule advanced: build-pipeline doc comments corrected to match.
2026-06-12 07:46:15 -07:00

7.0 KiB

type, name, display_name, last_compiled, compiled_by, sources, backlinks
type name display_name last_compiled compiled_by sources backlinks
system gururmm-build GuruRMM server (gururmm-build, physical) 2026-05-24 DESKTOP-0O8A1RL/claude-main
credentials.md
.claude/memory/infra_office_network.md
.claude/machines/pluto.md
wiki/projects/gururmm.md
projects/gururmm
systems/jupiter
systems/pluto

GuruRMM server (gururmm-build, physical)

Identity

  • Hostname: gururmm / gururmm-build
  • IP: 172.16.3.30
  • Role: Production server — GuruRMM API, ClaudeTools API, Coord API, MariaDB, PostgreSQL, build pipeline
  • Location: Physical box (Lenovo ThinkCentre M83) on the office LAN — NOT a Jupiter VM.
  • OS: Ubuntu 26.04 LTS (PostgreSQL 18, MariaDB)
  • History: Originally a Docker container on Jupiter → Ubuntu VM on Jupiter at 172.16.3.30 → physical box took the same .30 IP on 2026-06-11 (rotational-disk WAL-fsync timeouts drove the move). Old VM decommissioned 2026-06-12.

Specs

Physical: Lenovo ThinkCentre M83 (desktop chassis). Storage: SSD ~915 GB (hot tier — OS, live PG, WAL, cargo targets, /opt/gururmm) + HDD 1 TB mounted /data (cold tier — aged partitions, downloads, backups).

Services

Service Port Notes
GuruRMM API 3001 Rust/Axum; systemd gururmm-server; binary /usr/local/bin/gururmm-server
ClaudeTools API 8001 FastAPI/Python; includes Coord API at /api/coord
Nginx 80/443 Reverse proxy + static file serving
MariaDB 3306 Database claudetools; version 10.6.22
PostgreSQL 5432 Database gururmm; version 14
Build webhook 9000 webhook-handler.py; systemd gururmm-webhook; receives Gitea push events
Gitea (forwarded) 3000 SSH port forward from here → Gitea Docker container on Jupiter (.20:3000)

Access

  • SSH: ssh guru@172.16.3.30 (ed25519 keys: guru@wsl, guru@gururmm-build)
  • Sudo password: vault infrastructure/gururmm-server.sops.yaml (same as SSH)
  • 1Password: op://Infrastructure/GuruRMM Server/password
  • Vault path: infrastructure/gururmm-server.sops.yaml

Key Paths

GuruRMM

Path Purpose
/usr/local/bin/gururmm-server Server binary
/usr/local/bin/gururmm-agent Local agent binary
/home/guru/gururmm/ Gitea repo clone
/var/www/gururmm/dashboard/ Built React dashboard (served by nginx)
/var/www/gururmm/downloads/ Agent artifact distribution directory
/var/www/gururmm/downloads/windows/amd64/ Windows x64 MSI + EXE
/var/www/gururmm/downloads/windows/x86/ Windows x86 EXE
/opt/gururmm/ Build pipeline scripts and state
/opt/gururmm/webhook-handler.py Gitea webhook receiver (port 9000)
/opt/gururmm/build-shared.sh Version bump + git sync (runs once per trigger)
/opt/gururmm/build-linux.sh Linux cargo build
/opt/gururmm/build-windows.sh SSH to Pluto + artifact copy
/opt/gururmm/build-mac.sh Stub (no Mac build machine)
/opt/gururmm/build-server.sh Server binary rebuild (separate, manual trigger)
/opt/gururmm/.env DB URL + secrets (GuruRMM build context)
/opt/gururmm/pluto_known_hosts Pinned SSH keys for Pluto (172.16.3.36)
/opt/gururmm/last-built-commit-linux SHA tracking for Linux build gate
/opt/gururmm/last-built-commit-windows SHA tracking for Windows build gate
/opt/gururmm/last-built-commit-mac SHA tracking for Mac build gate (stub)
/var/log/gururmm-build-linux.log Linux build log
/var/log/gururmm-build-windows.log Windows build log (includes [PLUTO] prefixed SSH output)

[WARNING] Do NOT use /opt/gururmm/updates/ for freshness checks — legacy path from before the pipeline split (~Feb 2026). Active distribution is /var/www/gururmm/downloads/.

ClaudeTools

Path Purpose
/home/guru/claudetools/ ClaudeTools repo clone (if present)
ClaudeTools API port 8001 Docs at http://172.16.3.30:8001/api/docs

Databases

MariaDB (claudetools)

  • DB: claudetools
  • User: op://Infrastructure/GuruRMM Server/Databases.MariaDB User
  • Password: op://Infrastructure/GuruRMM Server/Databases.MariaDB Password
  • Vault: bash D:/vault/scripts/vault.sh get-field projects/claudetools/database.sops.yaml credentials.password

PostgreSQL (gururmm)

  • DB: gururmm
  • User: op://Infrastructure/GuruRMM Server/Databases.PostgreSQL User
  • Password: op://Infrastructure/GuruRMM Server/Databases.PostgreSQL Password
  • Connection string: postgres://gururmm:43617ebf7eb242e814ca9988cc4df5ad@localhost:5432/gururmm
  • DB URL also in: /opt/gururmm/.env and /home/guru/.cargo/env

systemd Services

Unit Binary Purpose
gururmm-server /usr/local/bin/gururmm-server GuruRMM Rust/Axum API
gururmm-agent /usr/local/bin/gururmm-agent Local GuruRMM agent (enrolled as ACG internal)
gururmm-webhook /opt/gururmm/webhook-handler.py Build pipeline webhook receiver

Build Pipeline Role

This machine is the build orchestrator for GuruRMM. It receives Gitea webhooks, runs the Linux build directly, and SSHes to Pluto for Windows builds.

Gitea push to main → webhook-handler.py (port 9000)
  → build-shared.sh  (version bump, one-shot)
  → build-linux.sh   (cargo build on this machine)
  → build-windows.sh (SSH → Pluto at 172.16.3.36)
  → build-mac.sh     (stub)
  → artifacts → /var/www/gururmm/downloads/
  → systemctl restart gururmm-agent

Server and dashboard are NOT rebuilt by the agent pipeline — separate manual steps:

sudo /opt/gururmm/build-server.sh          # Rebuild server binary
cd /home/guru/gururmm/dashboard && sudo -u guru npm run build
sudo rsync -av --delete /home/guru/gururmm/dashboard/dist/ /var/www/gururmm/dashboard/

SSH to Pluto from this machine:

ssh -o StrictHostKeyChecking=yes \
    -o UserKnownHostsFile=/opt/gururmm/pluto_known_hosts \
    Administrator@172.16.3.36

Known Issues & Quirks

  • DATABASE_URL required at build time — sqlx compile-time macros need it. Located in /home/guru/.cargo/env. Builds fail silently if not sourced.
  • Pre-commit hook lacks execute bit (noted 2026-05-23) — likely still unfixed.
  • sudo -u guru git required in systemd build context — git rejects the repo as dubious ownership when running as root against guru-owned /home/guru/gururmm. Use git config --system --add safe.directory /home/guru/gururmm or always prefix with sudo -u guru.
  • NPM proxy stale entry — credentials.md and Jupiter NPM still proxy rmm-api.azcomputerguru.com → 172.16.3.20:3001. Should be 172.16.3.30:3001. Fix in NPM admin at http://172.16.3.20:7818.
  • Gitea at :3000 — accessible via SSH port forward from this machine; authoritative Gitea container is on Jupiter (.20). Internal direct URL: http://172.16.3.20:3000.