Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42248c1359 | ||
|
|
0557b386a9 | ||
|
|
794f846125 |
@@ -10,7 +10,7 @@ Follow us on [](
|
|||||||
Instructions for installing on Linux from RPM or DEB packges are available at [key-networks.com/ztncui](https://key-networks.com/ztncui).
|
Instructions for installing on Linux from RPM or DEB packges are available at [key-networks.com/ztncui](https://key-networks.com/ztncui).
|
||||||
|
|
||||||
## Docker Container Image
|
## Docker Container Image
|
||||||
See [github.com/key-networks/ztncui-containerized](https://github.com/key-networks/ztncui-containerized)
|
See [https://github.com/key-networks/ztncui-aio](https://github.com/key-networks/ztncui-aio)
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
@@ -45,21 +45,9 @@ npm install
|
|||||||
|
|
||||||
##### 3. authtoken.secret
|
##### 3. authtoken.secret
|
||||||
|
|
||||||
The app needs to know the zerotier-one authtoken.secret. There are two options:
|
The app needs to know the zerotier-one authtoken.secret.
|
||||||
|
|
||||||
###### A: Allow access to /var/lib/zerotier-one/authtoken.secret
|
###### Make a .env file
|
||||||
The user running the ztncui app needs read access to authtoken.secret. This can be achieved with:
|
|
||||||
```shell
|
|
||||||
sudo usermod -aG zerotier-one username
|
|
||||||
sudo chmod g+r /var/lib/zerotier-one/authtoken.secret
|
|
||||||
```
|
|
||||||
Where:
|
|
||||||
* username is the user running the ztncui app
|
|
||||||
|
|
||||||
Note that you need to log out and in again to apply the new group membership.
|
|
||||||
|
|
||||||
###### OR
|
|
||||||
###### B: Make a .env file
|
|
||||||
In the root of the ztncui directory, create a `.env` file with the content:
|
In the root of the ztncui directory, create a `.env` file with the content:
|
||||||
```
|
```
|
||||||
ZT_TOKEN=########################
|
ZT_TOKEN=########################
|
||||||
@@ -67,17 +55,19 @@ ZT_TOKEN=########################
|
|||||||
Where:
|
Where:
|
||||||
* ######################## is the token string.
|
* ######################## is the token string.
|
||||||
|
|
||||||
You can also specify in the `.env` file a different address for the zerotier-one API (which defaults to localhost:9993):
|
After all edits to the `.env file` (see other options below), make the `.env` readable by the user running ztncui only:
|
||||||
|
```shell
|
||||||
|
chmod 400 .env
|
||||||
|
chown ztncui.ztncui .env
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 4. Zerotier-one API port
|
||||||
|
|
||||||
|
You can specify in the `.env` file a different address for the zerotier-one API (which defaults to localhost:9993):
|
||||||
```
|
```
|
||||||
ZT_ADDR=localhost:9995
|
ZT_ADDR=localhost:9995
|
||||||
```
|
```
|
||||||
|
|
||||||
Make `.env` readable by the user running ztncui only:
|
|
||||||
```shell
|
|
||||||
chmod 600 .env
|
|
||||||
```
|
|
||||||
|
|
||||||
The `.env` file should make it easier to run ztncui on a non-Linux platform.
|
|
||||||
|
|
||||||
##### 4. Run in production mode
|
##### 4. Run in production mode
|
||||||
To run the server in production mode, add the following to the `.env` file (see 3B above):
|
To run the server in production mode, add the following to the `.env` file (see 3B above):
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
getent passwd ztncui || useradd --system --home-dir /opt/key-networks/ztncui --shell /bin/false ztncui
|
||||||
|
if [ $(getent group zerotier-one) ]; then
|
||||||
|
echo "Adding user ztncui to group zerotier-one..."
|
||||||
|
usermod -a -G zerotier-one ztncui
|
||||||
|
chmod g+r /var/lib/zerotier-one/authtoken.secret
|
||||||
|
else
|
||||||
|
echo "Could not add user ztncui to group zerotier-one... is zerotier-one installed?"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
],
|
],
|
||||||
"cflags+": ["-Wno-cast-function-type"],
|
"cflags+": ["-Wno-cast-function-type"],
|
||||||
"include_dirs+": ["<!(node -e \"require('nan')\")"],
|
"include_dirs+": ["<!(node -e \"require('nan')\")"],
|
||||||
+ "libraries": ["/usr/lib/gcc/x86_64-redhat-linux/8/libstdc++.a"],
|
+ "libraries": ["/usr/lib/gcc/x86_64-redhat-linux/8/libstdc++fs.a"],
|
||||||
"dependencies": ["libargon2"],
|
"dependencies": ["libargon2"],
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"Debug": {
|
"Debug": {
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@ BINDINGGYP='node_modules/argon2/binding.gyp'
|
|||||||
|
|
||||||
NODE_VER='v16'
|
NODE_VER='v16'
|
||||||
|
|
||||||
if [ ! -f /usr/lib/gcc/x86_64-redhat-linux/8/libstdc++.a ]; then
|
if [ ! -f /usr/lib/gcc/x86_64-redhat-linux/8/libstdc++fs.a ]; then
|
||||||
echo "You must install libstdc++-static"
|
echo "You must install libstdc++-static"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ztncui",
|
"name": "ztncui",
|
||||||
"version": "0.8.6",
|
"version": "0.8.13",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node ./bin/www",
|
"start": "node ./bin/www",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"got": "^7.1.0",
|
"got": "^7.1.0",
|
||||||
"helmet": "^3.23.0",
|
"helmet": "^3.23.0",
|
||||||
"ip-address": "^5.8.9",
|
"ip-address": "^5.8.9",
|
||||||
"jquery": "~3.4.1",
|
"jquery": "^3.6.1",
|
||||||
"morgan": "~1.9.1",
|
"morgan": "~1.9.1",
|
||||||
"node-persist": "^2.1.0",
|
"node-persist": "^2.1.0",
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
//-
|
//-
|
||||||
ztncui - ZeroTier network controller UI
|
ztncui - ZeroTier network controller UI
|
||||||
Copyright (C) 2017-2021 Key Networks (https://key-networks.com)
|
Copyright (C) 2017-2023 Key Networks (https://key-networks.com)
|
||||||
Licensed under GPLv3 - see LICENSE for details.
|
Licensed under GPLv3 - see LICENSE for details.
|
||||||
|
|
||||||
extends network_layout
|
extends network_layout
|
||||||
@@ -135,13 +135,15 @@ block net_content
|
|||||||
td
|
td
|
||||||
if (peer)
|
if (peer)
|
||||||
each path in peer.paths
|
each path in peer.paths
|
||||||
- const [ip, port] = path.address.split('/');
|
if (path.preferred == true)
|
||||||
= ip
|
- const [ip, port] = path.address.split('/');
|
||||||
span(style='color: gray;') /#{port}
|
= ip
|
||||||
= ' '
|
span(style='color: gray;') /#{port}
|
||||||
if (peer.latency != -1)
|
= ' '
|
||||||
br
|
if (peer.latency != -1)
|
||||||
| (#{peer.latency} ms)
|
br
|
||||||
|
| (#{peer.latency} ms)
|
||||||
|
- break
|
||||||
else
|
else
|
||||||
.alert.alert-info
|
.alert.alert-info
|
||||||
strong There are no members on this network - invite users to join #{network.nwid}
|
strong There are no members on this network - invite users to join #{network.nwid}
|
||||||
|
|||||||
Reference in New Issue
Block a user