Coder Social home page Coder Social logo

dec0dos / zero-ui Goto Github PK

View Code? Open in Web Editor NEW
910.0 24.0 146.0 7.28 MB

ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller.

License: GNU General Public License v3.0

Shell 0.13% JavaScript 96.74% Dockerfile 1.88% HTML 0.57% CSS 0.68%
zerotier zerotier-one sd-wan vpn zero-ui sdn sdn-controller zerotier-controller docker nodejs

zero-ui's Introduction


Logo

ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller.
Explore the screenshots »

Bug Report · Feature Request · Ask a Question

Table of Contents

About

This project drew inspiration from ztncui and was developed to address the current limitations of self-hosted network controllers. Some of the issues in ztncui cannot be resolved due to the core architecture of the project. ZeroUI aims to resolve these issues and introduces the following features:

  • It is a lightweight Single Page Application (SPA) built with React, providing an improved user experience, and it is mobile-friendly.
  • ZeroUI is compatible with the ZeroTier Central API, allowing you to use CLI tools and custom applications designed for ZeroTier Central to manage your networks.
  • ZeroUI implements controller-specific workarounds to address certain existing issues that are not addressed in ZTNCUI.
  • ZeroUI is more feature-complete, supporting almost all network controller features, including a rule editor. Development is ongoing, so you can expect regular updates with new features and bug fixes.
  • Deploying ZeroUI is straightforward; refer to the installation section for more information.
Curious about ZeroTier?

ZeroTier is an impressive open-source project available on a wide range of platforms. It can resolve many of your complex networking issues, potentially replacing your intricate VPN setups. You can create a virtual LAN and manage all your devices effortlessly.

In essence, ZeroTier combines the capabilities of VPN and SD-WAN, simplifying network management.

Built With

Frontend:

Backend:

Ready-to-use deployment solution:

Getting Started

Prerequisites

The recommended way to install ZeroUI is by using Docker and Docker Compose. To install Docker and Docker Compose on your system, please follow the installation guide in the official Docker documentation.

For HTTPS setup, you will need a domain name. You can obtain one for free at https://www.duckdns.org.

Installation

Here's a straightforward one-minute installation guide, perfect for a fresh VPS setup:

  1. Create a project directory
mkdir -p /srv/zero-ui/
cd /srv/zero-ui/
  1. Download the docker-compose.yml file
wget https://raw.githubusercontent.com/dec0dOS/zero-ui/main/docker-compose.yml

or

curl -L -O https://raw.githubusercontent.com/dec0dOS/zero-ui/main/docker-compose.yml
  1. Replace YOURDOMAIN.com with your domain name and set admin credentials (ZU_DEFAULT_PASSWORD) in docker-compose.yml
  2. Pull the image
docker pull dec0dos/zero-ui
  1. Run the containers
docker-compose up -d --no-build
  1. Check if everything is okay (CTRL-C to stop log preview)
docker-compose logs -f
  1. Disable your firewall for the following ports: 80/tcp, 443/tcp, and 9993/udp
  • On Ubuntu/Debian with ufw installed:
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 9993/udp
  • Or you can use iptables:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 9993 -j ACCEPT
  1. Navigate to https://YOURDOMAIN.com/app/. Now you can use your ZeroUI instance with HTTPS support and automated certificate renewal.

To disable Caddy proxy and HTTPS, remove the https-proxy from docker-compose.yml, set ZU_SECURE_HEADERS to false, and change zero-ui port expose to ports.

Advanced manual setups are also supported. Check the following environment variables as a reference:

Name Default value Description
NODE_ENV unset You could learn more here
LISTEN_ADDRESS 0.0.0.0 Express server listen address
ZU_SERVE_FRONTEND true You could disable frontend serving and use ZeroUI instance as REST API for your ZeroTier controller
ZU_SECURE_HEADERS true Enables helmet
ZU_CONTROLLER_ENDPOINT http://localhost:9993/ ZeroTier controller API endpoint
ZU_CONTROLLER_TOKEN from /var/lib/zerotier-one/authtoken.secret ZeroTier controller API token
ZU_DEFAULT_USERNAME unset (docker-compose.yml: admin) Default username that will be set on the first run
ZU_DEFAULT_PASSWORD unset (docker-compose.yml: zero-ui) Default password that will be set on the first run
ZU_DATAPATH data/db.json ZeroUI data storage path
ZU_DISABLE_AUTH false If set to true, automatically log in all users. This is useful if ZeroUI is protected by an authentication proxy. Note that when this value is changed, the localStorage of instances of logged-in panels should be cleared
ZU_LAST_SEEN_FETCH true Enables Last Seen feature
ZU_LAST_SEEN_SCHEDULE */5 * * * * Last Seen cron-like schedule
ZU_LOGIN_LIMIT false Enable rate limiter for /login endpoint
ZU_LOGIN_LIMIT_WINDOW 30 The duration of the IP ban in minutes
ZU_LOGIN_LIMIT_ATTEMPTS 50 Login attemps before ban

