headscale原始仓库: juanfont/headscale: An open source, self-hosted implementation of the Tailscale control server (github.com)
其实安装的话只需要按照这个教程走就可以了:
Tailscale 基础教程:Headscale 的部署方法和使用教程 – 云原生实验室(icloudnative.io)
但是我想启用ssl, 可是Headscale实现的challenge需要占用我的80端口, 索性还是用Nginx做反代进行安装吧.
关于headscale的配置
基本上配置就按照官方给出的示例填写即可, 有两个地方注意一下:
- 禁用自带的acme工具, 防止其因获取证书失败而无法启动
tls_letsencrypt_hostname: ""
- server_url使用HTTPS协议
server_url: https://your_domain_here
# Address to listen to / bind to on the server
listen_addr: 0.0.0.0:8080
关于Nginx的配置
只需要在vhost里面添加wss的代理转发即可:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:8080/;
# try_files $uri $uri/ =404;
}
参考: Nginx如何配置Http、Https、WS、WSS? - 冰河团队 - 博客园 (cnblogs.com)
当然可能还有其它的注意事项, 我也没怎么细看, 反正这样能用就是了. 至于如何确认能用呢? 可以试试访问: https://your_admin_here:port/apple. 如果能正常显示苹果设备连接帮助的话大概就是可以了.
关于调试
一开始我也不知道使用Nginx做反代还需要转发wss, 在Windows上看了tailscale的log才知道原来还需要转发wss才可以.
在Windows 10上, Tailscale service的日志存储在C:\ProgramData\Tailscale\Logs, 客户端的日志存储在%appdata%\..\Local\Tailscale. 如果遇到表现不正常的话可以查看log排查问题.
关于Windows上遇到的问题
如果在部署headscale之前就已经在电脑上使用过Tailscale的话, 参照官方安装教程安装后是无法启动Tailscale的. 它只会在右下角的托盘处显示:
Please restart the Tailscale Windows Service
纵使你如何重启Tailscale服务都无济于事, 即使是重装Tailscale客户端也不行. 不过在Tailscale仓库的issue中找到了该问题的解决办法. 方法就是, 清空Tailscale的客户端日志就可以啦.
关于Android上遇到的问题
当手机上已经在运行了一个VPN应用(例如clash)时, 使用FZR-forks的修改版安卓APP登录headscale, 即使是在后台认证了node, 它好像也不会自动连接. 初步排查原因就是VPN位置被占用, 所以使用该安卓APP前应该关闭手机上的VPN软件, 才能进行登录操作.