* Add layer 4 proto support * Fix initialResource fallback and UDP session_idle_timeout * Fix tlsResourceId init for resource-driven create flows, UDP timeout label * Address PR review: ServiceMode enum, resource init fix, modal title, a11y * Add L4 protocol values to ReverseProxyTargetProtocol, remove unsafe double cast * Add aria-labels to L4 port/host inputs * Unify domain input for all service modes including L4 * Support L4 proxy events * Fix custom port reset on edit and show port in L4 service link * Remove redundant listen port from L4 target cell * Show link only for HTTP/TLS services, copy-on-click for TCP/UDP * Move mode badge before domain and use fixed width for alignment * Fix HTTP services to open as link instead of copy * Hide old proxy clusters from L4 domain selector * Move service type inside modal * Update auth cell * Add target selector component * Extract into separate components * hide services types for not supported clusters * Remove advanced settings tab in http targetmodal and use accordion instead * Update advanced settings * Update target device row * Update text * Add type cell * Fix flat target name cell * Update modal title * Fix edit target in flat table * Remove unused proxycluster interface * Move proxy type icon into type component * sync cloud * use emptyrow * fix l4 type * fix duplicate error notification * Set the correct target type * Fix subnet host editable * Fix subnet host editable * hide selector when initial resource or peer * Rename dropdown * Update text * update status cell * merge cloud * Update tooltips * Address coderabbit comments * Fix skeleton device card * Update listen port tooltip * Adjust padding * update package-lock.json * bump next to 16.1.7 --------- Co-authored-by: Eduard Gert <kontakt@eduardgert.de>
NetBird Dashboard
This project is the UI for NetBird's Management service.
Hosted version: https://app.netbird.io/
See NetBird repo
Why?
The purpose of this project is simple - make it easy to manage VPN built with NetBird. The dashboard makes it possible to:
- track the status of your peers
- remove peers
- manage Setup Keys (to authenticate new peers)
- list users
- define access controls
Some Screenshots
Technologies Used
- NextJS
- ReactJS
- Tailwind CSS
- React Flow for the Control Center
- Auth0
- Nginx
- Docker
- Let's Encrypt
How to run
Disclaimer. We believe that proper user management system is not a trivial task and requires quite some effort to make it right. Therefore we decided to use Auth0 service that covers all our needs (user management, social login, JWT for the management API). Auth0 so far is the only 3rd party dependency that can't be really self-hosted.
-
Install Docker
-
Register Auth0 account
-
Running NetBird UI Dashboard requires the following Auth0 environmental variables to be set (see docker command below):
AUTH0_DOMAINAUTH0_CLIENT_IDAUTH0_AUDIENCETo obtain these, please use Auth0 React SDK Guide up until "Configure Allowed Web Origins"
-
NetBird UI Dashboard uses NetBird's Management Service HTTP API, so setting
NETBIRD_MGMT_API_ENDPOINTis required. Most likely it will behttp://localhost:33071if you are hosting Management API on the same server. -
Run docker container without SSL (Let's Encrypt):
docker run -d --name netbird-dashboard \ --rm -p 80:80 -p 443:443 \ -e AUTH0_DOMAIN=<SET YOUR AUTH DOMAIN> \ -e AUTH0_CLIENT_ID=<SET YOUR CLIENT ID> \ -e AUTH0_AUDIENCE=<SET YOUR AUDIENCE> \ -e NETBIRD_MGMT_API_ENDPOINT=<SET YOUR MANAGEMENT API URL> \ netbirdio/dashboard:main -
Run docker container with SSL (Let's Encrypt):
docker run -d --name netbird-dashboard \ --rm -p 80:80 -p 443:443 \ -e NGINX_SSL_PORT=443 \ -e LETSENCRYPT_DOMAIN=<YOUR PUBLIC DOMAIN> \ -e LETSENCRYPT_EMAIL=<YOUR EMAIL> \ -e AUTH0_DOMAIN=<SET YOUR AUTH DOMAIN> \ -e AUTH0_CLIENT_ID=<SET YOUR CLEITN ID> \ -e AUTH0_AUDIENCE=<SET YOUR AUDIENCE> \ -e NETBIRD_MGMT_API_ENDPOINT=<SET YOUR MANAGEMENT API URL> \ netbirdio/dashboard:main
How to run local development
- Install Node
- Create and update the
.local-config.jsonfile. This file should contain values to be replaced fromconfig.json - Run
npm installto install dependencies - Run
npm run devto start the development server
Open http://localhost:3000 with your browser to see the result.
You can start editing by modifying the code inside src/..
The page auto-updates as you edit the file.
How to migrate from old dashboard (v1)
The new dashboard comes with a new docker image netbirdio/dashboard:main.
To migrate from the old dashboard (v1) wiretrustee/dashboard:main to the new one, please follow the steps below.
- Stop the dashboard container
docker compose down dashboard - Replace the docker image name in your
docker-compose.ymlwithnetbirdio/dashboard:main - Recreate the dashboard container
docker compose up -d --force-recreate dashboard