Luci-app-netbird: Web UI for NetBird on OpenWrt

Hi everyone. I build a LuCI app for the NetBird mesh-VPN client on OpenWrt — manage NetBird on OpenWrt from the router, no command line needed.
Compatible with OpenWrt 24.x (opkg) and 25.x (apk).

GitHub repository: https://github.com/looong-cat/luci-app-netbird
Pages: https://luci-app-netbird.okk.sh

Features

Surfaces the NetBird client's capabilities in the LuCI UI:

  • Connect / reconnect / disconnect / deregister; self-hosted management

  • Automatic reconnect after transient outages — with clear authentication-failure reasons

  • Binary version management — official release, package feed, or custom URL

  • Firewall automation — NetBird zone and LAN ↔ mesh forwarding

  • Full netbird up settings — WireGuard, routes, DNS, SSH, IPv6, Rosenpass, log level

  • Peer status and live logs

Screenshots

5 Likes

Nice we could use that.

Maybe also announce it in Netbird support thread:

I will also mention it in my notes:
OpenWRT Netbird setup

Note that OpenWRT version 24.10 is stuck at Netbird 0.59.13 due to incompatibilities it is also going EOL in a couple of months so perhaps skip supporting that and only support apk in 25.12 and Main branch

I'm doing the same thing, and the progress is relatively slow, but you have finished it. I admire you very much!

Thanks! I'll post it there.

Note: The NetBird package in the OpenWrt feed is often several versions behind the official releases, so luci-app-netbird prioritizes the official NetBird releases by default. I also included the OpenWrt package version as an alternative for better compatibility.

Thanks! Feel free to try it out and share your feedback.

There are regular updates which are tested first, we are currently in the process of updating to 0.73.2 :slight_smile:

The majority of users are using a non X86 platform which needs the specific OpenWRT build

Thanks for the great work!

Right now, the Luci-app-netbird only supports amd64, arm64, 386, and armv6 for official NetBird releases. Other architectures (mips, riscv, etc.) automatically fall back to the OpenWrt package feed.
Users can also choose the NetBird client source — either the official releases or the OpenWrt package feed.

The logic is straightforward: use the official release when available for that architecture, otherwise use the feed. I don’t have non-x86 hardware to test with (mostly running OpenWrt in Proxmox), so any suggestions for improvement are very welcome.