GhostVM RVM / rvm.rojoring.com

parking page — service is the Go binary on :5000 (HTTP) and gRPC
v1.0.191 d332eb1d598875243771addb0877b403958324e5 ================ server ================ 1.0.93 d332eb1d598875243771addb0877b403958324e5 · up 5d 4h 47m

System

Hostname
rvm.rojoring.com
Tailscale IP
100.69.195.103
Load (1m / 5m / 15m)
0.01 / 0.06 / 0.07
0.0% of 24 CPUs
Memory
1.9%
2.4 GB of 125.5 GB
Disk /
5.5%
160.3 GB of 2.9 TB · 2.7 TB free
Disk /var
5.5%
160.3 GB of 2.9 TB · 2.7 TB free

Services

UnitState
ghostvm-rvm inactive
ghostvm-rvm-server inactive
tailscaled active
nginx active
mysql active
redis-server active
Add to /etc/sudoers.d/forge-systemctl to let the parking page read service state:
forge ALL=(ALL) NOPASSWD: /bin/systemctl is-active *, /bin/systemctl status *

Endpoints

/health
Liveness probe — JSON status + uptime
/status
Process status snapshot
/metrics
Prometheus metrics (text format)
/stats
Aggregated JSON stats (auth-required)
Direct links hit the Go server on :5000. The "proxied" links assume nginx forwards these paths to 127.0.0.1:5000 — add blocks like location /metrics { proxy_pass http://127.0.0.1:5000; } in the Forge site config if you want clean URLs. /stats is allowlist + HTTP basic-auth protected (see pkg/statswiring/statswiring.go).