ZeroUI could be deployed as a regular nodejs web application, but it requires a ZeroTier controller that is installed with the zerotier-one package. For more info about the network controller, you could read here.

For Ansible Role, please refer to the zero-ui-ansible repository.

Controller Setup Tips (Outside Docker)

If you are using an existing controller on the host, you may need to allow connections from the Docker container. There are two ways to do this:

  1. Allow controller management from any IP address:
echo "{\"settings\": {\"portMappingEnabled\": true,\"softwareUpdate\": \"disable\",\"allowManagementFrom\": [\"0.0.0.0/0\"]}}" > /var/lib/zerotier-one/local.conf

Warning: Don't forget to block connections to 9993/TCP from the WAN. Directly exposing the controller API to the WAN is not recommended; it should be proxified via the ZeroUI backend.

  1. Add network_mode: "host" to zero-ui in docker-compose.yml.

For more information, please refer to this discussion.

Usage

After installation, log in with the credentials declared with ZU_DEFAULT_USERNAME and ZU_DEFAULT_PASSWORD.

Currently, some main ZeroTier Central features are missing. Refer to the roadmap for more information.

For screenshots, please refer to the screenshots section.

Update

To get the latest version, simply run

docker-compose pull && docker-compose up -d --no-build

in the folder where docker-compose.yml is located. Backups may not be necessary since most of your data is usually saved at the controller level, but it's still a good idea to consider them as a precautionary measure.

Backup

You should regularly back up the zerotier-one and data folders in your ZeroUI installation directory. You can do this manually before upgrading using the following commands:

tar cvf backup-ui.tar data/
tar cvf backup-zt.tar zerotier-one/

Roadmap

For a list of proposed features (and known issues), see the open issues.

GitHub issues open

When creating bug reports, please ensure they are:

  • Reproducible. Include steps to reproduce the problem.
  • Specific. Provide as much detail as possible, including version, environment, etc.
  • Unique. Avoid duplicating existing open issues.
  • Scoped to a Single Bug. Report one bug per issue.

Contributing

Firstly, thank you for considering contributing! Contributions are what make the open-source community thrive. Any contributions you make will benefit everyone, and they are highly appreciated.

To contribute:

  1. Fork the project.
  2. Create your feature branch (git checkout -b feat/amazing_feature).
  3. Commit your changes (git commit -m 'feat: add amazing_feature').
  4. Push to the branch (git push origin feat/amazing_feature).
  5. Open a Pull Request

ZeroUI uses conventional commits, so please follow the guidelines. You can use yarn commit to open a Text-Based User Interface (TUI) that follows conventional commits guidelines.

Development Environment

To set up a development environment, follow these steps:

  1. Clone the repo
git clone https://github.com/dec0dOS/zero-ui.git
cd zero-ui
  1. Install packages
yarn install
  1. Start the development server
yarn dev
  1. Navigate to http://localhost:3000

You will also need to install the ZeroTier controller. On Linux, installing the zerotier-one package is sufficient, but other platforms may require some adjustments. First, you should obtain the controller token. On macOS, you can find it using the following command:

sudo cat "/Library/Application Support/ZeroTier/One/authtoken.secret"

Afterward, you can start the ZeroUI development environment:

ZU_CONTROLLER_TOKEN=TOKEN_FROM_authtoken.secret yarn dev

For other platforms, please refer to the ZeroTier manual.

Support

If you need assistance or have questions, reach out through GitHub Discussions.

Security

ZeroUI follows best practices for security, but complete security cannot be guaranteed. ZeroUI is provided "as is" without any warranty. Use at your own risk.

For enterprise support and a more reliable and scalable solution, please consider using ZeroTier Central.

For more information and to report security issues, please refer to our security documentation.

Copyright Notice

