前提要点
- 使用Headscale v0.25.1自建tailscale服务端,配合Headplane v0.5.5实现Web UI管理你的服务,可以选择原生安装或 Docker 方式,具体方法视需求而定。
- 原生安装需要下载二进制文件并配置,Docker 安装则使用容器镜像,相对更易于管理。
- Headplane 需要配置与 Headscale 的连接,需确保网络和端口设置正确。
- 当然,使用Docker生产环境能更快速创建、删除,但原生安装对资源占用更低。
原生安装
Headscale v0.25.1
- 从 GitHub 发布页 下载适合您架构的 v0.25.1 二进制文件。
- 根据 示例配置 创建并编辑
config.yaml
文件。 - 运行二进制文件,这里我选择的是linux aamd64的文件,命令如下:
cd ~ mkdir -p headscale wget -O headscale_linux_amd64 https://github.com/juanfont/headscale/releases/download/v0.25.1/headscale_0.25.1_linux_amd64 sudo chmod +x headscale_linux_amd64 wget -O /etc/headscale/config.yaml https://github.com/juanfont/headscale/blob/v0.25.1/config-example.yaml ./headscale_linux_amd64 serve -c /etc/headscale/config.yaml
- 根据需要配置成系统服务
sudo vi /usr/lib/systemd/headscale.service [Unit] Description=headscale After=network.target [Service] Type=simple User=headscale Group=headscale WorkingDirectory=~/headscale ExecStop=/bin/kill $MAINPID ExecStart=headscale_linux_amd64 serve -c /etc/headscale/config.yaml Restart=always [Install] WantedBy=multi-user.target sudo systemctl enable --now headplane sudo systemctl status headplane
Headplane v0.5.5
- 检测所需环境
- Headscale 0.25或以上
- Nodejs 22或以上
- PNPM 10.x以上
- 正确配置的 config.yaml(https://raw.githubusercontent.com/tale/headplane/refs/tags/0.5.5/config.example.yaml) 文件
- 以下操作假设你安装 Nodejs PNPM,克隆 Headplane 仓库:
git clone https://github.com/tale/headplane cd headplane pnpm install pnpm build
- 运行应用:
node build/headplane/server.js
- 根据需要配置成系统服务
sudo vi /usr/lib/systemd/headplane.service [Unit] Description=Headplane After=network.target [Service] Type=simple User=headplane Group=headplane WorkingDirectory=~/headplane ExecStop=/bin/kill $MAINPID ExecStart=/usr/bin/node ~/headplane/build/headplane/server.js Restart=always [Install] WantedBy=multi-user.target sudo systemctl enable --now headplane sudo systemctl status headplane
- 配置
config.yaml
,设置headscale.url
为 Headscale 实例的 URL,例如本地运行时为https://localhost:8080
。
Docker 安装
Headscale v0.25.1
- 拉取官方镜像:
docker pull headscale/headscale:0.25.1
- 创建配置和数据目录:
cd ~ mkdir -p headscale/config mkdir -p headscale/data
- 下载并编辑示例配置:
wget -O headscale/config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/v0.25.1/config-example.yaml
- 运行容器:
docker run -d --name headscale \ -v $(pwd)/headscale/config:/etc/headscale \ -v $(pwd)/headscale/data:/var/lib/headscale \ -p 8080:8080 \ headscale/headscale:0.25.1 serve
Headplane v0.5.5
- 克隆仓库并切换版本:
cd ~ git clone https://github.com/tale/headplane cd headplane git checkout v0.5.5
- 构建 Docker 镜像:
docker build -t headplane:v0.5.5 .
- 创建配置目录并编辑:
mkdir -p headplane/config cp config.example.yaml headplane/config/config.yaml
- 确保
config.yaml
中headscale.url
设置正确。 - 运行容器:
docker run -d --name headplane \ -v $(pwd)/headplane/config:/etc/headplane \ -p 3000:3000 \ headplane:v0.5.5
- 安全考虑
- 生产环境中建议使用 HTTPS,确保 Headscale 和 Headplane 均配置 SSL/TLS。Headscale 支持通过配置启用 HTTPS,Headplane 可通过反向代理(如 Nginx)实现。
- 示例反向代理配置可参考 Headplane 文档,但需确保 CORS 设置正确。
- 端口冲突:Headscale 默认使用 8080,Headplane 使用 3000,确保主机或容器端口不冲突。
- 版本兼容性:确保 Headscale v0.25.1 与 Headplane v0.5.5 兼容,参考 CHANGELOG 确认。
意外细节
一个可能未预料到的细节是,Headplane 的 Docker 镜像需用户自行构建(基于 GitHub 仓库),而非直接从 Docker Hub 拉取官方镜像,这可能增加初次部署的复杂性。
官方文档参考
转载请注明:TUTERM.COM » 使用Headscale v0.25.1自建tailscale服务端,配合Headplane v0.5.5实现Web UI管理你的服务