【更新】中心化逻辑部署 Easytier

This commit is contained in:
FlintyLemming 2025-05-30 17:10:34 +08:00
parent e049f32c70
commit c5cc6b27f2

View File

@ -23,46 +23,32 @@ Easytier 也类似,只不过你需要分开部署。下面的步骤中,“
### 说明 ### 说明
1. 管理后台用的 easytier-web 这个二进制文件启动 1. 管理后台用的 easytier-web-embed 这个二进制文件启动
2. 管理后台运行时启动了两个服务config-server 和 api-server 2. 管理后台运行时启动了三个服务config-server、api-server 和 web-server
3. config-server 是你节点需要连接的,类似于你用 `tailscale up``--login-server` 参数,或是 `netbird up``--management-url` 3. config-server 是你节点需要连接的,类似于你用 `tailscale up``--login-server` 参数,或是 `netbird up``--management-url`
4. api-server 就是官方[这个 Dashboard](https://easytier.cn/web) 的后端 4. api-server 就是官方[这个 Dashboard](https://easytier.cn/web) 的后端
5. 自建的话就是自建这个后端,然后前台 Dashboard 网页也是需要部署的,你的 API 地址和前端的根域名必须要一致 5. web-server 就是官方[这个 Dashboard](https://easytier.cn/web) 的前端
6. 自建后端 + Dashboard 就等于 Netbird、Tailscale 那个 Web 管理页面,可以管理设备,设置子网路由 6. 自建后端 就等于 Netbird、Tailscale 那个 Web 管理页面,可以管理设备,设置子网路由
### 具体步骤 ### 具体步骤
**部署后端** 1. 下载 GitHub Release 里的压缩包,里面有一个 easytier-web-embed
2. 执行 `sudo chmod +x easytier-web-embed` 使其可被执行后,执行 `./easytier-web-embed --help` 后可以看到参数说明,你可以修改 config-server、 api-server 和 web-server 各自的端口
1. 下载 GitHub Release 里的压缩包,里面有一个 easytier-web
2. 执行 `sudo chmod +x easytier-web` 使其可被执行后,执行 `./easytier-web --help` 后可以看到参数说明,你可以修改 config-server 和 api-server 各自的端口 默认直接运行 `./easytier-web-embed` 即可,后续测试没问题后再部署成服务
![](https://hf-image.mitsea.com:8840/blog/posts/2025/02/%E4%B8%AD%E5%BF%83%E5%8C%96%E9%80%BB%E8%BE%91%E9%83%A8%E7%BD%B2%20Easytier/image.avif)
默认直接运行 `./easytier-web` 即可,后续测试没问题后再部署成服务
3. 部署完后需要对 api-server 这个 RESTful API 进行反代 https 加密,套上你自己的域名
4. 至此,你部署出来了两个服务
3. 部署完后需要对 api-server 和 web-server 进行反代 https 加密,套上你自己的域名。这两个默认端口一样,可以只做一个反代规则,公用一个域名
4. 至此,你部署出来了三个服务
| 服务 | 说明 | 端口 | 协议 | | 服务 | 说明 | 端口 | 协议 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| api-server | 后面前端需要连接的 | 默认 11211tcp反代后那就是你自己 https 的端口 | tcp | | api-server | 后面前端需要连接的 | 默认 11211tcp反代后那就是你自己 https 的端口 | tcp |
| web-server | 前端 dashboard | 默认 11211tcp反代后那就是你自己 https 的端口 | tcp |
| config-server | 后续节点需要链接的,需要你服务器防火墙单独开放这个端口 | 默认 22020udp | udp | | config-server | 后续节点需要链接的,需要你服务器防火墙单独开放这个端口 | 默认 22020udp | udp |
**部署前端** 5. 打开反代的域名,就可以看到官方同款的 Dashboard 了API Host 那里由于前面把两个服务反代成同一个域名,所以还写同域名即可
1. 拉下代码仓库,进入 easytier-web/frontend 文件夹
2. 执行下面两个命令编译出 html 文件(需要你有前端编译环境,若没有自行安装 node.js
```bash ![](https://hf-image.mitsea.com:8840/blog/posts/2025/02/%E4%B8%AD%E5%BF%83%E5%8C%96%E9%80%BB%E8%BE%91%E9%83%A8%E7%BD%B2%20Easytier/QQ20250530-170504.png)
pnpm -r install
pnpm -r build
```
3. 把 easytier-web/frontend/dict 里的 html 文件部署到服务器上就可以用了。注意你前台的根域名和 API 后端的根域名要一样
![](https://hf-image.mitsea.com:8840/blog/posts/2025/02/%E4%B8%AD%E5%BF%83%E5%8C%96%E9%80%BB%E8%BE%91%E9%83%A8%E7%BD%B2%20Easytier/image%201.avif)
4. 注册并登陆,就能看到控制台了 4. 注册并登陆,就能看到控制台了
@ -193,28 +179,28 @@ Easytier 也类似,只不过你需要分开部署。下面的步骤中,“
| 名称 | 二进制程序 | 设备 | | 名称 | 二进制程序 | 设备 |
| --- | --- | --- | | --- | --- | --- |
| 网页服务 api-server + config-server | easytier-web | A | | 网页服务 api-server + config-server + web-server | easytier-web-embed | A |
| 自建公共服务转发机 | easytier-core | B也可以跟 A 放一起) | | 自建公共服务转发机 | easytier-core | B也可以跟 A 放一起) |
| 其他入网设备 | easytier-core | C | | 其他入网设备 | easytier-core | C |
### 注册为 systemd 服务 ### 注册为 systemd 服务
所以我们需要在设备 A 上将 `./easytier-web` 这个命令注册为服务,在 B 和 C 上将 `./easytier-core --config-server udp://1.2.3.4:22020/abc` 这个命令注册为服务 所以我们需要在设备 A 上将 `./easytier-web-embed` 这个命令注册为服务,在 B 和 C 上将 `./easytier-core --config-server udp://1.2.3.4:22020/abc` 这个命令注册为服务
**注册 easytier-web** **注册 easytier-web-embed**
1. 移动二进制文件并设置执行权限 1. 移动二进制文件并设置执行权限
``` ```
sudo mv easytier-web /usr/local/bin/easytier-web sudo mv easytier-web-embed /usr/local/bin/easytier-web-embed
sudo chmod +x /usr/local/bin/easytier-web sudo chmod +x /usr/local/bin/easytier-web-embed
``` ```
2. 创建 systemd 服务单元文件 2. 创建 systemd 服务单元文件
``` ```
sudo nano /etc/systemd/system/easytier-web.service sudo nano /etc/systemd/system/easytier-web-embed.service
``` ```
@ -222,12 +208,12 @@ Easytier 也类似,只不过你需要分开部署。下面的步骤中,“
``` ```
[Unit] [Unit]
Description=easytier-web Service Description=easytier-web-embed Service
After=network.target After=network.target
[Service] [Service]
Type=simple Type=simple
ExecStart=/usr/local/bin/easytier-web ExecStart=/usr/local/bin/easytier-web-embed
User=root User=root
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
@ -249,22 +235,22 @@ Easytier 也类似,只不过你需要分开部署。下面的步骤中,“
让该服务在开机时自动启动: 让该服务在开机时自动启动:
``` ```
sudo systemctl enable easytier-web sudo systemctl enable easytier-web-embed
``` ```
启动该服务: 启动该服务:
``` ```
sudo systemctl start easytier-web sudo systemctl start easytier-web-embed
``` ```
你可以使用下面的命令查看服务状态和日志: 你可以使用下面的命令查看服务状态和日志:
``` ```
systemctl status easytier-web systemctl status easytier-web-embed
journalctl -u easytier-web -f journalctl -u easytier-web-embed -f
``` ```
@ -341,15 +327,15 @@ Easytier 也类似,只不过你需要分开部署。下面的步骤中,“
### 使用 docker 部署 ### 使用 docker 部署
**注册 easytier-web** **注册 easytier-web-embed**
运行下面的命令启动 运行下面的命令启动
```bash ```bash
docker run -d --entrypoint easytier-web -v /yourpath/data:/app -p 11211:11211 -p 22020:22020/udp easytier/easytier:latest docker run -d --entrypoint easytier-web-embed -v /yourpath/data:/app -p 11211:11211 -p 22020:22020/udp easytier/easytier:latest
``` ```
主要就是重新指定了 entrypoint使用 easytier-web 启动 主要就是重新指定了 entrypoint使用 easytier-web-embed 启动
-v 路径映射根据自己的情况修改,/app 不要改,这个可以在 docker hub 上看到他默认的 workdir -v 路径映射根据自己的情况修改,/app 不要改,这个可以在 docker hub 上看到他默认的 workdir