ZeroUI is not affiliated with, associated with, or endorsed by ZeroTier Central or ZeroTier, Inc.

License

License: GPL v3

See LICENSE for more information.

zero-ui's People

Contributors

1ardotno avatar 9p4 avatar aruznieto avatar brianwieder avatar dec0dos avatar dependabot[bot] avatar imgbotapp avatar noobtw avatar timothyle97 avatar wongsyrone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zero-ui's Issues

bug: UI crashes when a network contains no IP ranges

Bug Report

ZeroUI version:
latest

Current behavior:
Cannot read properties of undefined (reading 'ipRangeStart')

Expected behavior:
should be no problem to manage a network without ip assignments, ie, managing ips with kea-dhcp bridged to zerotier

Steps to reproduce:
create a new network, remove ip ranges and try to login/logout

dev: improve dev tooling

Currently, installing dependencies and compiling the project takes a lot of time. There are different things to improve: project build tools, pre-commit checks, CI builds and the new release creation process.

Some things to consider yarn upgrade/replacement, husky upgrade/replacement, standard-version upgrade/replacement (e.g. repo with semantic-release), react-scripts upgrade/replacement (vite build tool looks good), react upgrade/replacement (preact?), workspace frontend/backend management improvement.

Any suggestion is welcome.

bug: Zero UI does not work when using host-path for controller

Bug Report

ZeroUI version:

latest

Current behavior:

When using a standard docker volume everything works fine, but if I use a host-path (i.e. /data/my_docker_data) volume for the zerotier controller, the zero-ui crashes and exits with the error below. This is fairly bizarre, I've used Docker for several years and never experienced this, I've ensured the Host directory has the correct permissions and ownership (matching exactly the same as when utilising a docker-volume), another note, I don't experience this issue ZTBCUI's controller:

