该解决方法部分来自:
为啥部署headscale
或许大家都有听过zerotier,一个用来组虚拟局域网(或者说直白就是个VPN)的东西
但是zt官方服务器的访问实在是令人无奈,这时候就有一个解决方案,就是搭建一个planet服务器
不过我个人又需要用到如zeronsd这样的服务来配置一个DNS,这样就不用在一堆ip里面找了
但是问题就出来了,ZNSD对于自建planet的配置不太友好,至少我没设置成功,各位会的大佬麻烦浇浇(?
那么我们就可以转换思路,选择zt的亲兄弟---- tailscale
不过问题也出现了, tailscale在我这边也是一坨(x
所以改成他的自部署服务: Headscale在国内部署一遍
部署 - 需要一步到位的请看总结
作为docker忠实用户(划掉) 看到可以使用docker部署那肯定要试一试
但是这不尝试不知道,他这个社区贡献是真的纯纯社区啊(划掉
第一个坑 - docker-compose
首先让我们跳过安装docker和docker-compose的步骤(不会的出门右转装1Panel用(嗯)
这个是官方给出的docker compose文件
version: "3.7"
services:
headscale:
image: headscale/headscale:0.22.3
restart: unless-stopped
container_name: headscale
ports:
- "0.0.0.0:8080:8080"
- "0.0.0.0:9090:9090"
volumes:
# pls change [config_path] to the fullpath of the config folder just created
- [config_path]:/etc/headscale
command: headscale serve
但是很快在部署之后就会愉快的发现,这玩意跑不起来
为什么呢
因为官方的compose里是少给了个/var/lib/headscale/的挂载 (虽然棺方说了要把配置文件里的var/lib路径全部改成/etc,但是何必呢)
顺便一提,正常来说9090是不需要开的,不过我还是开了(
缝缝补补就是
version: '4.1'
services:
headscale:
image: headscale/headscale:0.22.3
container_name: headscale
command: headscale serve
restart: unless-stopped
volumes:
- /opt/headscale/config/:/etc/headscale/
- /opt/headscale/data/:/var/lib/headscale/
ports:
- "8080:8080"
- "9090:9090"
那么第一个坑是跳过去了
第二个坑 - 配置文件
在我们改好docker compose之后,就继续跟着棺方文档走
(Strongly Recommended) Download a copy of the example configuration from the headscale repository.
wget -O ./config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml
然后等下完了改完配置文件, 一运行又炸了
这个实际问题是因为他的配置文件是会跟着版本变动的...
如果你直接按着他的来就会发现headscale不认配置文件
正确的步骤应该是
wget -O ./config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/v0.22.3/config-example.yaml
随后,我们只需要稍微修改配置文件
比如 server_url: 是必须要改的,我这里改成
server_url: https://headscale.owk.ink/
(我是配置了Nginx反代和ssl证书的,如果你没配置的话就改成)
server_url: http://IP:8080
然后是MagicDNS
比如我这里改成:
magic_dns: true
base_domain: fu.rs
那么在连接到headscale网络之后就可以用<hostname>.<username>.fu.rs来访问了
这个域名不需要是你自己的,只要他是一个域名就行
随后是ip分配,它默认是v6排在前面,我这里给他改成先分配v4了
ip_prefixes:
- 100.64.0.0/10
- fd7a:115c:a1e0::/48
注意: 如果你在上一步和我一样修改过了/var/lib/headscale的挂载,就不要修改配置文件中的文件路径总结
安装Docker和DockerCompose
创建 /opt/headscale/config/ 和 /opt/headscale/data/ 两个目录
运行
wget -O /opt/headscale/config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/tag/v0.22.3/config-example.yaml
修改 /opt/headscale/config/config.yaml:
server_url: http://IP:8080
magic_dns: true
base_domain: anydomain.com
ip_prefixes:
- 100.64.0.0/10
- fd7a:115c:a1e0::/48
使用以下docker-compose启动容器
version: '4.1'
services:
headscale:
image: headscale/headscale:0.22.3
container_name: headscale
command: headscale serve
restart: unless-stopped
volumes:
- /opt/headscale/config/:/etc/headscale/
- /opt/headscale/data/:/var/lib/headscale/
ports:
- "8089:8080"
- "9090:9090"
运行成功
现在你可以根据棺方文档继续操作了(
最后
感觉可能不如直接deb安装(
但是用docker compose等下部署webui就方便多了:)