安装headscale

官方文档
https://github.com/juanfont/headscale/blob/main/docs/running-headscale-linux.md

1. 下载编译好的二进制程序

wget --output-document=/usr/local/bin/headscale \
   https://github.com/juanfont/headscale/releases/download/v0.17.0-beta4/headscale_0.17.0-beta4_linux_amd64

 https://github.com/juanfont/headscale/releases/download/v0.17.0-beta5/headscale_0.17.0-beta5_linux_amd64

根据实际情况,修改下载地址

下载地址 可以在 https://github.com/juanfont/headscale/releases 查看

2. 加上可执行属性

chmod +x /usr/local/bin/headscale

3. 创建必要的目录来 存储配置文件和数据库, 创建一个headscale用户(创建用户可以选做)

# Directory for configuration

mkdir -p /etc/headscale

# Directory for Database, and other variable data (like certificates)
mkdir -p /var/lib/headscale


# or if you create a headscale user:
useradd \
	--create-home \
	--home-dir /var/lib/headscale/ \
	--system \
	--user-group \
	--shell /usr/bin/nologin \
	headscale

4. 生成空的数据库文件

touch /var/lib/headscale/db.sqlite

5. 下载配置文件,放到合适的目录

wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O /etc/headscale/config.yaml

6. 修改配置文件

server_url:  https://headscale.softs.im
listen_addr: 127.0.0.1:8080
grpc_listen_addr: 0.0.0.0:50443
grpc_allow_insecure: true    这个应该保持为false
private_key_path: /var/lib/headscale/private.key
private_key_path: /var/lib/headscale/noise_private.key
db_path: /var/lib/headscale/db.sqlite
unix_socket: /var/run/headscale.sock
randomize_client_port: true      随机端口 这个设置建议打开,否则同一个内网中多个终端会有问题

其实没有怎么修改, 主要是修改了 server_url, 几个文件型的路径,都按照注释里给的建议,进行修改的

因为服务器还跑了其他网站,也要占用443端口, 所以 我用caddy进行反向代理, listen_addr地址设置为 127.0.0.1:8080

7. 临时让 服务跑在tmux里,方便调试

#  headscale serve

8. 切到tmux另外的标签,以普通用户运行

$  curl http://127.0.0.1:9090/metrics

应该可以看到正常运行

9. 创建namespace, 也就是创建一个网络, 等下其他节点都加入进来

headscale namespaces create softeam
查看命令空间


10. 注册一个客户端
1) 在客户端机器上执行

       tailscale up --login-server YOUR_HEADSCALE_URL

2) 在 headscale服务器上确认

headscale --namespace myfirstnamespace      nodes register --key nodekey:the_key

也可以用预授权的方法
服务器上执行

headscale --namespace myfirstnamespace preauthkeys create --reusable --expiration 24h

客户端上执行

tailscale up --login-server YOUR_HEADSCALE_URL --authkey  YOUR_AUTH_KEY

11. 改用systemd的方式 而不是tmux的方式,执行在后台
创建一个 /etc/systemd/system/headscale.service 文件, 内容为

[Unit]
Description=headscale controller
After=syslog.target
After=network.target

[Service]
Type=simple
User=headscale
Group=headscale
ExecStart=/usr/local/bin/headscale serve
Restart=always
RestartSec=5

# Optional security enhancements
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/headscale /var/run/headscale
AmbientCapabilities=CAP_NET_BIND_SERVICE
RuntimeDirectory=headscale

[Install]
WantedBy=multi-user.target

12. 将当前用户添加到 headscale 组

usermod -a -G headscale current_user

或者将之后的所有命令都切换到 headscale分生执行

su - headscale

13. 将 /etc/headscale/config.yaml 配置中的

unix_socket: /var/run/headscale/headscale.sock

14. 启动 并验证

systemctl daemon-reload
systemctl enable --now headscale
systemctl status headscale
curl http://127.0.0.1:9090/metrics

15 . 其他命令

查看网络/空间
headscale namespaces list


查看所有节点
headscale nodes  list 


删除 ID为1 的节点机器
headscale nodes  delete  -i 1


查看日志

journalctl -xefu headscale


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注