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.
7.0 KiB
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 |
|
|
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/.envand/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 gitrequired in systemd build context — git rejects the repo as dubious ownership when running as root against guru-owned/home/guru/gururmm. Usegit config --system --add safe.directory /home/guru/gururmmor always prefix withsudo -u guru.- NPM proxy stale entry — credentials.md and Jupiter NPM still proxy
rmm-api.azcomputerguru.com → 172.16.3.20:3001. Should be172.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.
Backlinks
- projects/gururmm — GuruRMM API, build pipeline, ClaudeTools API all run here
- systems/jupiter — this machine is a virsh VM hosted on Jupiter
- systems/pluto — Windows builds SSH from here to Pluto