Skip to content

Commit 92ecf60

Browse files
committed
New post, Introducing the Web Interface
Showcase tour of the v26.06 web interface: Overview, the Interfaces status view, curated Configure pages, the advanced tree editor, and Maintenance, plus a network.local discovery shot. Screenshots from a BPI-R3 running v26.06.0. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
1 parent 79f9d06 commit 92ecf60

8 files changed

Lines changed: 155 additions & 0 deletions
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
---
2+
title: Introducing the Web Interface
3+
author: troglobit
4+
date: 2026-07-01 08:00:00 +0100
5+
categories: [showcase]
6+
tags: [webui, restconf, management]
7+
image:
8+
path: /assets/img/webui-overview.png
9+
alt: The Infix web interface, Overview page
10+
show_in_post: false
11+
---
12+
13+
<!--
14+
Screenshots captured from a Banana Pi BPI-R3 running Infix v26.06.0 (GA).
15+
Files in /assets/img/: webui-overview, webui-interfaces (Status list),
16+
webui-interface-detail, webui-configure, webui-tree, webui-maintenance,
17+
webui-netbrowse, webui-login.
18+
-->
19+
20+
Infix has always been a *YANG-native* system: every setting lives in a
21+
model-backed datastore, reachable over the CLI, NETCONF, and RESTCONF.
22+
With [**v26.06**][release] we add a fourth way in: a built-in **web
23+
interface**.
24+
25+
It is not a separate configuration path with its own quirks. The WebUI
26+
speaks [RESTCONF][rfc8040] to the same datastore as everything else, so
27+
what you see and change in the browser is exactly what the CLI and
28+
NETCONF see. One source of truth, now with a point-and-click front end.
29+
30+
![](/assets/img/webui-overview.png){: #fig1 width="800" }
31+
_**Figure 1**: The Overview page — system, board, vitals, connectivity, and addresses at a glance._
32+
33+
### A guided tour
34+
35+
The landing page is **Overview**. Across the top sit *System
36+
Information* (hostname, contact, OS build), *Runtime* (uptime, memory,
37+
load), and *Board* (model, base MAC). Below, a *Key Vitals* panel with
38+
the hottest sensors (CPU, radios, SFP modules) sits beside *Disk
39+
Usage*, a *Connectivity* card (default gateway, Internet reachability,
40+
DNS, and time sync), and an *Addresses* summary. Enough to answer "is it
41+
healthy, reachable, and what is it?" without a click.
42+
43+
The sidebar splits into three groups: **Status** for read-only
44+
operational data, **Configure** for changing settings, and
45+
**Maintenance** for the lifecycle tasks.
46+
47+
#### Status at a glance
48+
49+
If there is one screen to show a newcomer, it is **Interfaces**. It
50+
lists every interface with its state, and nests the members of a bridge
51+
directly underneath it, so you can see at a glance that `lan1``lan4`
52+
are bridged into `br0` and *forwarding*, while the uplink `wan` pulls a
53+
DHCP lease of its own. When an interface joins a bridge it becomes a
54+
bridge port, and the list reflects that: the status column shows the
55+
bridge port state (`forwarding`, `disabled`, …) rather than a plain
56+
up/down.
57+
58+
![](/assets/img/webui-interfaces.png){: #fig2 width="800" }
59+
_**Figure 2**: The Interfaces overview — bridge members nested under `br0`, each with its bridge port state._
60+
61+
Click any interface to open its detail page: link speed, duplex, PHY and
62+
PMD type, the supported and advertised link modes, and a counters panel
63+
that updates live. Other interface kinds show what matters for them: the
64+
station table and scan results for Wi-Fi, peer state for WireGuard, frame
65+
statistics for Ethernet. Alongside sit the familiar operational tables:
66+
routes, services, DHCP leases, LLDP and mDNS neighbours, and hardware
67+
sensors.
68+
69+
![](/assets/img/webui-interface-detail.png){: #fig3 width="800" }
70+
_**Figure 3**: Interface detail — link info and live-updating counters._
71+
72+
#### Configuring the device
73+
74+
**Configure** gives you curated pages for the everyday tasks: system
75+
settings, users and groups, interfaces, routing, firewall zones, and the
76+
DNS and NTP clients. The interface page, for instance, lays out your
77+
interfaces and their addressing at a glance (a LAN bridge here, DHCPv4
78+
on the uplink there) and lets you edit one at a time instead of
79+
wrestling a giant form.
80+
81+
Changes are staged, not applied blindly. You build up an edit and then
82+
choose **Apply** to load it into the running configuration, or **Apply &
83+
Save** to also persist it to startup: the same `running` versus
84+
`startup` model you know from the CLI, with an **Abort** to back out.
85+
86+
![](/assets/img/webui-configure.png){: #fig4 width="800" }
87+
_**Figure 4**: The Configure → Interfaces page, with staged Apply / Apply & Save._
88+
89+
#### Advanced: the full YANG tree
90+
91+
Curated pages cover the common cases; they do not cover *everything*.
92+
For the rest there is **Edit all**, a navigable view of the complete
93+
YANG tree. Pick any node and the panel on the right renders an editor
94+
for it, generated straight from the model, right down to leaves the
95+
curated pages never touch. Nothing is hidden.
96+
97+
![](/assets/img/webui-tree.png){: #fig5 width="800" }
98+
_**Figure 5**: The advanced tree editor, here editing the NTP subtree._
99+
100+
#### Maintenance
101+
102+
The **Maintenance** section handles the lifecycle bits. **Software**
103+
shows the two firmware slots with their versions and boot order, and
104+
installs a new image from a URL or an upload, with an optional reboot
105+
when it is done. **Backup & Support** downloads a configuration backup,
106+
restores one (older backups are migrated to the current format
107+
automatically), and produces a support bundle. Rounding it out are a
108+
**Logs** viewer, **Diagnostics**, and a guarded **System Control** for
109+
reboot, shutdown, and factory reset.
110+
111+
Shortcuts to a web console and the network neighbour browser sit in the
112+
top bar, next to a light/dark theme toggle and the bundled User's Guide.
113+
114+
![](/assets/img/webui-maintenance.png){: #fig6 width="800" }
115+
_**Figure 6**: Firmware slots and boot order in the Maintenance section._
116+
117+
### Built to fit
118+
119+
Infix runs on everything from a Raspberry Pi to industrial switches
120+
tucked into a cabinet with no Internet in sight, and the WebUI is built
121+
for that world:
122+
123+
- **One static binary.** Written in Go with [htmx][htmx] for
124+
interactivity, it ships as a single executable with every template,
125+
stylesheet, script, and icon embedded. No Node build step, no runtime
126+
dependencies.
127+
- **Fully offline.** Every asset is served from the device itself;
128+
nothing is fetched from a CDN, so it works the same on an air-gapped
129+
network as it does on your desk. Even the User's Guide is on board.
130+
- **RESTCONF underneath.** The server is a thin translator: it turns
131+
page views into RESTCONF requests and renders the responses. Anything
132+
the WebUI does, you can script over the same API.
133+
134+
### Try it
135+
136+
Grab [**v26.06**][release] or later, then reach the device however suits
137+
you: point a browser straight at it (say `https://192.168.0.1` or its
138+
`hostname.local` name), or open <https://network.local> from any host on
139+
the same LAN. Any Infix device on the segment serves that page; behind
140+
it, a small neighbour browser walks the network over mDNS and lists every
141+
Infix device it can see, each linking straight to its web interface and
142+
console. Flip it to **All** mode and it shows every other mDNS responder
143+
on the segment too. Log in with your device credentials.
144+
145+
![](/assets/img/webui-netbrowse.png){: #fig7 width="800" }
146+
_**Figure 7**: `network.local` in **All** mode — the whole mDNS neighbourhood, with the Infix gateway among it._
147+
148+
This first release lays the groundwork. Expect the curated pages to
149+
keep growing in the releases ahead. My colleague Mattias will follow up
150+
with a closer look at another v26.06 highlight, Wi-Fi roaming and mesh,
151+
so stay tuned.
152+
153+
[rfc8040]: https://datatracker.ietf.org/doc/html/rfc8040
154+
[htmx]: https://htmx.org
155+
[release]: https://github.com/kernelkit/infix/releases/tag/v26.06.0

assets/img/webui-configure.png

174 KB
Loading
230 KB
Loading

assets/img/webui-interfaces.png

249 KB
Loading

assets/img/webui-maintenance.png

186 KB
Loading

assets/img/webui-netbrowse.png

197 KB
Loading

assets/img/webui-overview.png

304 KB
Loading

assets/img/webui-tree.png

222 KB
Loading

0 commit comments

Comments
 (0)