1
0
Fork 0

docs(README): 优化多个项目的 README 文档格式和内容

- 调整文档结构,优化标题层级
- 添加或更新项目示例图片
- 修正链接格式问题
- 统一列表符号使用短横线
This commit is contained in:
zhongkunming 2025-05-24 12:36:15 +08:00
parent 70648b8276
commit 5db361f60b
11 changed files with 912 additions and 193 deletions

View File

@ -9,7 +9,6 @@
![Docker Pulls V2](https://img.shields.io/docker/pulls/jxxghp/moviepilot-v2?style=for-the-badge)
![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20Synology-blue?style=for-the-badge)
基于 [NAStool](https://github.com/NAStool/nas-tools) 部分代码重新设计,聚焦自动化核心需求,减少问题同时更易于扩展和维护。
# 仅用于学习交流使用,请勿在任何国内平台宣传该项目!
@ -18,7 +17,8 @@
## 主要特性
- 前后端分离基于FastApi + Vue3前端项目地址[MoviePilot-Frontend](https://github.com/jxxghp/MoviePilot-Frontend)APIhttp://localhost:3001/docs
- 前后端分离基于FastApi + Vue3前端项目地址[MoviePilot-Frontend](https://github.com/jxxghp/MoviePilot-Frontend)
APIhttp://localhost:3001/docs
- 聚焦核心需求,简化功能和设置,部分设置项可直接使用默认值。
- 重新设计了用户界面,更加美观易用。
@ -30,28 +30,40 @@
需要 `Python 3.12`、`Node JS v20.12.1`
- 克隆主项目 [MoviePilot](https://github.com/jxxghp/MoviePilot)
- 克隆主项目 [MoviePilot](https://github.com/jxxghp/MoviePilot)
```shell
git clone https://github.com/jxxghp/MoviePilot
```
- 克隆资源项目 [MoviePilot-Resources](https://github.com/jxxghp/MoviePilot-Resources) ,将 `resources` 目录下对应平台及版本的库 `.so`/`.pyd`/`.bin` 文件复制到 `app/helper` 目录
- 克隆资源项目 [MoviePilot-Resources](https://github.com/jxxghp/MoviePilot-Resources) ,将 `resources` 目录下对应平台及版本的库
`.so`/`.pyd`/`.bin` 文件复制到 `app/helper` 目录
```shell
git clone https://github.com/jxxghp/MoviePilot-Resources
```
- 安装后端依赖,设置`app`为源代码根目录,运行 `main.py` 启动后端服务,默认监听端口:`3001`API文档地址`http://localhost:3001/docs`
- 安装后端依赖,设置`app`为源代码根目录,运行 `main.py` 启动后端服务,默认监听端口:`3001`API文档地址
`http://localhost:3001/docs`
```shell
pip install -r requirements.txt
python3 main.py
```
- 克隆前端项目 [MoviePilot-Frontend](https://github.com/jxxghp/MoviePilot-Frontend)
```shell
git clone https://github.com/jxxghp/MoviePilot-Frontend
```
- 安装前端依赖,运行前端项目,访问:`http://localhost:5173`
```shell
yarn
yarn dev
```
- 参考 [插件开发指引](https://wiki.movie-pilot.org/zh/plugindev) 在 `app/plugins` 目录下开发插件代码
## 贡献者

View File

@ -40,24 +40,24 @@
* [🌟 星标历史](#-星标历史)
* [🗺️ 路线图](#-路线图)
* [🚀 下载安装](#-下载安装)
* [应用市场](#应用市场)
* [安装包](#安装包)
* [Docker 部署](#docker-部署)
* [Unraid 部署](#unraid-部署)
* [宝塔面板 部署](#宝塔面板部署)
* [内部预览版](#内部预览版)
* [应用市场](#应用市场)
* [安装包](#安装包)
* [Docker 部署](#docker-部署)
* [Unraid 部署](#unraid-部署)
* [宝塔面板 部署](#宝塔面板部署)
* [内部预览版](#内部预览版)
* [🏘️ 社区](#-社区)
* [🛠️ 开发指南](#-开发指南)
* [❓ 常见问题和解答](#-常见问题和解答)
* [思源是如何存储数据的?](#思源是如何存储数据的)
* [支持通过第三方同步盘进行数据同步吗?](#支持通过第三方同步盘进行数据同步吗)
* [思源是开源的吗?](#思源是开源的吗)
* [如何升级到新版本?](#如何升级到新版本)
* [有的块(比如在列表项中的段落块)找不到块标怎么办?](#有的块比如在列表项中的段落块找不到块标怎么办)
* [数据仓库密钥遗失怎么办?](#数据仓库密钥遗失怎么办)
* [使用需要付费吗?](#使用需要付费吗)
* [思源是如何存储数据的?](#思源是如何存储数据的)
* [支持通过第三方同步盘进行数据同步吗?](#支持通过第三方同步盘进行数据同步吗)
* [思源是开源的吗?](#思源是开源的吗)
* [如何升级到新版本?](#如何升级到新版本)
* [有的块(比如在列表项中的段落块)找不到块标怎么办?](#有的块比如在列表项中的段落块找不到块标怎么办)
* [数据仓库密钥遗失怎么办?](#数据仓库密钥遗失怎么办)
* [使用需要付费吗?](#使用需要付费吗)
* [🙏 鸣谢](#-鸣谢)
* [贡献者列表](#贡献者列表)
* [贡献者列表](#贡献者列表)
---
@ -78,26 +78,26 @@
大部分功能是免费的,即使是在商业环境下使用。
* 内容块
* 块级引用和双向链接
* 自定义属性
* SQL 查询嵌入
* 协议 `siyuan://`
* 块级引用和双向链接
* 自定义属性
* SQL 查询嵌入
* 协议 `siyuan://`
* 编辑器
* Block 风格
* Markdown 所见即所得
* 列表大纲
* 块缩放聚焦
* 百万字大文档编辑
* 数学公式、图表、流程图、甘特图、时序图、五线谱等
* 网页剪藏
* PDF 标注双链
* Block 风格
* Markdown 所见即所得
* 列表大纲
* 块缩放聚焦
* 百万字大文档编辑
* 数学公式、图表、流程图、甘特图、时序图、五线谱等
* 网页剪藏
* PDF 标注双链
* 导出
* 块引用和嵌入块
* 带 assets 文件夹的标准 Markdown
* PDF、Word 和 HTML
* 复制到微信公众号、知乎和语雀
* 块引用和嵌入块
* 带 assets 文件夹的标准 Markdown
* PDF、Word 和 HTML
* 复制到微信公众号、知乎和语雀
* 数据库
* 表格视图
* 表格视图
* 闪卡间隔重复
* 接入 OpenAI 接口支持人工智能写作和问答聊天
* Tesseract OCR
@ -114,17 +114,17 @@
![思源笔记架构设计](https://b3logfile.com/file/2023/05/SiYuan_Arch-Sgu8vXT.png "思源笔记架构设计")
| Project | Description | Forks | Stars |
|----------------------------------------------------------|--------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [lute](https://github.com/88250/lute) | 编辑器引擎 | ![GitHub forks](https://img.shields.io/github/forks/88250/lute) | ![GitHub Repo stars](https://img.shields.io/github/stars/88250/lute) |
| Project | Description | Forks | Stars |
|----------------------------------------------------------|----------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
| [lute](https://github.com/88250/lute) | 编辑器引擎 | ![GitHub forks](https://img.shields.io/github/forks/88250/lute) | ![GitHub Repo stars](https://img.shields.io/github/stars/88250/lute) |
| [chrome](https://github.com/siyuan-note/siyuan-chrome) | Chrome/Edge 扩展 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-chrome) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-chrome) |
| [bazaar](https://github.com/siyuan-note/bazaar) | 社区集市 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/bazaar) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/bazaar) |
| [dejavu](https://github.com/siyuan-note/dejavu) | 数据仓库 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/dejavu) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/dejavu) |
| [petal](https://github.com/siyuan-note/petal) | 插件 API | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Android App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOS App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [harmony](https://github.com/siyuan-note/siyuan-harmony) | 鸿蒙 App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-harmony) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-harmony) |
| [riff](https://github.com/siyuan-note/riff) | 间隔重复 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
| [bazaar](https://github.com/siyuan-note/bazaar) | 社区集市 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/bazaar) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/bazaar) |
| [dejavu](https://github.com/siyuan-note/dejavu) | 数据仓库 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/dejavu) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/dejavu) |
| [petal](https://github.com/siyuan-note/petal) | 插件 API | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/petal) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/petal) |
| [android](https://github.com/siyuan-note/siyuan-android) | Android App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-android) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-android) |
| [ios](https://github.com/siyuan-note/siyuan-ios) | iOS App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-ios) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-ios) |
| [harmony](https://github.com/siyuan-note/siyuan-harmony) | 鸿蒙 App | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/siyuan-harmony) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/siyuan-harmony) |
| [riff](https://github.com/siyuan-note/riff) | 间隔重复 | ![GitHub forks](https://img.shields.io/github/forks/siyuan-note/riff) | ![GitHub Repo stars](https://img.shields.io/github/stars/siyuan-note/riff) |
## 🌟 星标历史
@ -188,7 +188,8 @@
#### 启动入口
入口点在构建 Docker 镜像时设置:`ENTRYPOINT ["/opt/siyuan/entrypoint.sh"]`。该脚本允许更改将在容器内运行的用户的 `PUID``PGID`。这对于解决从主机挂载目录时的权限问题尤为重要。`PUID` 和 `PGID` 可以作为环境变量传递,这样在访问主机挂载的目录时就能更容易地确保正确的权限。
入口点在构建 Docker 镜像时设置:`ENTRYPOINT ["/opt/siyuan/entrypoint.sh"]`。该脚本允许更改将在容器内运行的用户的 `PUID`
`PGID`。这对于解决从主机挂载目录时的权限问题尤为重要。`PUID` 和 `PGID` 可以作为环境变量传递,这样在访问主机挂载的目录时就能更容易地确保正确的权限。
使用 `docker run b3log/siyuan` 运行容器时,请带入以下参数:
@ -211,11 +212,12 @@ docker run -d \
* `PGID`: 自定义组 ID可选如果未提供默认为 `1000`
* `workspace_dir_host`:宿主机上的工作空间文件夹路径
* `workspace_dir_container`:容器内工作空间文件夹路径,和后面 `--workspace` 指定成一样的
* 另外,也可以通过 `SIYUAN_WORKSPACE_PATH` 环境变量设置路径。如果两者都设置了,命令行的值将优先。
* 另外,也可以通过 `SIYUAN_WORKSPACE_PATH` 环境变量设置路径。如果两者都设置了,命令行的值将优先。
* `accessAuthCode`:访问授权码,请**务必修改**,否则任何人都可以读写你的数据
* 另外,也可以通过 `SIYUAN_ACCESS_AUTH_CODE` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。
* 另外,也可以通过 `SIYUAN_ACCESS_AUTH_CODE` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。
为了简化,建议将 workspace 文件夹路径在宿主机和容器上配置为一致的,比如将 `workspace_dir_host``workspace_dir_container` 都配置为 `/siyuan/workspace`,对应的启动命令示例:
为了简化,建议将 workspace 文件夹路径在宿主机和容器上配置为一致的,比如将 `workspace_dir_host`
`workspace_dir_container` 都配置为 `/siyuan/workspace`,对应的启动命令示例:
```bash
docker run -d \
@ -229,14 +231,15 @@ docker run -d \
#### Docker Compose
对于使用 Docker Compose 运行思源的用户,可以通过环境变量 `PUID``PGID` 来自定义用户和组的 ID。下面是一个 Docker Compose 配置示例:
对于使用 Docker Compose 运行思源的用户,可以通过环境变量 `PUID``PGID` 来自定义用户和组的 ID。下面是一个 Docker Compose
配置示例:
```yaml
version: "3.9"
services:
main:
image: b3log/siyuan
command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=${AuthCode}']
command: [ '--workspace=/siyuan/workspace/', '--accessAuthCode=${AuthCode}' ]
ports:
- 6806:6806
volumes:
@ -258,13 +261,15 @@ services:
#### 用户权限
在图片中“entrypoint.sh ”脚本确保以指定的 “PUID ”和 “PGID ”创建 “siyuan ”用户和组。因此,当主机创建工作区文件夹时,请注意设置文件夹的用户和组所有权,使其与计划使用的 `PUID``PGID` 匹配。例如
在图片中“entrypoint.sh ”脚本确保以指定的 “PUID ”和 “PGID ”创建 “siyuan ”用户和组。因此,当主机创建工作区文件夹时,请注意设置文件夹的用户和组所有权,使其与计划使用的
`PUID``PGID` 匹配。例如
```bash
chown -R 1001:1002 /siyuan/workspace
```
如果使用自定义的 `PUID``PGID` 值,入口点脚本将确保在容器内创建正确的用户和组,并相应调整挂载卷的所有权。无需在 `docker run``docker-compose` 中手动传递 `-u`,因为环境变量会处理自定义。
如果使用自定义的 `PUID``PGID` 值,入口点脚本将确保在容器内创建正确的用户和组,并相应调整挂载卷的所有权。无需在
`docker run``docker-compose` 中手动传递 `-u`,因为环境变量会处理自定义。
#### 隐藏端口
@ -322,13 +327,13 @@ Publish parameters: --accessAuthCode=******(访问授权码)
2. 首次会提示安装 `Docker``Docker Compose` 服务,点击立即安装,若已安装请忽略
3. 安装完成后在 `Docker-应用商店-实用工具` 中找到 `思源笔记`,点击`安装`,也可以在搜索框直接搜索
4. 设置域名等基本信息,点击 `确定`
* 名称:应用名称,默认 `siyuan_随机字符`
* 版本选择:默认 `latest`
* 域名:如你需要通过域名访问,请在此处填写你的域名
* 允许外部访问:如你需通过 `IP+Port` 直接访问,请勾选,如你已经设置了域名,请不要勾选此处
* 端口:默认 `6806`,可自行修改
* 访问授权码:默认随机生成
* 内存限制0为不限制根据实际需要设置
* 名称:应用名称,默认 `siyuan_随机字符`
* 版本选择:默认 `latest`
* 域名:如你需要通过域名访问,请在此处填写你的域名
* 允许外部访问:如你需通过 `IP+Port` 直接访问,请勾选,如你已经设置了域名,请不要勾选此处
* 端口:默认 `6806`,可自行修改
* 访问授权码:默认随机生成
* 内存限制0为不限制根据实际需要设置
5. 提交后面板会自动进行应用初始化,大概需要`1-3`分钟,初始化完成后即可访问
#### 访问思源笔记
@ -394,10 +399,13 @@ Publish parameters: --accessAuthCode=******(访问授权码)
### 如何升级到新版本?
* 如果是通过应用商店安装的,请通过应用商店更新
* 如果是桌面端通过安装包安装的,可打开 <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>自动下载更新安装包</kbd> 选项,这样思源会自动下载最新版安装包并提示安装
* 如果是桌面端通过安装包安装的,可打开 <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>自动下载更新安装包</kbd>
选项,这样思源会自动下载最新版安装包并提示安装
* 如果是通过手动安装包安装的,请再次下载安装包安装
可在 <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>当前版本</kbd><kbd>检查更新</kbd>,也可以通过关注[官方下载](https://b3log.org/siyuan/download.html)或者 [GitHub Releases](https://github.com/siyuan-note/siyuan/releases) 来获取新版本。
可在 <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>当前版本</kbd><kbd>检查更新</kbd>
,也可以通过关注[官方下载](https://b3log.org/siyuan/download.html)
或者 [GitHub Releases](https://github.com/siyuan-note/siyuan/releases) 来获取新版本。
**注意**:切勿将工作空间放置于安装目录下,因为更新版本会清空安装目录下的所有文件
@ -407,14 +415,15 @@ Publish parameters: --accessAuthCode=******(访问授权码)
### 数据仓库密钥遗失怎么办?
* 如果之前在多个设备上正确初始化过数据仓库密钥的话,那么该密钥在所有设备上都是相同的,可以在 <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>数据仓库密钥</kbd> - <kbd>复制密钥字符串</kbd> 找回
* 如果之前在多个设备上正确初始化过数据仓库密钥的话,那么该密钥在所有设备上都是相同的,可以在 <kbd>设置</kbd> - <kbd>
关于</kbd> - <kbd>数据仓库密钥</kbd> - <kbd>复制密钥字符串</kbd> 找回
* 如果之前没有正确配置(比如多个设备上密钥不一致)或者所有设备均不可用,已经无法获得密钥字符串,则可通过如下步骤重置密钥:
1. 手动备份好数据,可通过 <kbd>导出 Data</kbd> 或者直接在文件系统上复制 <kbd>工作空间/data/</kbd> 文件夹
2. <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>数据仓库密钥</kbd> - <kbd>重置数据仓库</kbd>
3. 重新初始化数据仓库密钥,在一台设备上初始化密钥以后,其他设备导入密钥
4. 云端使用新的同步目录,旧的同步目录已经无法使用,可以删除
5. 已有的云端快照已经无法使用,可以删除
1. 手动备份好数据,可通过 <kbd>导出 Data</kbd> 或者直接在文件系统上复制 <kbd>工作空间/data/</kbd> 文件夹
2. <kbd>设置</kbd> - <kbd>关于</kbd> - <kbd>数据仓库密钥</kbd> - <kbd>重置数据仓库</kbd>
3. 重新初始化数据仓库密钥,在一台设备上初始化密钥以后,其他设备导入密钥
4. 云端使用新的同步目录,旧的同步目录已经无法使用,可以删除
5. 已有的云端快照已经无法使用,可以删除
### 使用需要付费吗?

View File

@ -9,7 +9,7 @@
[![Github](https://img.shields.io/badge/Github-123456?logo=github&labelColor=242424)](https://github.com/hslr-s/sun-panel)
[![Gitee](https://img.shields.io/badge/Gitee-123456?logo=gitee&labelColor=c71d23)](https://gitee.com/hslr/sun-panel)
[![docker](https://img.shields.io/badge/docker-123456?logo=docker&logoColor=fff&labelColor=1c7aed)](https://hub.docker.com/r/hslr/sun-panel)
[![docker](https://img.shields.io/badge/docker-123456?logo=docker&logoColor=fff&labelColor=1c7aed)](https://hub.docker.com/r/hslr/sun-panel)
[![Bilibili](https://img.shields.io/badge/Bilibili-123456?logo=bilibili&logoColor=fff&labelColor=fb7299)](https://space.bilibili.com/27407696/channel/collectiondetail?sid=2023810)
[![YouTube](https://img.shields.io/badge/YouTube-123456?logo=youtube&labelColor=ff0000)](https://www.youtube.com/channel/UCKwbFmKU25R602z6P2fgPYg)
<br>
@ -19,7 +19,7 @@
[[ 中文文档 ]](https://sun-panel-doc.enianteam.com/zh_cn) |
[[ Document ]](https://sun-panel-doc.enianteam.com) |
[[ Demo ]](http://sunpaneldemo.enianteam.com)
[[ Demo ]](http://sunpaneldemo.enianteam.com)
A server, NAS navigation panel, Homepage, Browser homepage.
<br>
@ -31,9 +31,16 @@ A server, NAS navigation panel, Homepage, Browser homepage.
![](./doc/images/main-dark.png)
> [!IMPORTANT]
> In order to maintain the livelihood, the author added some [`PRO`] (https://pro.sun-panel.top) function, so the project temporarily entered a closed source state.; At present, the latest version of the open source is `v1.3.0`, [Please see the latest version of closed source](https://github.com/hslr-s/sun-panel/releases).; When the modular technology is developed, the separation of the PRO and the programs will be opened again, and the closed source will have no effect on ordinary users.; Let's look forward to open source again, and at the same time, we are welcome to supervise and review the security of the program.
>
> 作者为了维持生计,增加了一些 [`PRO`](https://pro.sun-panel.top) 功能,所以项目暂时进入闭源状态。目前开源最新版本为`v1.3.0`[闭源最新版本请查看](https://github.com/hslr-s/sun-panel/releases)。待开发出模块化技术然后对PRO和主程序进行分离会再次开源闭源对普通用户没有任何影响。我们一起期待再次开源吧同时也欢迎各位大佬对程序的安全性进行监督和审查。
> In order to maintain the livelihood, the author added some [`PRO`] (https://pro.sun-panel.top) function, so the
> project temporarily entered a closed source state.; At present, the latest version of the open source is
`v1.3.0`, [Please see the latest version of closed source](https://github.com/hslr-s/sun-panel/releases).; When the
> modular technology is developed, the separation of the PRO and the programs will be opened again, and the closed source
> will have no effect on ordinary users.; Let's look forward to open source again, and at the same time, we are welcome to
> supervise and review the security of the program.
>
> 作者为了维持生计,增加了一些 [`PRO`](https://pro.sun-panel.top) 功能,所以项目暂时进入闭源状态。目前开源最新版本为
`v1.3.0`[闭源最新版本请查看](https://github.com/hslr-s/sun-panel/releases)
> 。待开发出模块化技术然后对PRO和主程序进行分离会再次开源闭源对普通用户没有任何影响。我们一起期待再次开源吧同时也欢迎各位大佬对程序的安全性进行监督和审查。
## 😎 Features
@ -63,24 +70,24 @@ A server, NAS navigation panel, Homepage, Browser homepage.
![](./doc/images/window-ssh.png)
![](./doc/images/window-xunlei.png)
## 🐳 Deployment tutorial
[Deployment Tutorial](https://sun-panel-doc.enianteam.com/usage/quick_deploy.html)
## 🍵 Donate
> Open-source development is not easy. If you feel that my project has helped you, you are welcome to [donate](./doc/donate.md) or buy me a cup of tea☕ (please leave your nickname or name in the note if possible). Your support is my motivation, thank you.
> Open-source development is not easy. If you feel that my project has helped you, you are welcome
> to [donate](./doc/donate.md) or buy me a cup of tea☕ (please leave your nickname or name in the note if possible). Your
> support is my motivation, thank you.
<a href="https://www.paypal.me/hslrs">
<img height="60" src="./doc/images/donate/paypal.png" target="_blank"></img>
</a>
| | |
| ------------ | ------------ |
| <img height="300" src="./doc/images/donate/weixin.png"/> | <img height="300" src="./doc/images/donate/alipay.png" /> |
| | |
|----------------------------------------------------------|-----------------------------------------------------------|
| <img height="300" src="./doc/images/donate/weixin.png"/> | <img height="300" src="./doc/images/donate/alipay.png" /> |
## 🏖️ Communication group & community
@ -98,13 +105,12 @@ QQ交流群进不去可以点上方连接联系作者
- [jackloves111](https://github.com/jackloves111)
- [Rock.L](https://github.com/gitlyp)
---
[![Star History Chart](https://api.star-history.com/svg?repos=hslr-s/sun-panel&type=Date)](https://star-history.com/#hslr-s/sun-panel&Date)
- 账户密码
```
username: admin@sun.cc
password: 12345678

View File

@ -66,7 +66,8 @@ To run Syncthing in Docker, see [the Docker README][16].
## Vote on features/bugs
We'd like to encourage you to [vote][12] on issues that matter to you.
This helps the team understand what are the biggest pain points for our users, and could potentially influence what is being worked on next.
This helps the team understand what are the biggest pain points for our users, and could potentially influence what is
being worked on next.
## Getting in Touch
@ -98,17 +99,31 @@ Please see the Syncthing [documentation site][6] [[source]][17].
All code is licensed under the [MPLv2 License][7].
[1]: https://docs.syncthing.net/specs/bep-v1.html
[2]: https://docs.syncthing.net/intro/getting-started.html
[3]: https://github.com/syncthing/syncthing/blob/main/etc
[5]: https://docs.syncthing.net/dev/building.html
[6]: https://docs.syncthing.net/
[7]: https://github.com/syncthing/syncthing/blob/main/LICENSE
[8]: https://forum.syncthing.net/
[10]: https://github.com/syncthing/syncthing/issues
[11]: https://docs.syncthing.net/users/contrib.html#gui-wrappers
[12]: https://www.bountysource.com/teams/syncthing/issues
[13]: https://github.com/syncthing/syncthing/blob/main/GOALS.md
[14]: https://github.com/syncthing/syncthing/raw/main/assets/logo-text-128.png
[15]: https://syncthing.net/
[16]: https://github.com/syncthing/syncthing/blob/main/README-Docker.md
[17]: https://github.com/syncthing/docs

View File

@ -66,7 +66,8 @@ To run Syncthing in Docker, see [the Docker README][16].
## Vote on features/bugs
We'd like to encourage you to [vote][12] on issues that matter to you.
This helps the team understand what are the biggest pain points for our users, and could potentially influence what is being worked on next.
This helps the team understand what are the biggest pain points for our users, and could potentially influence what is
being worked on next.
## Getting in Touch
@ -98,17 +99,31 @@ Please see the Syncthing [documentation site][6] [[source]][17].
All code is licensed under the [MPLv2 License][7].
[1]: https://docs.syncthing.net/specs/bep-v1.html
[2]: https://docs.syncthing.net/intro/getting-started.html
[3]: https://github.com/syncthing/syncthing/blob/main/etc
[5]: https://docs.syncthing.net/dev/building.html
[6]: https://docs.syncthing.net/
[7]: https://github.com/syncthing/syncthing/blob/main/LICENSE
[8]: https://forum.syncthing.net/
[10]: https://github.com/syncthing/syncthing/issues
[11]: https://docs.syncthing.net/users/contrib.html#gui-wrappers
[12]: https://www.bountysource.com/teams/syncthing/issues
[13]: https://github.com/syncthing/syncthing/blob/main/GOALS.md
[14]: https://github.com/syncthing/syncthing/raw/main/assets/logo-text-128.png
[15]: https://syncthing.net/
[16]: https://github.com/syncthing/syncthing/blob/main/README-Docker.md
[17]: https://github.com/syncthing/docs

View File

@ -66,7 +66,8 @@ To run Syncthing in Docker, see [the Docker README][16].
## Vote on features/bugs
We'd like to encourage you to [vote][12] on issues that matter to you.
This helps the team understand what are the biggest pain points for our users, and could potentially influence what is being worked on next.
This helps the team understand what are the biggest pain points for our users, and could potentially influence what is
being worked on next.
## Getting in Touch
@ -98,17 +99,31 @@ Please see the Syncthing [documentation site][6] [[source]][17].
All code is licensed under the [MPLv2 License][7].
[1]: https://docs.syncthing.net/specs/bep-v1.html
[2]: https://docs.syncthing.net/intro/getting-started.html
[3]: https://github.com/syncthing/syncthing/blob/main/etc
[5]: https://docs.syncthing.net/dev/building.html
[6]: https://docs.syncthing.net/
[7]: https://github.com/syncthing/syncthing/blob/main/LICENSE
[8]: https://forum.syncthing.net/
[10]: https://github.com/syncthing/syncthing/issues
[11]: https://docs.syncthing.net/users/contrib.html#gui-wrappers
[12]: https://www.bountysource.com/teams/syncthing/issues
[13]: https://github.com/syncthing/syncthing/blob/main/GOALS.md
[14]: https://github.com/syncthing/syncthing/raw/main/assets/logo-text-128.png
[15]: https://syncthing.net/
[16]: https://github.com/syncthing/syncthing/blob/main/README-Docker.md
[17]: https://github.com/syncthing/docs

View File

@ -3,9 +3,13 @@
[![GitHub Stars][1]][2] [![Docker Pulls][3]][5] [![Docker Version][4]][5]
[1]: https://img.shields.io/github/stars/cnk3x/xunlei?style=flat
[2]: https://star-history.com/#cnk3x/xunlei&Date
[3]: https://img.shields.io/docker/pulls/cnk3x/xunlei.svg
[4]: https://img.shields.io/docker/v/cnk3x/xunlei
[5]: https://hub.docker.com/r/cnk3x/xunlei
从迅雷群晖套件中提取出来用于其他设备的迅雷远程下载服务程序。仅供研究学习测试。 \

View File

@ -11,5 +11,5 @@ services:
volumes:
- ./data:/var/lib/zerotier-one
image: zerotier/zerotier:1.14.2
labels:
labels:
createdBy: "Apps"

View File

@ -1,82 +1,117 @@
# 使用说明
例子:容器管理界面连接容器终端,执行命令加入网络
```
zerotier-cli join [网络ID]
```
# 原始相关
ZeroTier - Global Area Networking
======
*This document is written for a software developer audience. For information on using ZeroTier, see the: [Website](https://www.zerotier.com), [Documentation Site](https://docs.zerotier.com), and [Discussion Forum](https://discuss.zerotier.com).*
*This document is written for a software developer audience. For information on using ZeroTier, see
the: [Website](https://www.zerotier.com), [Documentation Site](https://docs.zerotier.com),
and [Discussion Forum](https://discuss.zerotier.com).*
ZeroTier is a smart programmable Ethernet switch for planet Earth. It allows all networked devices, VMs, containers, and applications to communicate as if they all reside in the same physical data center or cloud region.
ZeroTier is a smart programmable Ethernet switch for planet Earth. It allows all networked devices, VMs, containers, and
applications to communicate as if they all reside in the same physical data center or cloud region.
This is accomplished by combining a cryptographically addressed and secure peer to peer network (termed VL1) with an Ethernet emulation layer somewhat similar to VXLAN (termed VL2). Our VL2 Ethernet virtualization layer includes advanced enterprise SDN features like fine grained access control rules for network micro-segmentation and security monitoring.
This is accomplished by combining a cryptographically addressed and secure peer to peer network (termed VL1) with an
Ethernet emulation layer somewhat similar to VXLAN (termed VL2). Our VL2 Ethernet virtualization layer includes advanced
enterprise SDN features like fine grained access control rules for network micro-segmentation and security monitoring.
All ZeroTier traffic is encrypted end-to-end using secret keys that only you control. Most traffic flows peer to peer, though we offer free (but slow) relaying for users who cannot establish peer to peer connections.
All ZeroTier traffic is encrypted end-to-end using secret keys that only you control. Most traffic flows peer to peer,
though we offer free (but slow) relaying for users who cannot establish peer to peer connections.
The goals and design principles of ZeroTier are inspired by among other things the original [Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf) paper and the [Jericho Forum](https://en.wikipedia.org/wiki/Jericho_Forum) with its notion of "deperimeterization."
The goals and design principles of ZeroTier are inspired by among other things the
original [Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf)
paper and the [Jericho Forum](https://en.wikipedia.org/wiki/Jericho_Forum) with its notion of "deperimeterization."
Visit [ZeroTier's site](https://www.zerotier.com/) for more information and [pre-built binary packages](https://www.zerotier.com/download/). Apps for Android and iOS are available for free in the Google Play and Apple app stores.
Visit [ZeroTier's site](https://www.zerotier.com/) for more information
and [pre-built binary packages](https://www.zerotier.com/download/). Apps for Android and iOS are available for free in
the Google Play and Apple app stores.
ZeroTier is licensed under the [BSL version 1.1](https://mariadb.com/bsl11/). See [LICENSE.txt](https://github.com/zerotier/ZeroTierOne/blob/dev/LICENSE.txt) and the [ZeroTier pricing page](https://www.zerotier.com/pricing) for details. ZeroTier is free to use internally in businesses and academic institutions and for non-commercial purposes. Certain types of commercial use such as building closed-source apps and devices based on ZeroTier or offering ZeroTier network controllers and network management as a SaaS service require a commercial license.
ZeroTier is licensed under the [BSL version 1.1](https://mariadb.com/bsl11/). See [LICENSE.txt](LICENSE.txt) and
the [ZeroTier pricing page](https://www.zerotier.com/pricing) for details. ZeroTier is free to use internally in
businesses and academic institutions and for non-commercial purposes. Certain types of commercial use such as building
closed-source apps and devices based on ZeroTier or offering ZeroTier network controllers and network management as a
SaaS service require a commercial license.
A small amount of third party code is also included in ZeroTier and is not subject to our BSL license. See [AUTHORS.md](https://github.com/zerotier/ZeroTierOne/blob/dev/AUTHORS.md) for a list of third party code, where it is included, and the licenses that apply to it. All of the third party code in ZeroTier is liberally licensed (MIT, BSD, Apache, public domain, etc.).
A small amount of third party code is also included in ZeroTier and is not subject to our BSL license.
See [AUTHORS.md](AUTHORS.md) for a list of third party code, where it is included, and the licenses that apply to it.
All of the third party code in ZeroTier is liberally licensed (MIT, BSD, Apache, public domain, etc.).
### Getting Started
Everything in the ZeroTier world is controlled by two types of identifier: 40-bit/10-digit *ZeroTier addresses* and 64-bit/16-digit *network IDs*. These identifiers are easily distinguished by their length. A ZeroTier address identifies a node or "device" (laptop, phone, server, VM, app, etc.) while a network ID identifies a virtual Ethernet network that can be joined by devices.
Everything in the ZeroTier world is controlled by two types of identifier: 40-bit/10-digit *ZeroTier addresses* and
64-bit/16-digit *network IDs*. These identifiers are easily distinguished by their length. A ZeroTier address identifies
a node or "device" (laptop, phone, server, VM, app, etc.) while a network ID identifies a virtual Ethernet network that
can be joined by devices.
ZeroTier addresses can be thought of as port numbers on an enormous planet-wide enterprise Ethernet smart switch supporting VLANs. Network IDs are VLAN IDs to which these ports may be assigned. A single port can be assigned to more than one VLAN.
ZeroTier addresses can be thought of as port numbers on an enormous planet-wide enterprise Ethernet smart switch
supporting VLANs. Network IDs are VLAN IDs to which these ports may be assigned. A single port can be assigned to more
than one VLAN.
A ZeroTier address looks like `8056c2e21c` and a network ID looks like `8056c2e21c000001`. Network IDs are composed of the ZeroTier address of that network's primary controller and an arbitrary 24-bit ID that identifies the network on this controller. Network controllers are roughly analogous to SDN controllers in SDN protocols like [OpenFlow](https://en.wikipedia.org/wiki/OpenFlow), though as with the analogy between VXLAN and VL2 this should not be read to imply that the protocols or design are the same. You can use our convenient and inexpensive SaaS hosted controllers at [my.zerotier.com](https://my.zerotier.com/) or [run your own controller](controller/) if you don't mind messing around with JSON configuration files or writing scripts to do so.
A ZeroTier address looks like `8056c2e21c` and a network ID looks like `8056c2e21c000001`. Network IDs are composed of
the ZeroTier address of that network's primary controller and an arbitrary 24-bit ID that identifies the network on this
controller. Network controllers are roughly analogous to SDN controllers in SDN protocols
like [OpenFlow](https://en.wikipedia.org/wiki/OpenFlow), though as with the analogy between VXLAN and VL2 this should
not be read to imply that the protocols or design are the same. You can use our convenient and inexpensive SaaS hosted
controllers at [my.zerotier.com](https://my.zerotier.com/) or [run your own controller](controller/) if you don't mind
messing around with JSON configuration files or writing scripts to do so.
### Project Layout
The base path contains the ZeroTier One service main entry point (`one.cpp`), self test code, makefiles, etc.
- `artwork/`: icons, logos, etc.
- `attic/`: old stuff and experimental code that we want to keep around for reference.
- `controller/`: the reference network controller implementation, which is built and included by default on desktop and server build targets.
- `debian/`: files for building Debian packages on Linux.
- `doc/`: manual pages and other documentation.
- `ext/`: third party libraries, binaries that we ship for convenience on some platforms (Mac and Windows), and installation support files.
- `include/`: include files for the ZeroTier core.
- `java/`: a JNI wrapper used with our Android mobile app. (The whole Android app is not open source but may be made so in the future.)
- `node/`: the ZeroTier virtual Ethernet switch core, which is designed to be entirely separate from the rest of the code and able to be built as a stand-alone OS-independent library. Note to developers: do not use C++11 features in here, since we want this to build on old embedded platforms that lack C++11 support. C++11 can be used elsewhere.
- `osdep/`: code to support and integrate with OSes, including platform-specific stuff only built for certain targets.
- `rule-compiler/`: JavaScript rules language compiler for defining network-level rules.
- `service/`: the ZeroTier One service, which wraps the ZeroTier core and provides VPN-like connectivity to virtual networks for desktops, laptops, servers, VMs, and containers.
- `windows/`: Visual Studio solution files, Windows service code, and the Windows task bar app UI.
- `zeroidc/`: OIDC implementation used by ZeroTier service to log into SSO-enabled networks. (This part is written in Rust, and more Rust will be appearing in this repository in the future.)
- `artwork/`: icons, logos, etc.
- `attic/`: old stuff and experimental code that we want to keep around for reference.
- `controller/`: the reference network controller implementation, which is built and included by default on desktop and
server build targets.
- `debian/`: files for building Debian packages on Linux.
- `doc/`: manual pages and other documentation.
- `ext/`: third party libraries, binaries that we ship for convenience on some platforms (Mac and Windows), and
installation support files.
- `include/`: include files for the ZeroTier core.
- `java/`: a JNI wrapper used with our Android mobile app. (The whole Android app is not open source but may be made so
in the future.)
- `node/`: the ZeroTier virtual Ethernet switch core, which is designed to be entirely separate from the rest of the
code and able to be built as a stand-alone OS-independent library. Note to developers: do not use C++11 features in
here, since we want this to build on old embedded platforms that lack C++11 support. C++11 can be used elsewhere.
- `osdep/`: code to support and integrate with OSes, including platform-specific stuff only built for certain targets.
- `rule-compiler/`: JavaScript rules language compiler for defining network-level rules.
- `service/`: the ZeroTier One service, which wraps the ZeroTier core and provides VPN-like connectivity to virtual
networks for desktops, laptops, servers, VMs, and containers.
- `windows/`: Visual Studio solution files, Windows service code, and the Windows task bar app UI.
- `zeroidc/`: OIDC implementation used by ZeroTier service to log into SSO-enabled networks. (This part is written in
Rust, and more Rust will be appearing in this repository in the future.)
### Contributing
Please do pull requests off of the `dev` branch.
Releases are done by merging `dev` into `main` and then tagging and doing builds.
### Build and Platform Notes
To build on Mac and Linux just type `make`. On FreeBSD and OpenBSD `gmake` (GNU make) is required and can be installed from packages or ports. For Windows there is a Visual Studio solution in `windows/`.
To build on Mac and Linux just type `make`. On FreeBSD and OpenBSD `gmake` (GNU make) is required and can be installed
from packages or ports. For Windows there is a Visual Studio solution in `windows/`.
- **Mac**
- Xcode command line tools for macOS 10.13 or newer are required.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **Linux**
- The minimum compiler versions required are GCC/G++ 4.9.3 or CLANG/CLANG++ 3.4.2. (Install `clang` on CentOS 7 as G++ is too old.)
- Linux makefiles automatically detect and prefer clang/clang++ if present as it produces smaller and slightly faster binaries in most cases. You can override by supplying CC and CXX variables on the make command line.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **Windows**
- Visual Studio 2022 on Windows 10 or newer.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **FreeBSD**
- GNU make is required. Type `gmake` to build.
- `binutils` is required. Type `pkg install binutils` to install.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **OpenBSD**
- There is a limit of four network memberships on OpenBSD as there are only four tap devices (`/dev/tap0` through `/dev/tap3`).
- GNU make is required. Type `gmake` to build.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **Mac**
- Xcode command line tools for macOS 10.13 or newer are required.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **Linux**
- The minimum compiler versions required are GCC/G++ 8.x or CLANG/CLANG++ 5.x.
- Linux makefiles automatically detect and prefer clang/clang++ if present as it produces smaller and slightly
faster binaries in most cases. You can override by supplying CC and CXX variables on the make command line.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **Windows**
- Visual Studio 2022 on Windows 10 or newer.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **FreeBSD**
- GNU make is required. Type `gmake` to build.
- `binutils` is required. Type `pkg install binutils` to install.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
- **OpenBSD**
- There is a limit of four network memberships on OpenBSD as there are only four tap devices (`/dev/tap0` through
`/dev/tap3`).
- GNU make is required. Type `gmake` to build.
- Rust for x86_64 and ARM64 targets *if SSO is enabled in the build*.
Typing `make selftest` will build a *zerotier-selftest* binary which unit tests various internals and reports on a few aspects of the build environment. It's a good idea to try this on novel platforms or architectures.
Typing `make selftest` will build a *zerotier-selftest* binary which unit tests various internals and reports on a few
aspects of the build environment. It's a good idea to try this on novel platforms or architectures.
### Running
@ -90,51 +125,78 @@ On most distributions, macOS, and Windows, the installer will start the service
A home folder for your system will automatically be created.
The service is controlled via the JSON API, which by default is available at 127.0.0.1 port 9993. We include a *zerotier-cli* command line utility to make API calls for standard things like joining and leaving networks. The *authtoken.secret* file in the home folder contains the secret token for accessing this API. See [service/README.md](service/README.md) for API documentation.
The service is controlled via the JSON API, which by default is available at `127.0.0.1:9993`. It also listens on
`0.0.0.0:9993` which is only usable if `allowManagementFrom` is properly configured in `local.conf`. We include a
*zerotier-cli* command line utility to make API calls for standard things like joining and leaving networks. The
*authtoken.secret* file in the home folder contains the secret token for accessing this API.
See [service/README.md](service/README.md) for API documentation.
Here's where home folders live (by default) on each OS:
* **Linux**: `/var/lib/zerotier-one`
* **FreeBSD** / **OpenBSD**: `/var/db/zerotier-one`
* **Mac**: `/Library/Application Support/ZeroTier/One`
* **Windows**: `\ProgramData\ZeroTier\One` (That's the default. The base 'shared app data' folder might be different if Windows is installed with a non-standard drive letter assignment or layout.)
* **Linux**: `/var/lib/zerotier-one`
* **FreeBSD** / **OpenBSD**: `/var/db/zerotier-one`
* **Mac**: `/Library/Application Support/ZeroTier/One`
* **Windows**: `\ProgramData\ZeroTier\One` (That's the default. The base 'shared app data' folder might be different if
Windows is installed with a non-standard drive letter assignment or layout.)
### Basic Troubleshooting
For most users, it just works.
If you are running a local system firewall, we recommend adding a rules permitting zerotier. If you installed binaries for Windows this should be done automatically. Other platforms might require manual editing of local firewall rules depending on your configuration.
If you are running a local system firewall, we recommend adding a rules permitting zerotier. If you installed binaries
for Windows this should be done automatically. Other platforms might require manual editing of local firewall rules
depending on your configuration.
See the [documentation site](https://docs.zerotier.com/zerotier/troubleshooting) for more information.
The Mac firewall can be found under "Security" in System Preferences. Linux has a variety of firewall configuration systems and tools.
The Mac firewall can be found under "Security" in System Preferences. Linux has a variety of firewall configuration
systems and tools.
On CentOS check `/etc/sysconfig/iptables` for IPTables rules. For other distributions consult your distribution's documentation. You'll also have to check the UIs or documentation for commercial third party firewall applications like Little Snitch (Mac), McAfee Firewall Enterprise (Windows), etc. if you are running any of those. Some corporate environments might have centrally managed firewall software, so you might also have to contact IT.
On CentOS check `/etc/sysconfig/iptables` for IPTables rules. For other distributions consult your distribution's
documentation. You'll also have to check the UIs or documentation for commercial third party firewall applications like
Little Snitch (Mac), McAfee Firewall Enterprise (Windows), etc. if you are running any of those. Some corporate
environments might have centrally managed firewall software, so you might also have to contact IT.
ZeroTier One peers will automatically locate each other and communicate directly over a local wired LAN *if UDP port 9993 inbound is open*. If that port is filtered, they won't be able to see each others' LAN announcement packets. If you're experiencing poor performance between devices on the same physical network, check their firewall settings. Without LAN auto-location peers must attempt "loopback" NAT traversal, which sometimes fails and in any case requires that every packet traverse your external router twice.
ZeroTier One peers will automatically locate each other and communicate directly over a local wired LAN *if UDP port
9993 inbound is open*. If that port is filtered, they won't be able to see each others' LAN announcement packets. If
you're experiencing poor performance between devices on the same physical network, check their firewall settings.
Without LAN auto-location peers must attempt "loopback" NAT traversal, which sometimes fails and in any case requires
that every packet traverse your external router twice.
Users behind certain types of firewalls and "symmetric" NAT devices may not be able to connect to external peers directly at all. ZeroTier has limited support for port prediction and will *attempt* to traverse symmetric NATs, but this doesn't always work. If P2P connectivity fails you'll be bouncing UDP packets off our relay servers resulting in slower performance. Some NAT router(s) have a configurable NAT mode, and setting this to "full cone" will eliminate this problem. If you do this you may also see a magical improvement for things like VoIP phones, Skype, BitTorrent, WebRTC, certain games, etc., since all of these use NAT traversal techniques similar to ours.
Users behind certain types of firewalls and "symmetric" NAT devices may not be able to connect to external peers
directly at all. ZeroTier has limited support for port prediction and will *attempt* to traverse symmetric NATs, but
this doesn't always work. If P2P connectivity fails you'll be bouncing UDP packets off our relay servers resulting in
slower performance. Some NAT router(s) have a configurable NAT mode, and setting this to "full cone" will eliminate this
problem. If you do this you may also see a magical improvement for things like VoIP phones, Skype, BitTorrent, WebRTC,
certain games, etc., since all of these use NAT traversal techniques similar to ours.
If a firewall between you and the Internet blocks ZeroTier's UDP traffic, you will fall back to last-resort TCP tunneling to rootservers over port 443 (https impersonation). This will work almost anywhere but is *very slow* compared to UDP or direct peer to peer connectivity.
If a firewall between you and the Internet blocks ZeroTier's UDP traffic, you will fall back to last-resort TCP
tunneling to rootservers over port 443 (https impersonation). This will work almost anywhere but is *very slow* compared
to UDP or direct peer to peer connectivity.
Additional help can be found in our [knowledge base](https://zerotier.atlassian.net/wiki/spaces/SD/overview).
### Prometheus Metrics
Prometheus Metrics are available at the `/metrics` API endpoint. This endpoint is protected by an API key stored in `metricstoken.secret` to prevent unwanted information leakage. Information that could be gleaned from the metrics include joined networks and peers your instance is talking to.
Prometheus Metrics are available at the `/metrics` API endpoint. This endpoint is protected by an API key stored in
`metricstoken.secret` to prevent unwanted information leakage. Information that could be gleaned from the metrics
include joined networks and peers your instance is talking to.
Access control is via the ZeroTier control interface itself and `metricstoken.secret`. This can be sent as a bearer auth token, via the `X-ZT1-Auth` HTTP header field, or appended to the URL as `?auth=<token>`. You can see the current metrics via `cURL` with the following command:
Access control is via the ZeroTier control interface itself and `metricstoken.secret`. This can be sent as a bearer auth
token, via the `X-ZT1-Auth` HTTP header field, or appended to the URL as `?auth=<token>`. You can see the current
metrics via `cURL` with the following command:
// Linux
curl -H "X-ZT1-Auth: $(sudo cat /var/lib/zerotier-one/metricstoken.secret)" http://localhost:9993/metrics
// macOS
curl -H "X-XT1-Auth: $(sudo cat /Library/Application\ Support/ZeroTier/One/metricstoken.secret)" http://localhost:9993/metrics
curl -H "X-ZT1-Auth: $(sudo cat /Library/Application\ Support/ZeroTier/One/metricstoken.secret)" http://localhost:9993/metrics
// Windows PowerShell (Admin)
Invoke-RestMethod -Headers @{'X-ZT1-Auth' = "$(Get-Content C:\ProgramData\ZeroTier\One\metricstoken.secret)"; } -Uri http://localhost:9993/metrics
To configure a scrape job in Prometheus on the machine ZeroTier is running on, add this to your Prometheus `scrape_config`:
To configure a scrape job in Prometheus on the machine ZeroTier is running on, add this to your Prometheus
`scrape_config`:
- job_name: zerotier-one
honor_labels: true
@ -149,32 +211,34 @@ To configure a scrape job in Prometheus on the machine ZeroTier is running on, a
authorization:
credentials: $YOUR_METRICS_TOKEN_SECRET
If neither of these methods are desirable, it is probably possible to distribute metrics via [Prometheus Proxy](https://github.com/pambrose/prometheus-proxy) or some other tool. Note: We have not tested this internally, but will probably work with the correct configuration.
If neither of these methods are desirable, it is probably possible to distribute metrics
via [Prometheus Proxy](https://github.com/pambrose/prometheus-proxy) or some other tool. Note: We have not tested this
internally, but will probably work with the correct configuration.
Metrics are also available on disk in ZeroTier's working directory:
// Linux
/var/lib/zerotier-one/metrics.prom
// Linux
/var/lib/zerotier-one/metrics.prom
// macOS
/Library/Application\ Support/ZeroTier/One/metrics.prom
// macOS
/Library/Application\ Support/ZeroTier/One/metrics.prom
//Windows
C:\ProgramData\ZeroTier\One\metrics.prom
//Windows
C:\ProgramData\ZeroTier\One\metrics.prom
#### Available Metrics
| Metric Name | Labels | Metric Type | Description |
| --- | --- | --- | --- |
| zt_packet | packet_type, direction | Counter | ZeroTier packet type counts |
| zt_packet_error | error_type, direction | Counter | ZeroTier packet errors|
| zt_data | protocol, direction | Counter | number of bytes ZeroTier has transmitted or received |
| zt_num_networks | | Gauge | number of networks this instance is joined to |
| zt_network_multicast_groups_subscribed | network_id | Gauge | number of multicast groups networks are subscribed to |
| zt_network_packets | network_id, direction | Counter | number of incoming/outgoing packets per network |
| zt_peer_latency | node_id | Histogram | peer latency (ms) |
| zt_peer_path_count | node_id, status | Gauge | number of paths to peer |
| zt_peer_packets | node_id, direction | Counter | number of packets to/from a peer |
| zt_peer_packet_errors | node_id | Counter | number of incoming packet errors from a peer |
| Metric Name | Labels | Metric Type | Description |
|----------------------------------------|------------------------|-------------|-------------------------------------------------------|
| zt_packet | packet_type, direction | Counter | ZeroTier packet type counts |
| zt_packet_error | error_type, direction | Counter | ZeroTier packet errors |
| zt_data | protocol, direction | Counter | number of bytes ZeroTier has transmitted or received |
| zt_num_networks | | Gauge | number of networks this instance is joined to |
| zt_network_multicast_groups_subscribed | network_id | Gauge | number of multicast groups networks are subscribed to |
| zt_network_packets | network_id, direction | Counter | number of incoming/outgoing packets per network |
| zt_peer_latency | node_id | Histogram | peer latency (ms) |
| zt_peer_path_count | node_id, status | Gauge | number of paths to peer |
| zt_peer_packets | node_id, direction | Counter | number of packets to/from a peer |
| zt_peer_packet_errors | node_id | Counter | number of incoming packet errors from a peer |
If there are other metrics you'd like to see tracked, ask us in an Issue or send us a Pull Request!

View File

@ -11,5 +11,5 @@ services:
volumes:
- ./data:/var/lib/zerotier-one
image: zerotier/zerotier:latest
labels:
labels:
createdBy: "Apps"

View File

@ -1,28 +1,607 @@
# Zerotier Planet 服务端
# 交流群
包含 ZeroTier One 和 ztncui 的 Docker 映像,用于在容器中设置具有 Web 用户界面的独立 ZeroTier 网络控制器。
**Telegram**
## 简介
- TG交流群https://t.me/+JduuWfhSEPdlNDk1
ZeroTier 这一类 P2P VPN 是在互联网的基础上将自己的所有设备组成一个私有的网络,可以理解为互联网连接的局域网。最常见的场景就是在公司可以用手机直接访问家里的
NAS而且是点对点直连数据传输并不经由第三方服务器中转。
**QQ Group**
ZeroTier 在多设备之间建立了一个 Peer to Peer VPNP2PVPN 连接,如:在笔记本电脑、台式机、嵌入式设备、云资源和应用。这些设备只需要通过
ZeroTier One ( ZeroTier 的客户端) 在不同设备之间建立直接连接,即使它们位于 NAT 之后。连接到虚拟 LAN 的任何计算机和设备通常通过
NAT 或路由器设备与 Internet 连接ZeroTier One 使用 STUN 和隧道来建立 NAT 后设备之间的 VPN 直连。
- 1群692635772
- 2群785620313
- 3群316239544
- 4群1027678459
简单一点说ZeroTier 就是通过 P2P 等方式实现形如交换机或路由器上 LAN 设备的内网互联。
# 微信公众号
### 专有名词
![二维码](assets/wechat.png)
PLANET 行星服务器Zerotier 根服务器
# 功能特性
MOON :卫星服务器,用户自建的私有根服务器,起到代理加速的作用
- ✅ 支持 Linux/AMD64、Linux/ARM64 架构
- 🐳 Docker 容器化部署
- 📥 支持 URL 下载 planet、moon 配置
- 🌐 可作为 Moon 或 Planet 服务器搭建
LEAF :网络客户端,就是每台连接到网络节点。
# 目录
## 安装说明
- [0: 广告](#0-广告)
- [1ZeroTier 介绍](#1zerotier-介绍)
- [2为什么要自建PLANET 服务器](#2为什么要自建planet-服务器)
- [3开始安装](#3开始安装)
- [3.1:准备条件](#31准备条件)
- [3.1.1 安装git](#311-安装git)
- [3.1.2 安装docker](#312-安装docker)
- [3.1.3 启动docker](#313-启动docker)
- [3.1.4 配置docker加速镜像可选不配也可以](#314-配置docker加速镜像可选不配也可以)
- [3.2:下载项目源码](#32下载项目源码)
- [3.3:执行安装脚本](#33执行安装脚本)
- [3.4 下载 `planet` 文件](#34-下载-planet-文件)
- [3.5 新建网络](#35-新建网络)
- [3.5.1 创建网络](#351-创建网络)
- [3.5.2 分配网络IP:](#352-分配网络ip)
- [4.客户端配置](#4客户端配置)
- [4.1 Windows 配置](#41-windows-配置)
- [4.2 加入网络](#42-加入网络)
- [4.2 Linux 客户端](#42-linux-客户端)
- [4.3 安卓客户端配置](#43-安卓客户端配置)
- [4.4 MacOS 客户端配置](#44-macos-客户端配置)
- [4.5 OpenWRT 客户端配置](#45-openwrt-客户端配置)
- [参考链接](#参考链接)
- [5. 管理面板SSL配置](#5-管理面板ssl配置)
- [6. 卸载](#6-卸载)
- [7: Q\&A](#7-qa)
- [1. 为什么我ping不通目标机器](#1-为什么我ping不通目标机器)
- [2. IOS客户端怎么用](#2-ios客户端怎么用)
- [3. 为什么看不到官方的Planet](#3-为什么看不到官方的planet)
- [4. 我更换了IP需要怎么处理](#4-我更换了ip需要怎么处理)
- [5. PVE lxc 容器没有创建网卡](#5-pve-lxc-容器没有创建网卡)
- [6. 管理后台忘记密码怎么办:](#6-管理后台忘记密码怎么办)
- [7. 为什么连不上planet](#7-为什么连不上planet)
- [8. 如何判断是直连还是中转](#8-如何判断是直连还是中转)
- [9. 为什么我的zerotier传输不稳定](#9-为什么我的zerotier传输不稳定)
- [10.支持域名吗?](#10支持域名吗)
- [11. ARM服务器可以搭建吗](#11-arm服务器可以搭建吗)
- [12. 支持docker-compose启动部署吗](#12-支持docker-compose启动部署吗)
- [开发计划](#开发计划)
- [风险声明](#风险声明)
- [类似项目](#类似项目)
- [捐助和支持](#捐助和支持)
- [鸣谢](#鸣谢)
# 0: 广告
## 托管方案一:自运营容器服务
**寻找便捷的解决方案?**
我们提供专业的托管服务:
- 免费试用3天
- 年费仅需99¥
- 高速带宽300Mbit
- 流量政策:
- 每月100G转发流量
- P2P连接后不计流量
- 超出后每10元100G
- 优质线路:宁波电信机房
- 联系方式:
- Telegram[https://t.me/uxkram](https://t.me/uxkram)
- 或加入QQ群咨询群主
测速图如下:
<img src="./assets/nb-speed-test.png" width = "800" height = "" alt="图片名称" align=center />
## 0.2 托管方案二:雨云容器服务
[![通过雨云一键部署](https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg)](https://app.rainyun.com/apps/rca/store/6215?ref=220429)
### 0.3 微信公众号广告:欢迎关注公众号获取最新动态和技术分享
<img src="./assets/wx_qrcode_pub.jpg" width = "300" height = "" alt="图片名称" align=center />
# 1ZeroTier 介绍
`ZeroTier` 是一款强大的 P2P VPN
工具,它能让你在互联网上搭建属于自己的虚拟局域网。通过它,你可以轻松实现远程访问家中设备的需求 - 比如在公司用手机直接访问家里的
NAS。最重要的是设备之间是点对点直连的无需经过中转服务器既保证了速度又提升了安全性。
它的工作原理是这样的:通过 `ZeroTier One` 客户端,在不同设备(如笔记本、手机、服务器等)之间建立 P2P 连接,即使这些设备都在 NAT
后面也没问题。它使用了 STUN 等技术,可以穿透大多数类型的 NAT实现设备间的直接通信。如果实在无法直连才会通过中转服务器进行通信。
简单来说,`ZeroTier` 就像是一个跨越互联网的"虚拟交换机",让分布在世界各地的设备,都能像在同一个局域网内一样方便地相互访问。
![zerotier](assets/zerotier-network.png)
**ZeroTier 网络中的关键概念**
`PLANET`行星服务器ZeroTier 网络的核心根服务器,负责网络发现和初始连接。相当于整个网络的"中枢"。
`MOON`(卫星服务器):用户可以自建的私有根服务器。它可以作为区域性的代理节点,帮助就近的设备更快地建立连接,提升网络性能。
`LEAF`(叶子节点):所有接入 ZeroTier 网络的终端设备,如电脑、手机、服务器等。这些设备通过 PLANET 和 MOON 的协调来相互发现和通信。
本教程将指导您搭建一个私有的 PLANET 服务器,让您完全掌控自己的 ZeroTier 网络。
# 2为什么要自建PLANET 服务器
自建 PLANET 服务器有以下几个重要原因:
1. 提升网络稳定性:官方服务器位于海外,国内用户访问延迟高且不稳定。自建服务器可以大幅提升连接质量。
2. 加快连接速度:本地化的 PLANET 服务器可以更快地帮助设备建立 P2P 连接。
3. 增强网络控制:自建服务器让您完全掌控网络配置,可以根据需求进行优化调整。
4. 提高安全性:私有化部署意味着网络流量不经过第三方服务器,更加安全可靠。
5. 降低依赖:避免因官方服务器故障或网络波动影响您的业务正常运行。
# 3开始安装
## 3.1:环境准备
在开始安装之前,请确保您的服务器满足以下条件:
- 服务器要求:
- 拥有公网IP地址
- 需开放以下端口:
- 3443/tcp (管理面板,根据实际情况调整)
- 9994/tcp (ZeroTier通信根据实际情况调整)
- 9994/udp (ZeroTier通信根据实际情况调整)
- 软件依赖:
- Docker (容器运行环境)
- Git (获取项目代码)
- 系统要求:
- 推荐使用较新的Linux发行版:
- Debian 12
- Ubuntu 20.04+
- Rocky Linux
- 其他同类系统
### 3.1.1 安装git
```bash
#debian/ubuntu等
apt update && apt install git -y
#centos等
yum update && yum install git -y
```
### 3.1.2 安装docker
```bash
curl -fsSL https://get.docker.com |bash
```
如果网络问题,导致无法安装,可以使用国内镜像安装:
请参考:[安装Docker](https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker#33f11a5f1800n)
### 3.1.3 启动docker
```bash
service docker start
```
### 3.1.4 配置docker加速镜像可选不配也可以
```
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.aster.edu.pl",
"https://docker.mirrors.imoyuapp.win"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
```
## 3.2:下载项目源码
官方地址
```
git clone https://github.com/xubiaolin/docker-zerotier-planet.git
```
加速地址
```
git clone https://ghproxy.imoyuapp.win/https://github.com/xubiaolin/docker-zerotier-planet.git
```
## 3.3:执行安装脚本
进入项目目录
```
cd docker-zerotier-planet
```
运行 `deploy.sh` 脚本
```
./deploy.sh
```
根据提示来选择即可,操作完成后会自动部署
```
欢迎使用zerotier-planet脚本请选择需要执行的操作
1. 安装
2. 卸载
3. 更新
4. 查看信息
5. 退出
请输入数字:
```
整个脚本预计需要 1-3 分钟,具体需要看网络与机型
当您看到类似如下字样时,表示安装成功
![install-finish](./assets/install_finish.png)
## 3.4 下载 `planet` 文件
脚本运行完成后,会在 `./data/zerotier/dist` 目录下生成 `planet``moon` 配置文件。
您可以通过以下两种方式获取这些文件:
1. 通过安装完成后提供的URL直接下载
2. 使用scp或其他文件传输工具从服务器下载
请妥善保存这些文件,后续配置客户端时会用到。
## 3.5 新建网络
访问 `http://ip:3443` 进入controller页面
![ui](assets/ztncui.png)
使用默认账号为:`admin`
默认密码为:`password`
### 3.5.1 创建网络
登录后点击"Networks"菜单,然后点击"Add Network"按钮创建新网络。
在创建网络页面中,输入一个便于识别的网络名称,其他选项可保持默认。点击"Create Network"按钮完成创建。
创建成功后系统会自动生成一个网络ID这个ID在后续客户端配置时会用到请记录下来。
![ui](assets/ztncui_create_net.png)
得到网络 `id`
![ui](assets/ztncui_net_id.png)
### 3.5.2 分配网络IP:
选中easy setup
![assign_id](./assets/easy_setup.png)
生成ip范围
![ip_addr](./assets/network_addr.png)
# 4.客户端配置
ZeroTier 支持多种主流操作系统的客户端,包括:
- Windows
- macOS
- Linux
- Android
## 4.1 Windows 配置
首先去zerotier官网下载一个zerotier客户端
`planet` 文件覆盖粘贴到`C:\ProgramData\ZeroTier\One`中(这个目录是个隐藏目录,需要运允许查看隐藏目录才行)
Win+S 搜索 `服务`
![ui](assets/service.png)
找到ZeroTier One并且重启服务
![ui](assets/restart_service.png)
### 4.2 加入网络
使用管理员身份打开PowerShell
执行如下命令看到join ok字样就成功了
```
PS C:\Windows\system32> zerotier-cli.bat join 网络id(就是在网页里面创建的那个网络)
200 join OK
PS C:\Windows\system32>
```
登录管理后台可以看到有个个新的客户端,勾选`Authorized`就行
![ui](assets/join_net.png)
IP assignment 里面会出现zerotier的内网ip
![ip](./assets/allow_devices.png)
执行如下命令:
```
PS C:\Windows\system32> zerotier-cli.bat peers
200 peers
<ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
fcbaeb9b6c 1.8.7 PLANET 52 DIRECT 16 8994 1.1.1.1/9993
fe92971aad 1.8.7 LEAF 14 DIRECT -1 4150 2.2.2.2/9993
PS C:\Windows\system32>
```
可以看到有一个 PLANTET 和 LEAF 角色,连接方式均为 DIRECT(直连)
到这里就加入网络成功了
## 4.2 Linux 客户端
步骤如下:
1. 安装linux客户端软件
2. 进入目录 `/var/lib/zerotier-one`
3. 替换目录下的 `planet` 文件
4. 重启 `zerotier-one` 服务(`service zerotier-one restart`)
5. 加入网络 `zerotier-cli join` 网络 `id`
6. 管理后台同意加入请求
7. `zerotier-cli peers` 可以看到` planet` 角色
## 4.3 安卓客户端配置
[Zerotier 非官方安卓客户端](https://github.com/kaaass/ZerotierFix)
## 4.4 MacOS 客户端配置
步骤如下:
1. 进入 `/Library/Application\ Support/ZeroTier/One/` 目录,并替换目录下的 `planet` 文件
2. 重启 ZeroTier-One`cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill`
3. 加入网络 `zerotier-cli join` 网络 `id`
4. 管理后台同意加入请求
5. `zerotier-cli peers` 可以看到` planet` 角色
## 4.5 OpenWRT 客户端配置
步骤如下:
1. 安装zerotier客户端
2. 进入目录 `/etc/config/zero/planet`
3. 替换目录下的 `planet` 文件
4. 在openwrt网页后台先关闭zerotier服务在开启zerotier服务
5. 在openwrt网页后台加入网络
6. 管理后台同意加入请求
7. 执行 `ln -s /etc/config/zero /var/lib/zerotier-one `
8. `zerotier-cli peers` 可以看到` planet` 角色
## 4.6 iOS 客户端配置
方案一:
越狱后安装ZeroTie然后替换`planet`文件
方案二:
使用Wireguard接入到ZeroTier网络
# 5. 管理面板SSL配置
管理面板的SSL支持需要自行配置参考Nginx配置如下
```
upstream zerotier {
server 127.0.0.1:3443;
}
server {
listen 443 ssl;
server_name {CUSTOME_DOMAIN}; #替换自己的域名
# ssl证书地址
ssl_certificate pem和或者crt文件的路径;
ssl_certificate_key key文件的路径;
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
location / {
proxy_pass http://zerotier;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name {CUSTOME_DOMAIN}; #替换自己的域名
return 301 https://$server_name$request_uri;
}
```
# 6. 卸载
```bash
docker rm -f zerotier-planet
```
# 7: Q&A
## 1. 为什么我ping不通目标机器
请检查防火墙设置,`Windows` 系统需要允许 `ICMP` 入站,`Linux` 同理
## 2. IOS客户端怎么用
iOS 客户端插件在这里,设备需要越狱: https://github.com/lemon4ex/ZeroTieriOSFix
## 3. 为什么看不到官方的Planet
该项目剔除了官方服务器只保留了自定义的Planet节点
## 4. 我更换了IP需要怎么处理
如果IP更换了则需要重新部署相当于全新部署
## 5. PVE lxc 容器没有创建网卡
需要修改lxc容器的配置同时lxc容器需要取消勾选`无特权`
配置文件位置在`/etc/pve/lxc/{ID}.conf`
在Proxmox7.0之前的版本添加以下内容:
```
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
```
在Proxmox7.0之后的版本添加以下内容:
```
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
```
## 6. 管理后台忘记密码怎么办:
执行`./deploy.sh`,选择重置密码即可
## 7. 为什么连不上planet
请检查防火墙如果是阿里云、腾讯云用户需要在对应平台后台防火墙放行端口。linux机器上也要放行如果安装了ufw等防火墙工具。
## 8. 如何判断是直连还是中转
管理员权限执行终端,运行`zerotier-cli peers`
```
<ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
69c0d507d0 - LEAF -1 RELAY
93caa675b0 1.12.2 PLANET -894 DIRECT 4142 4068 110.42.99.46/9994
ab403e2074 1.10.2 LEAF -1 RELAY
```
如果你的ztaddr是REPLAY, 就说明是中转
## 9. 为什么我的zerotier传输不稳定
由于zerotier使用的是udp协议部分地区可能对udp进行了qos, 可以考虑使用openvpn。
## 10.支持域名吗?
暂不支持
## 11. ARM服务器可以搭建吗
可以
## 12. 支持docker-compose启动部署吗
参考docker-compose文件如下
```
version: '3'
services:
myztplanet:
image: xubiaolin/zerotier-planet:latest
container_name: ztplanet
ports:
- 9994:9994
- 9994:9994/udp
- 3443:3443
- 3000:3000
environment:
- IP_ADDR4=[IPV4IP ADDRESS]
- IP_ADDR6=
- ZT_PORT=9994
- API_PORT=3443
- FILE_SERVER_PORT=3000
volumes:
- ./data/zerotier/dist:/app/dist
- ./data/zerotier/ztncui:/app/ztncui
- ./data/zerotier/one:/var/lib/zerotier-one
- ./data/zerotier/config:/app/config
restart: unless-stopped
```
# 开发计划
🥰您的捐助可以让开发计划的速度更快🥰
- [ ] 多planet支持
- [x] 3443端口自定义支持
- [ ] planet和controller分离部署
# 风险声明
本项目仅供学习和研究使用,不鼓励用于商业用途。我们不对任何因使用本项目而导致的任何损失负责。
# 类似项目
- [wireguard一键脚本](https://github.com/xubiaolin/wireguard-onekey)
# 捐助和支持
如果觉得本项目对您有帮助,欢迎通过扫描下方赞赏码捐助项目 :)
<img src="assets/donate.png" alt="donate" width="400" height="400" />
# 鸣谢
感谢以下网友投喂,你们的支持和鼓励是我不懈更新的动力
按时间顺序排序:
- 随性
- 我
- 你好
- Calvin
- 小猪猪的饲养员
- 情若犹在
- 天天星期天
- 啊乐
- 夏末秋至
- **忠
- 岸芷汀兰
- Kimi Chen
- 匿名
- 阳光报告旷课
- 濂溪先生
- Water
- 匿名
- 匿名
- 陆
- 精钢葫芦娃
- 唯
- 王小新
- 匿名
- Duck不必
# 参考链接
[ZeroTier-虚拟局域网详解](https://www.glimmer.ltd/2021/3299983056/)
[五分钟自建 ZeroTier 的 Planet/Controller](https://v2ex.com/t/799623)
> 默认用户名:`admin`
>
> 默认密码:`password`