zu-main exited with code 1
zu-main     | node:internal/errors:691
zu-main     |   const ex = new Error(msg);
zu-main     |              ^
zu-main     |
zu-main     | Error: socket hang up
zu-main     |     at connResetException (node:internal/errors:691:14)
zu-main     |     at Socket.socketOnEnd (node:_http_client:471:23)
zu-main     |     at Socket.emit (node:events:406:35)
zu-main     |     at endReadableNT (node:internal/streams/readable:1348:12)
zu-main     |     at processTicksAndRejections (node:internal/process/task_queues:83:21) {
zu-main     |   code: 'ECONNRESET',
zu-main     |   config: {
zu-main     |     url: 'status',
zu-main     |     method: 'get',
zu-main     |     headers: {
zu-main     |       Accept: 'application/json, text/plain, */*',
zu-main     |       'X-ZT1-Auth': 'edi9jjcrk2j2l9thozezbf71',
zu-main     |       'User-Agent': 'axios/0.21.1'

Running the following docker compose:

version: "3.9"

services:

  zerotier:
    image: dec0dos/zerotier-controller:latest
    container_name: zu-controller

    restart: unless-stopped
    volumes:
      - '/data/controller/:/var/lib/zerotier-one'
      #- controller_data:/var/lib/zerotier-one
    expose:
      - "9993/tcp"
    ports:
      - "9993:9993/udp"


  zero-ui:
    image: dec0dos/zero-ui:latest
    container_name: zu-main
    # build:
    #   context: .
    #   dockerfile: ./docker/zero-ui/Dockerfile
    restart: unless-stopped
    depends_on:
      - zerotier
    volumes:
      - '/data/controller/:/var/lib/zerotier-one'
      #- controller_data:/var/lib/zerotier-one
      - /cntrs/data/zero-ui/zero-ui:/app/backend/data
    environment:
      - ZU_CONTROLLER_ENDPOINT=http://zerotier:9993/
      - ZU_SECURE_HEADERS=false
      - ZU_DEFAULT_USERNAME=admin
      - ZU_DEFAULT_PASSWORD=zero-ui
    expose:
      - "4000"
    labels:
      - traefik.enable=true
      - traefik.http.routers.zt_https.rule=Host(`zt.prjx.uk`)
      - traefik.http.routers.zt_https.entrypoints=websecure
      - traefik.http.routers.zt_https.tls=true
      - traefik.http.services.zt_https.loadbalancer.server.port=4000
    expose:
      - "4000"


volumes:
  zero-ui_data:
  controller_data:
  caddy_data:

Expected behavior:

When using a docker-volume, it does not generate this error and the UI works as expected.

Steps to reproduce:

Use the above docker-compose.yml .. Not you can remove the Traefik config... the issue still occurs.

bug: After changing settings in a network I get a white screen and restart doesn't fix issue

Bug Report

ZeroUI version:
latest

Current behavior:

I modify a network then press to return to main page but get a white screen

Expected behavior:

should return to list of networks (home page)

Steps to reproduce:

was messing around in the networks page, possibly I entered some bad data for the ip range not sure

Related code:

not sure
possibly this as found a 500 internal server error

Node.js v17.1.0
undefined
/app/backend/app.js:72
  res.status(500).json({ error: "500 Internal server error" });
      ^

TypeError: res.status is not a function
    at /app/backend/app.js:72:7
    at Layer.handle [as handle_request] (/app/backend/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/app/backend/node_modules/express/lib/router/index.js:317:13)
    at /app/backend/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/app/backend/node_modules/express/lib/router/index.js:335:12)
    at next (/app/backend/node_modules/express/lib/router/index.js:275:10)
    at compression (/app/backend/node_modules/compression/index.js:220:5)
    at Layer.handle [as handle_request] (/app/backend/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/app/backend/node_modules/express/lib/router/index.js:317:13)
    at /app/backend/node_modules/express/lib/router/index.js:284:7

Other information:

bug: Docker image unable to start

Bug Report

ZeroUI version: docker image 1.4.1

Docker image 1.4.1

Current behavior:
Zero-tier docker container is running on the same machine (Synology NAS), when trying to start the ZeroUI image (1.4.1) pulled from docker hub, it won’t start and complaining about /var/lib/zerotier not found.

Expected behavior:
Zero-tier should read the settings of server and configuration from the environment variables during start up.

Steps to reproduce:
Pull docker image from synology docker app and start container.

Related code:

insert short code snippets here

Other information:

bug: Zero-ui is not compatible with the Microsoft Edge browser

Bug Report

ZeroUI version:

v1.5.1

latest

Current behavior:

When I used Docker Compose to deploy Zero-UI on Ubuntu this afternoon, the whiteboard appeared when I opened the page of the app using the Edge browser, as shown in the figure.When opened with Chrome and Firefox, it is normal. The problem only appeared after the V1.5.1 update, which started showing up around noon today
image

Expected behavior:

I hope the later module can be compatible with Microsoft Edge browser, this browser is the default browser of Windows, it is quite useful, I hope it can be compatible with this browser, after all, the mainstream browsers now are Firefox, Edge, Chrome.
Some people mentioned this issue in the discussion group, mainly because the latest version of the browser compatibility issues, so I will raise an issue here

Steps to reproduce:

I'm using Ubuntu to load the latest docker, Docker Compose, Then use the installation method mentioned in the document To download Docker-compose. Yml,To disable Caddy proxy and HTTPS, remove the http-proxy from Docker-compose. set ZU_SECURE_HEADERS to false and change zero-ui port expose to ports.

Then deploy it into Docker as follows. When accessed on Edge browser, whiteboard appears. V1.5.1 released on the morning of August 26, 2022, has this problem when Docker is deployed.

Now, I'm using the Settings page on Chrome or Firefox, setting things up, and yesterday it was all accessible on the Edge browser

bug: Error when installing through docker

Hey I'm installing through docker following the setup instructions. I've edited the compose.yaml changing the example.com to my ip and disabling https

After docker-compose up -d --no-build the terminal returns these errors

Creating network "root_default" with the default driver
Creating volume "root_zero-ui_data" with default driver
Creating volume "root_controller_data" with default driver
Creating volume "root_caddy_data" with default driver
Creating zu-controller ...
Creating zu-controller ... error

ERROR: for zu-controller  Cannot start service zerotier: driver failed programming external connectivity on endpoint zu-controller (8e792f9d4bd21d82d8a2d9c8a0641ee6711ca31b7bb06be15230343d481d9e8a): Error starting userland proxy: listen udp4 0.0.0.0:9993: bind: address already in use

ERROR: for zerotier  Cannot start service zerotier: driver failed programming external connectivity on endpoint zu-controller (8e792f9d4bd21d82d8a2d9c8a0641ee6711ca31b7bb06be15230343d481d9e8a): Error starting userland proxy: listen udp4 0.0.0.0:9993: bind: address already in use
ERROR: Encountered errors while bringing up the project.

Any help would be appreciated, thanks!

feat: make the frontend more suitable for mobile devices

Right till now the UI has been made to suit devices with large screens, it is very difficult to navigate through on a mobile device.

Some UI changes like making member details as a collapsible card, tabs for various options like network details, members , flow rules (instead of collapsible cards) would make it better suited for mobile devices.

feat: Support IPv6 auto-assignment modes

Feature Request

It would be great if zero-ui would expose the IPv6 configuration options, as available in the controller. From the controller docs:

Auto-Assign Modes:

Auto assign modes (v4AssignMode and v6AssignMode) contain objects that map assignment modes to booleans.

For IPv4 the only valid setting is zt which, if true, causes IPv4 addresses to be auto-assigned from ipAssignmentPools to members that do not have an IPv4 assignment. Note that active bridges are exempt and will not get auto-assigned IPs since this can interfere with bridging. (You can still manually assign one if you want.)

IPv6 includes this option and two others: 6plane and rfc4193. These assign private IPv6 addresses to each member based on a deterministic assignment scheme that allows members to emulate IPv6 NDP to skip multicast for better performance and scalability. The rfc4193 mode gives every member a /128 on a /88 network, while 6plane gives every member a /80 within a /40 network but uses NDP emulation to route all IPs under that /80 to its owner. The 6plane mode is great for use cases like Docker since it allows every member to assign IPv6 addresses within its /80 that just work instantly and globally across the network.

Describe Preferred Solution

Just expose checkboxes in the UI (just like on ZT-central), that allow checking of one of the three assignment modes.

Note that you can actually already add IPv6 ranges in zero-ui, just put them in Auto-Assign Pools (it's does accept IPv6 as well). It's just not used right now, because zt, 6plane and rfc4193 are all set to false in the controller.

ZT-central uses different UI elements for IPv6 + IPv4 Address Pools, but I think that's not actually required - it can both live in the same UI element, as the controller stores it combined anyway.

Describe Alternatives

I'm currently managing the IPv6 assignment modes manually (without zero-ui), but having this in the project would be great 👍

Additional Context

This is how it looks on ZT-central:

zt-central

If the feature request is approved, would you be willing to submit a PR?
Zero experience with React, not much time right now. Maybe in the future.

bug: Auth doesn't work properly

Bug Report

ZeroUI version:

latest

Current behavior:

The password hashing algorithm seems to be producing a random hash on every execution.
This causes the auth verifyHash to missmatch with the hash stored in db.json.
Please see the attached screenshot that logs the stored password and the hash computed for the entered password.

image

feat: Base URL or relative links in fortend

I need to embed zero-ui into a folder on existing website (serving as reverse proxy).
For this I need all URLs in the frontend relative or to be able to specify base URL for zero-ui.

Is it possile to add such feature?

feat: Client last seen option

Instead of just showing if the client is online or not, it would be nice to have a last seen time for the client, which helps to diagnose certain issues such as power failure or hardware failure from a remote site (just as it shows in zerotier central manager).

feat: ZeroTier Central migration

Feature Request

Describe the Feature Request
When migrating from the hosted zerotier controller, it would be nice be able to add the already existing networks to the selfhosted controller.

Describe Preferred Solution
To my knowledge of how zerotier works, i thought this would be possible by just joining the selfhosted controller to the zerotier network. This could be then done by either the cli in the pod or the UI. But so far i didn't manage to get the UI to show the network if the controller is joined. Or maybe my thinking process is flaud.

Does anyone have any experience with migrating from the hosted zerotier controller?

If the feature request is approved, would you be willing to submit a PR?
Yes

bug: Node showing as online despite never connecting

Bug Report

ZeroUI version:

v1.5.0

latest

Current behavior:

If a node is connected to one network and I add that node id to another network without connecting the node, it will display as online with the information from the network it is actually connected to.

image

Expected behavior:

A node that has never connected to a network should not show as online under that network page.

Steps to reproduce:

1.) Add a node to a network
2.) Connect the node to that network
3.) Create a new network
4.) Add the node id to that network but do not connect node to network
5.) Node shows online despite never connecting

