# ztncui-aio-zh **Repository Path**: MINGERTAI/ztncui-aio-zh ## Basic Information - **Project Name**: ztncui-aio-zh - **Description**: https://github.com/kmahyyg/ztncui-aio 拉取 官方也从这拉取修改 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-01-21 - **Last Updated**: 2024-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ztncui-aio 简体中文版 ![](https://github.com/kmahyyg/ztncui-aio/actions/workflows/docker4commit.yml/badge.svg) Current Version: 20240127-1.12.2-0.8.14 ## 来自 ztncui 作者 对他们的工作表示衷心的感谢! ### Docker ZeroTier ztncui网络控制器简体中文用户界面 这是为了构建一个包含ZeroTier One和ztncui 的Docker 映像,以在容器中设置具有 Web 用户界面的独立 ZeroTier 网络控制器。 跟着我们Twitter 上的 alt @key_networks 根据 GNU GPLv3 许可 ## 打造你自己 我们默认支持aarch64(arm64/v8)、amd64。 Armv7(意味着armhf)可能可以工作,但未经测试。 其他的不支持。 ```bash $ git clone https://gitee.com/MINGERTAI/ztncui-aio-zh $ cd ztncui-aio-zh $ docker build . --build-arg OVERLAY_S6_ARCH= -t ghcr.io/kmahyyg/ztncui-aio:latest ``` > 为什么不直接检测CPU arch呢?某些内核可能使用非标准的体系结构表达. 更改 `NODEJS_MAJOR`Dockerfile 中的变量以使用不同的 Nodejs 版本。 切勿将 `node_lts.x`其版本用作 Nodejs 的安装脚本,其版本可能会因时移而更改,恕不另行通知. ## 用法 ### Golang auto-mkworld(已嵌入 docker 镜像中) 此功能允许您在不使用 C 代码和编译器的情况下生成行星文件。 另外,由于 Zerotier-One UI 的 IPC 限制和多种问题,我们不支持自定义端口,您只能使用端口 9993/udp 。 创建容器时,根据需要设置AUTOGEN_PLANET环境变量: | 强制的 | 变量 | 解释 | 默认值 | |:--------:|:--------:|:--------:|:--------:| | 不 | AUTOGEN_PLANET | 如果设置为 1,将使用此节点标识生成planet文件并放入httpfs文件夹以在外部提供服务。如果设置为 2,将使用/etc/zt-mkworld/mkworld.config.json文件. 你必须手动创建/etc/zt-mkworld/mkworld.config.json文件,如果设置为 0,则不执行任何操作。 | 0 | 您还可以自己定义,并检查标准输出以获取自定义星球的 C 标头。之后,您将在http文件服务器根目录下找到自定义星球文件以及ca证书。 参考mkworld.config.json配置文件双服务器: ```json { "rootNodes": [ { "comments": "${MYADDR} 私有 Planet", "identity": "$(cat /var/lib/zerotier-one/identity.public)", "endpoints": [ "${MYADDR}/9993", "185.224.129.59/9993" ] }, { "comments": "185.224.129.59 私有 Planet", "identity": "46ea9f8880:0:06a11875324cec9bc41cc5bf932c5b105806feb475c71104bc235c345a3b8732175001a6e7346301f37a1518719b35f8f863382e5d8ab5c89794e708362dfca7", "endpoints": [ "185.224.129.59/9993", "${MYADDR}/9993" ] } ], "signing": ["previous.c25519", "current.c25519"], "output": "planet.custom", "plID": 0, "plBirth": 0, "plRecommend": true } ``` 配置JSON可以这样理解: ```json { "rootNodes": [ // 节点数组,可以是可以任意个 { "comments": "amsterdam official", // 节点对象,在 AUTOGEN_PLANET=1 时将自动生成,不需要使用mkworld.conf.json "identity": "992fcf1db7:0:206ed59350b31916f749a1f85dffb3a8787dcbf83b8c6e9448d4e3ea0e3369301be716c3609344a9d1533850fb4460c50af43322bcfc8e13d3301a1f1003ceb6", // 节点 identity.public ^^ , 如果节点未初始化,则会在容器启动时初始化 "endpoints": [ "195.181.173.159/443", // 节点服务位置,格式为:IP/端口,如果 AUTOGEN_PLANET=1 将自动生成 "2a02:6ea0:c024::/443" // 必须小于或等于两个端点,一个用于 IPv4,一个用于 IPv6。如果有多个 IP,则设置具有不同标识的多个节点。 ] } ], "signing": [ "previous.c25519", // 行星签名密钥,如果不存在,将生成 "current.c25519" // 相同,用于迭代和更新 ], "output": "planet.custom", // 输出文件名 "plID": 0, // 行星数字 ID,如果不知道,请勿修改,并将 plRecommend 设置为 true "plBirth": 0, // 行星创建时间戳,如果不知道,请勿修改,并将 plRecommend 设为 true "plRecommend": true // 将 plRecommend 设为 true,自动推荐 plID、plBirth 值。更多详情,请阅读 zerotier-one 官方软件仓库中的 mkworld 源代码 } ``` ### 装载Docker镜像后 创建 docker-compose.yml 文件并拷贝下面粘贴它: > 警告: AUTOGEN_PLANET=0 不执行任何操作 AUTOGEN_PLANET=1 自动生成planer 如果多台服务器应设置为2,这样就可以手动添加identity ID ```yml version: '3.1' services: ztncui: image: qtm/ztncui-aio container_name: ztncui hostname: ztncui restart: always cap_add: - ALL devices: - /dev/net/tun network_mode: bridge ports: - 3000:3000 - 3180:3180 - 4000:4000 - 9993:9993 - 9993:9993/udp volumes: - /home/zerotier/opt/key-networks/ztncui/etc:/opt/key-networks/ztncui/etc - /home/zerotier/var/lib/zerotier-one:/var/lib/zerotier-one - /home/zerotier/etc/zt-mkworld:/etc/zt-mkworld environment: - TZ=Asia/Shanghai - AUTOGEN_PLANET=0 - NODE_ENV=production - HTTPS_HOST=0.0.0.0 - HTTPS_PORT=4000 - HTTP_PORT=3000 - HTTP_ALL_INTERFACES=yes - MYDOMAIN=ztncui.docker.test # ztncui.docker.test 替换你的域名 - ZTNCUI_PASSWD=admin - MYADDR=你的公网ip privileged: true ``` ### 启动 ztncui-aio,请在您的目录中执行以下命令docker-compose.yml: ```compose.yml docker compose up -d ``` 此操作 初始化容器并激活服务 ## 支持使用本地持久存储的配置 对于 ZTNCUI: https://github.com/key-networks/ztncui 创建容器时,根据需要设置以下环境变量: | 强制的 | 变量名 | 解释 | 默认值 | |:--------:|:--------:|:--------:|:--------:| | YES | NODE_ENV | https://pugjs.org/api/express.html | production | | no | HTTPS_HOST | 仅监听 HTTPS_HOST:HTTPS_PORT | 无默认值 | | no | HTTPS_PORT | HTTPS_PORT | 3443 | | no | HTTP_PORT | HTTP_PORT | 3000 | | no | HTTP_ALL_INTERFACES | Listen on all interfaces, useful for reverse proxy, HTTP only | 无默认值 | 注意:如果不设置 `HTTP_ALL_INTERFACES`则仅在容器内监听 3000 端口。 该应用程序没有针对暴力攻击的内置保护机制,您不应直接将其公开在互联网上。 并且您不应该使用弱密码。 创建容器时,根据需要设置以下环境变量: | 强制的 | 变量名 | 解释 | 默认值 | |:--------:|:--------:|:--------:|:--------:| | no | MYDOMAIN | 动态生成 TLS 证书(如果不存在) | ztncui.docker.test | | no | ZTNCUI_PASSWD | 即时生成管理员密码(如果不存在) | password | | YES | MYADDR | 您的IP地址,首选公共IP地址,如果未设置将自动检测 | 无默认值 | 此外,该图像在端口 3180 上暴露了一个 http 服务器,您可以保存文件来/mydata/ztncui/httpfs/为其提供服务.(你可以用它来构建你自己的根服务器并分发planet文件,尽管这不会伤害你,我仍然建议为前面的两个http服务器设置保护.) > 警告:docker exec -it <容器 NAME> bash, 然后cat /var/log/docker-ztncui.log获取随机密码。这是看门人。 > 要重置ztncui的密码:删除下面的文件/opt/key-networks/ztncui/passwd并将环境变量设置为您想要的密码,然后重新创建容器。应用程序初始化后,只能从网页更改密码。 ## 仅限中国用户 该脚本使用https:///ip.sb进行公共IP检测,该IP在中国大陆的某些地区被屏蔽。在这种情况下,程序将尝试使用工具检测公共IP ifconfig,并且可能会导致不需要的结果,为防止这种情况,请确保MYADDR在docker容器启动时设置环境变量。