共计 2349 个字符,预计需要花费 6 分钟才能阅读完成。
针对之前的教程 Docker 搭建 headscale 异地组网完整教程,由于再次自建 headscale 某些内容已经不适用,并且使用的面板也发生了改变,所以准备再次记录一下搭建较新版本的 headscale。
- headscale 配置文件
注意这里 headscale.example.com 修改为自己的域名。
# 下载配置文件
mkdir -p /home/docker/network/headscale/config && \
mkdir -p /home/docker/network/headscale/data && \
touch /home/docker/network/headscale/data/db.sqlite && \
wget https://github.com/juanfont/headscale/raw/v0.27.1/config-example.yaml -O /home/docker/network/headscale/config/config.yaml
# 修改配置
sed -i 's/127.0.0.1/0.0.0.0/g' /home/docker/network/headscale/config/config.yaml
sed -i 's#http://0.0.0.0:8080#https://headscale.example.com#g' /home/docker/network/headscale/config/config.yaml
sed -i 's/randomize_client_port: false/randomize_client_port: true/' /home/docker/network/headscale/config/config.yaml
- headplane 配置文件
# 下载配置文件
mkdir -p /home/docker/network/headplane/config && \
wget https://github.com/tale/headplane/raw/v0.6.1/config.example.yaml -O /home/docker/network/headplane/config/config.yaml
# 修改配置
sed -i "s|cookie_secret:.*|cookie_secret: \"$(openssl rand -base64 24 | cut -c1-32)\"|" /home/docker/network/headplane/config/config.yaml
sed -i 's|http://headscale:5000|http://headscale:8080|g' /home/docker/network/headplane/config/config.yaml
# 删除 oidc 相关内容,防止报错
sed -i '/^oidc:/,/^[^[:space:]]/d' /home/docker/network/headplane/config/config.yaml
- docker-compose 文件
services:
headscale:
image: headscale/headscale:0.27.1
container_name: headscale
restart: unless-stopped
command: serve
labels:
me.tale.headplane.target: headscale
ports:
- 127.0.0.1:18080:8080
volumes:
- './headscale/config:/etc/headscale'
- './headscale/data:/var/lib/headscale'
- './headscale/run:/var/run/headscale'
headplane:
image: ghcr.io/tale/headplane:0.6.1
container_name: headplane
restart: unless-stopped
ports:
- 127.0.0.1:13000:3000
volumes:
- './headplane/config/config.yaml:/etc/headplane/config.yaml'
- './headscale/config/config.yaml:/etc/headscale/config.yaml'
- './headplane/data:/var/lib/headplane'
- '/var/run/docker.sock:/var/run/docker.sock:ro'
- 创建 apikey
作为面板,Headplane 需使用 API Key 连接 Headscale,否则无法通过鉴权。
docker exec -it headscale headscale apikeys create
tXz4PVY.CJnpTSKGivoafNobanr2POSnYWfqtrRr
浏览器打开 https://headscale.example.com/admin,输入上面得到的 API Key,可以在网页管理已加入的客户端,创建用户、预授权密钥等。

- 创建用户和预授权密钥
这里可以根据自己需要设置密钥过期时间和是否可重复使用,我为了方便就设置了一个比较长的时间,并且可以重复使用。
docker exec -it headscale headscale users create xxx && \
docker exec -it headscale headscale preauthkeys create -e 10000d --reusable -u 1
这里将得到预授权密钥,就可以给客户端使用了。
具体看:Docker 搭建 headscale 异地组网完整教程 里面的第五节客户端安装。
AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完