feat: Sort by name

Is it possible to add the function of sorting by name/ip/mac in the name/ip/mac column?

dev: Add try/catch in zt-address.js

When the api.get.status() call fails in zt-address.js you get a unhandled promise rejection error w/o a stacktrace.

Adding try/catch + log will give a bit more info:

const api = require("../utils/controller-api");

module.exports = async function () {
  try {
    const res = await api.get("status");
    return res.data.address;
  }
  catch (err) {
    console.error(err);
  }
};

feat: LDAP for User Authentication and Roles

LDAP as an authentication backend / SAML would be great. Roles could be user (only view) , admin (add or delete networks they create) and su-admin (manage any network on the controller). Such features would be great for people who have more than one user per controller.

feat: IPv6 support

Feature Request

Describe the Feature Request

Thanks, the ui are great, will you plan to adding IPv6 support?

bug: unusable with/without HTTPS

If I configure it with HTTPS, regardless of whether I tell caddy to use a self-signer or not, it pumps out a SSL_ERROR_INTERNAL_ERROR_ALERT.

If I configure it with HTTP, regardless of whether or not I set the secure headers environment variable, everything gets erroneously upgraded to HTTPS, making zero-ui unusable.

feat: Search and Filter: Network, Members

Feature Request

Describe the Feature Request
when there are a large number of nodes, it is difficult to search, it would be good to have a search field and filters, as in zerotier central.

