Skip to content

Stats Dashboard

The CLI client can serve a built-in statistics dashboard — a self-contained HTML page with live MRTG/RRD-style graphs, plus a JSON API for scripting. It runs alongside the client with no extra dependencies and is disabled by default.


  • Throughput — receive/transmit rate graphs, sampled continuously
  • Connections — accepted, active, completed, tunneled, bypassed and blocked counters
  • History — the last 24 hours, kept in memory (resets on restart)

The page auto-reloads every 30 seconds. Everything is rendered as inline SVG — no JavaScript frameworks, no external requests.


Ad-hoc, from the command line:

Terminal window
rvpn -c ~/.config/rvpn/client.toml --dashboard-listen 127.0.0.1:9800

Or permanently, in client.toml:

[dashboard]
enabled = true
listen_address = "127.0.0.1:9800"

Then open http://127.0.0.1:9800 in a browser.


If the client runs on a gateway or another machine, bind the LAN interface and extend allow_cidrs:

[dashboard]
enabled = true
listen_address = "0.0.0.0:9800"
allow_cidrs = ["127.0.0.0/8", "192.168.10.0/24"]

Requests from outside the allowed ranges get 403 Forbidden.


GET /api/stats.json returns the raw counters and the recent history buckets (30 minutes), suitable for feeding into your own monitoring:

Terminal window
curl -s http://127.0.0.1:9800/api/stats.json | jq

Fields include bytes_up, bytes_down, conns_accepted, conns_active, conns_tunneled, conns_bypassed and conns_blocked.


FieldTypeDefaultDescription
enabledboolfalseStart the dashboard HTTP listener alongside the client.
listen_addressstring"127.0.0.1:9800"Address and port for the dashboard.
allow_cidrslist["127.0.0.0/8", "::1/128"]Networks allowed to view the dashboard; everyone else gets 403.

See also: Client Config Reference