Skip to content

QManager BETA v0.1.10

Pre-release
Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 02 Apr 03:06
· 1545 commits to development-home since this release

🚀 QManager BETA v0.1.10

NetBird VPN management, VPN inbound connectivity fix, Tailscale boot control fix, and improved uninstall process for both VPN clients.


🐛 Bug Fixes

🔒 VPN Inbound Connectivity (Tailscale & NetBird)

  • 🔧 Peers could not reach the device via VPN — Both Tailscale and NetBird suffered from the same issue: the VPN interface (tailscale0 / wt0) was not assigned to any fw4 firewall zone, and mwan3 was hijacking VPN reply packets for WAN routing.
  • ✅ Fix: Two-part fix applied automatically on VPN install/connect/service start:
    1. Firewall zone — A UCI zone (input=ACCEPT, output=ACCEPT, forward=ACCEPT) is created for the VPN interface with bidirectional forwarding to LAN. Persists across reboots.
    2. mwan3 ipset exception — The CGNAT range 100.64.0.0/10 is added to the mwan3_connected_ipv4 ipset so mwan3 skips marking VPN-bound traffic. Ephemeral (re-applied on every service start).
  • 🔗 Shared helper library (vpn_firewall.sh) ensures both fixes are applied/removed consistently across both VPN clients.

🔄 Tailscale Boot Toggle Not Working

  • 🔧 Disabling "Start on Boot" did not prevent Tailscale from reconnecting after reboot — The luci-app-tailscale init script uses a UCI enabled flag as the authoritative control, not the init.d symlink. Additionally, a procd interface trigger fires reload on every WAN up event, bypassing the symlink entirely.
  • ✅ Fix: The boot toggle now sets tailscale.@tailscale[0].enabled in UCI config (the flag the init script actually checks), in addition to the init.d enable/disable.

✨ New Features & Enhancements

🛡️ NetBird VPN Management

  • 🆕 Full NetBird VPN management page at Monitoring → NetBird — Install, connect, disconnect, start/stop service, enable/disable on boot, and uninstall — all from the web UI.
  • 📊 Multi-state connection card — Adapts to show the appropriate UI for each state: not installed, service stopped, disconnected, and connected. Connected state shows FQDN, NetBird IP, Management status, and Signal status.
  • 🔑 Optional setup key — Enter a setup key from the NetBird dashboard when connecting, or leave empty if already registered.
  • 👥 Peers card — Shows connected peer details (hostname, IP, connection type, status, last seen) when available, or a summary peer count for older NetBird versions.

🔐 VPN Mutual Exclusion

  • 🆕 Only one VPN can be installed at a time — Installing Tailscale while NetBird is present (or vice versa) is blocked at the backend with a clear error message.
  • 🆕 Cross-VPN awareness — Each VPN page detects if the other is installed and shows a prompt directing the user to uninstall it first.

🗑️ Improved VPN Uninstall Process

  • 🆕 Uninstall section for both Tailscale and NetBird — Separated bottom section with confirmation dialog, following the established design pattern (Email Alerts, Video Optimizer).
  • 🔧 Auto-stops service before removal — No need to manually stop the daemon first; the backend handles it automatically.
  • 🔧 Firewall cleanup — VPN firewall zone and mwan3 ipset exception are removed on uninstall (only when the other VPN is also not installed).
  • 🔄 Reboot after uninstall — A "Reboot Required" dialog appears after successful removal, offering "Reboot Now" or "Reboot Later" to clean up any remaining artifacts.

📥 Installation

Fresh Install

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager/raw/refs/heads/development-home/qmanager-installer.sh && \
  sh /tmp/qmanager-installer.sh

Upgrading from v0.1.9

Head to System Settings → Software Update and hit "Check for Updates" — download, verify, then install with the two-step flow.


💙 Thank You

Thanks for using QManager! If you find it useful, consider supporting the project. Bug reports and feature requests are always welcome on GitHub Issues.

License: MIT + Commons Clause

Happy connecting! 📡