Members
imagen

Networks
imagen

feat: Ability to disable auth

Feature Request

Can we have an option to disable auth? Would be helpful in scenarios where the site will already be secured behind AD/OAuth.

bug: `Add Routes` can not work.

Bug Report

ZeroUI version:

1.4.1(docker container)

Current behavior:

zero-ui add more rule in Managed Routes , but any node can not find route ,run route -n find only one default route rule.

Other information:

image

shell $ route -n |grep zt
192.168.192.0   0.0.0.0         255.255.255.0   U     0      0        0 zt6olxlqux
shell $

feat: SSO SAML support

Feature Request

Describe the Feature Request
Implement support for SSO like the official controller can do using SAML

Describe Preferred Solution

If the api's in the app is documented somewhere, give me a hint and I can also start looking

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
Can help

bug: docker up fails due to "no-build" flag

Bug Report

ZeroUI version:

3.3, latest

Current behavior:

Following the instructions exactly as written, on ubuntu 20.04 results in:

sudo docker-compose up -d --no-build
Pulling zerotier    ... done
Pulling https-proxy ... done
ERROR: Service 'zero-ui' needs to be built, but --no-build was passed.

Eliminating the flag fails as well:

sudo  docker-compose up -d
Building zero-ui
ERROR: Cannot locate specified Dockerfile: ./docker/zero-ui/Dockerfile

Expected behavior:

Should work, start the docker container.

Steps to reproduce:

Fresh install of Ubuntu 20.04, follow the steps in the readme.

feat: hosting without Docker/Podman

Feature Request

Describe the Feature Request

The possibility to host zero-ui without a container-solution like Podman or Docker, like ztncui has. This would allow hosting of controllers even on very tiny NAT-vps like the https://natvps.net "NAT256" offerings. The update-process could then work with apt/rpm packages like ztncui does here: https://github.com/key-networks/ztncui/blob/master/build/build.sh or just a bash-script that pulls the changes from the latest git-release.

bug: deleted members cannot rejoin a network

Bug Report

ZeroUI version:

latest

Current behavior:

After adding, "auth"ing and deleting a network member from the controller, the network member is not able to rejoin the same network, the connection attempt to the network is not shown in the members section, the "auth" box cannot be checked because the member cannot be seen.

Expected behavior:

The rejoining member should be visible on the controller as not authorized and the authorization should be possible.

Steps to reproduce:

see above. Let a client attempt to join a network, authenticate the member, remove the network member from the controller, delete the network on the client. Try to join from the client again. The status will be "access_denied" and the member will not be visible in the members section of the network.

How to reset password?

I've been using zero-ui as a self-hosted service, without docker. I want to change the password of ZT_DEFAULT_PASSWORD. After changing the password I couldn't login anymore. I noticed that in data/db.json there is an entry of my username with a hashed password; I'm not sure if this hashed password might contain the old password?

Thanks!

feat: Multiple users in addition to the admin account?

Is is possible to have a multi-user signup page in addition to the admin account that included in the docker file?
Just like the zerotier central where you can signup for a user and create some networks, but you can create another with different networks, is that possible or planned to be added?

Thanks.

feat: Grouping members

Hi !

