普通的使用方式之前写过一篇文章:开源组网工具-easytier
但是试想一下如果你有 100 个 easytier 节点,现在想批量修改一个配置,那是比较痛苦的事情。easytier-web 就是个管理控制台,可以统一在控制台管理所有节点的配置。
搭建 easytier-web 服务 官方提供的有两种服务,官方文档在:https://easytier.cn/guide/network/web-console.html
EasyTier 的 web 控制台有 2 个版本:
easytier-web(仅 web api 后端)
easytier-web-embed(web 前端 + web api 后端)
如果你只搭建 web api 后端的话,需要登录官方的前端,api 配置你的后端地址,不过都选择自建了,那就前后端一起部署吧。
我是用 docker 搭建的,但是官方的 docker 镜像写死了 entrypoint 是 easytier-core ,不能启动 easytier-web 服务,所以自己构建镜像。
dockerfile 避免镜像变大,我使用多阶段构建。
1 2 3 4 5 6 7 8 FROM alpine:latest AS downloaderADD https://github.com/EasyTier/EasyTier/releases/download/v2.6.1/easytier-linux-x86_64-v2.6.1.zip / RUN unzip /easytier-linux-x86_64-v2.6.1.zip && \ mv /easytier-linux-x86_64 /easytier FROM alpine:latestCOPY --from=downloader /easytier /easytier WORKDIR /easytier
启动服务 1 2 3 4 5 6 7 8 9 10 11 12 13 docker run --name easytier-web -d \ -e TZ=Asia/Shanghai \ --network iuxt \ -p 22020:22020/udp \ -v ./data:/easytier/data \ --restart=always \ iuxt/easytier:2.6.1 \ /easytier/easytier-web-embed \ --db /easytier/data/et.db \ --api-server-port 11211 \ --api-host https://et.example.com \ --config-server-port 22020 \ --config-server-protocol udp
说明
我指定了 docker network ,是为了和 nginx 镜像放在同一个网络下,入口统一是 nginx,配置 tls 证书和 mtls 双向认证。
udp 22020 端口是分发配置的端口,映射到公网。
data 目录存储的是数据库,记录的是控制台账号密码以及机器的配置信息。
--api-server-port 11211 这个是指定的 web 控制台界面的端口。
--api-host https://et.example.com 这个是对外的控制台地址。
配置 nginx 入口 控制台我用了 nginx 反向代理,有两个好处:
可以配置 tls 证书,https 安全访问。
配置 mtls 双向认证,只有携带客户端证书才可以访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 server { listen 443 ssl; server_name et.example.com; client_max_body_size 0; ssl_certificate ssl/example.com.crt; ssl_certificate_key ssl/example.com.key; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; ssl_client_certificate ssl/ca.crt; # 配置 CA 证书,用于验证客户端证书的签发者 ssl_verify_client on; # 启用客户端证书验证 ssl_crl ssl/crl.pem; # 配置 CRL 文件路径,用于检查吊销的证书 location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_convert_head off; proxy_connect_timeout 300; proxy_http_version 1.1; proxy_set_header Connection ""; chunked_transfer_encoding off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://easytier-web:11211; } }
客户端接入 客户端启动的时候,只需要指定参数即可接入。
1 2 3 4 5 6 7 8 docker run --name easytier-core -d \ --network host \ -e TZ=Asia/Shanghai \ -v /etc/machine-id:/etc/machine-id \ --privileged \ --restart=always \ easytier/easytier:v2.6.1 \ -w udp://et.example.com:22020/yourusername
说明:
挂载了/etc/machine-id,控制台上的 machine id 是根据这个生成的,为了避免容器重新创建的时候 id 发生变化,所以挂载此文件,或者手动指定 machine id ,增加参数:--machine-id 。
-w udp://et.example.com:22020/yourusername 这里是控制台的配置下发地址,和你的控制台上注册的用户名。
控制台设置 第一步先注册、登录控制台。 接入了节点后,在控制台可以看到节点的信息:
点击设置按钮,create network,配置好后点击保存即可。后续可以在控制台修改配置,无须更新节点。