{% extends "base.html" %} {% block content %}

Network Overview

{% if stats is none %}
Could not reach the Nebula stats endpoint at {{ request.app.state.stats_url if request.app.state is defined else "configured URL" }}. Make sure stats.enabled and stats.listen are set in your Nebula config.
{% else %} {# ── top-level counters ── #} {% set meta = stats.get("meta", {}) %} {% set network = stats.get("network", {}) %}
Nebula Version
{{ meta.get("version", "—") }}
{% set peers = hostmap.get("Hosts", {}) if hostmap else {} %}
Active Peers
{{ peers | length }}
{% set counters = stats.get("counters", {}) %}
Tx Bytes
{{ "{:,}".format(counters.get("send_bytes", 0)) }}
Rx Bytes
{{ "{:,}".format(counters.get("recv_bytes", 0)) }}
Tx Packets
{{ "{:,}".format(counters.get("send_packets", 0)) }}
Rx Packets
{{ "{:,}".format(counters.get("recv_packets", 0)) }}
{# ── raw stats JSON ── #}
Raw stats JSON
{{ stats | tojson(indent=2) }}
{% endif %} {# ── hostmap ── #}

Peer Hostmap

{% if hostmap is none %}
Hostmap unavailable — stats endpoint not reachable.
{% else %} {% set hosts = hostmap.get("Hosts", {}) %} {% if not hosts %}
No peers connected.
{% else %} {% for overlay_ip, host in hosts.items() %} {% endfor %}
Overlay IP Remote Addrs Index Relay?
{{ overlay_ip }} {% for addr in host.get("RemoteAddrs", []) %} {{ addr }} {% else %} none {% endfor %} {{ host.get("LocalIndex", "—") }} {% if host.get("Relay") %} relay {% else %} no {% endif %}
{% endif %}
Raw hostmap JSON
{{ hostmap | tojson(indent=2) }}
{% endif %}
{% endblock %}