We use ZT to access hosts in a lot of different customers. Today, we "group" this hosts by description but is not easy to find.
A desirable feature is a way to create groups and put the members in this groups, collapsing or expanding and perhaps searching by group or name/description.

dev: hosting the web-ui without root

Currently, zero-ui hosts its web-interface with root privileges. There should be an option to host its processes without it.
When it comes to container-hosting, ztncui achieved this by giving the web-ui an own user inside the Dockerfile (https://github.com/key-networks/ztncui-aio/blob/79a389244cb1195ec4e01218800a7fb288ae82ff/Dockerfile#L51), then starting the process via https://github.com/tianon/gosu (https://github.com/key-networks/ztncui-aio/blob/79a389244cb1195ec4e01218800a7fb288ae82ff/start_ztncui.sh#L66).

Alternatively, vaultwardens docker-image makes this possible via dockers "-u" command: https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide#run-as-a-non-root-user

feat: include version in db.json file

Feature Request

Describe the Feature Request

Adding version management in the db.json file. That would make database migrations possible.

Describe Alternatives

Migrate to a full-featured database with schema migration. That would increase project complexity, deployment process, and database management for users.

feat: zeronsd support

Feature Request

Describe the Feature Request

Add to the integrated Docker image (actually a compose set of images) also a zeronsd image to handle name serving on networks.

This would allow creation of self-contained server with everything needed to run a private network solution.

Describe Preferred Solution

In general I would like better a really integrated solution (a single image to run, not multiple images) and in this case more so because having separate images would mean run multiple instances of zerosnd container as it serves a single network.

Having a single container breaks a little Docker concept, makes it easier to deploy (e.g.: on "smart" NAS) and also makes possible to run multiple instances of a single process (i.e.: zeronsd) without associated overhead of running multiple containers.

The main user interface should (possibly under a checkbox control) launch a zeronsd instance each time a network is created.

Describe Alternatives

It is also possible to keep current structure and have a single container for zerosnd launching multiple instances of daemon under zero-ui conrol, but it seems harder to implement properly.

If the feature request is approved, would you be willing to submit a PR?
Yes, but my time is currently very limited and I will surely need assistance with the UI part as I'm not proficient in javascript.

bug: yarn installDeps failed

Bug Report

ZeroUI version:

latest

Current behavior:

yarn installDeps
Usage Error: Couldn't find the node_modules state file - running an install might help (findPackageLocation)

$ yarn run [--inspect] [--inspect-brk] <scriptName> ...   

Expected behavior:

build success.

Steps to reproduce:

Related code:

insert short code snippets here

Other information:

bug: original managed IP cannot be deleted with 2 or more managed IPs present

Bug Report

ZeroUI version:

latest

Current behavior:

In the "members" area of a network, the first given "managed IP" cannot be deleted, even if one or more further IPs are in the managed IPs list.

e.g:
172.30.36.203 (first managed IP)
172.30.36.204 (additional IP)
172.30.36.205 (additional IP)

bug: 172.30.36.203 cannot be deleted

Expected behavior:

deletion of first IP possible after at least a second IP is added:

172.30.36.203 (first managed IP)
172.30.36.204 (additional IP)

--> 172.30.36.203 should be allowed to delete, after deletion 172.30.36.204 should not be able to delete.

Steps to reproduce:

add further IPs to a member, try to delete the first IP.

feat: Client connecting IP and Port

Would be better if a member's real connecting IP and port is displayed in addition to OFFLINE/ONLINE status (like shown in ztncui).

Extremely helpful in diagnosing connectivity and latency issues.

SmartSelect_20211213-154907_Chrome

bug: No such file or directory: 'install'

Bug Report

ZeroUI version:

latest

Current behavior:

Attempting to install development environment fails


root@zeroteir:~/zero-ui# yarn install
00h00m00s 0/0: : ERROR: [Errno 2] No such file or directory: 'install'

root@zeroteir:~/zero-ui# ls
CHANGELOG.md  README.md  docker              docs      package.json
LICENSE       backend    docker-compose.yml  frontend  yarn.lock

Steps to reproduce:


git clone https://github.com/dec0dOS/zero-ui.git
cd zero-ui
yarn install

Other information:

I didn't see any information for installation without docker, which I do not intend to use. I have installed zerotier-one on my linux host and proceeded to install zero-ui development environment. Is the development environment intended to install on-top of the docker container? Do instructions for installation on bare-metal environments exist?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.