type
status
date
slug
summary
tags
category
icon
password

1、目标
根据该教程,最终可以完成:
- 搭建自己的 Headscale:通过 Headscale 管理自己的节点。
- 搭建自己的 DERP 服务:通过自己搭建的 DERP 节点加速节点之间的访问。
- 部署 Caddy 服务:通过 Caddy 完成反向代理。
如果你不需要使用自己的 Headscale 管理自己的节点,只需要加速,那么只需要部署 DERP 服务即可。
本文中的 docker-compose 的代码仓库:

headscale
Github
headscale
Owner
xpzouyingUpdated
Jan 9, 20252、准备
- 一台云服务器:必须。
- 作用:部署服务。
- 性能要求:入门款即可,我自己的服务器是:1C2G,2M带宽的入门款。
- 一个域名:在该教程中必须,没有域名的话,可能也可以,但是我没有尝试过。
- 可能需要备案。
在该教程中的域名会假设
zouying.com
,该域名在部署时更换成你的域名。3、部署
3.1、部署说明
在整个部署环节会使用 Docker 进行部署和管理,所以要求:
- 云主机上安装好了 Docker 服务。
在部署中使用 Caddy2 进行反向代理,实际上使用它的主要作用是使用它帮我们申请 https 的证书。
最终整个网络的架构示意图如下,

说明:
- headscale-network:docker network,所有的容器都挂载在它上面。
- Caddy:反向代理管理。
- headscale.zouying.com - 指向 Headscale 服务。
- derper.zouying.com - 指向 DERP 服务。
配置域名解析:
将 headscale, derper 的子域名分别指向你的云服务器。
以 CloudFlare 为例,

3.2、创建 Docker 网络
运行效果,

3.3、部署 Headscale
目的:在云主机上完成 Headscale 的部署。
效果:部署完成后,可以通过 Headscale 管理自己的节点。
Headscale 的 docker 数据都放到 headscale 目录统一管理,其中包括:
- docker-compose.yaml
- container-data - headscale 的数据文件,包括数据库文件、密钥等。
- container-config - headscale 配置文件,类似于 /etc/headscale/ 中的配置文件。
1)创建 docker-compose.yaml
创建 docker-compose.yaml,内容如下,
2)Headscale 配置文件
在 docker-compose.yaml 同级目录下,创建 2 个文件夹,
从 
下载 headscale 服务的配置文件,
headscale
Github
headscale
Owner
juanfontUpdated
Oct 27, 2023- config-example.yaml 路径:https://github.com/juanfont/headscale/blob/main/config-example.yaml
将该文件保存到:container-config/config.yaml。
变更 config.yaml 的部分配置(其他都不变)
3)启动 headscale 服务
经过上面配置后,目录内容如下,

启动 docker 实例,
运行结果:成功。

4)配置 Caddy 反向代理
此时 headscale 实例部署成功,但是因为我们没有将容器的端口暴露出来,所以需要使用 Caddy 反向代理到 headscale 实例的 8080 端口上。

3.4、部署 Caddy 服务
1)目的
- HTTPS 证书自动申请。
- 反向代理到 docker 实例的端口。
2)docker-compose.yaml
所有 Caddy 的文件都放到放到 caddy/ 目录下管理,创建 caddy/docker-compose.yaml 文件,内容如下,
同上一样,创建两个目录:
- container-data/
- container-config/

3)Caddy 配置文件
编辑 container-config/Caddyfile 内容,编辑如下,
说明:
- 将 headscale.zouying.com 代理到 headscale 实例的 8080 端口。
4)启动 Caddy 实例
运行命令,
运行结果:成功。

效果
可以打开下列地址验证是否配置成功,
- headscale.zouying.com/apple - MacOS 连接 headscale 服务的教程。
- headscale.zouying.com/windows
我使用的是 MacOS,所以下面的教程都是使用 MacOS 为例,Windows 系统类似。
打开 headscale.zouying.com/apple 页面,

可以看到,
- HTTPS 证书成功配置。这里是通过 Caddy 申请。
- MacOS 接入 Headscale 的教程。我们的 Tailscale 版本是:Version 1.44.0 (App Store),所以按照第一部分教程进行接入。
4、Headscale 管理节点
通过上面的教程,已经完成了 Headscale 服务的部署,接下来对自己的节点进行管理。通过这节内容,你可以完成:
- 完成 Headscale 的配置管理:
- 用户管理
- 节点管理
注意:headscale 命令都是直接通过 headscale docker 实例运行。
比如,查看当前 headscale 管理的节点,
结果如下,

4.1、Headscale 创建用户信息
使用 headscale 实例创建用户信息,
- 新建 user:新建用户。旧版本中是 namespace:用户空间,每一个用户有个用户空间。
- 新建 user preauthkey:我们使用 preauthkey 的方式添加用户的节点
1)创建 namespace
运行结果:

2)创建用户 preauthkey
添加节点时,我们使用预授权 key 的方式添加节点。需要注意:
- preauthkey 有过期时间,太久没有使用该 key 添加节点的话,key 就自动过期了。
- 一个 key 最多只能添加一个节点,如果要添加新节点,则创建新的 key。
创建新的 preauthkey
运行结果:

4.2、添加节点
将我们家里的一台内网机器添加到 Headscale 中管理。
1)添加 Linux 节点
(这里运行在家里的 Linux 节点)
使用刚才创建的 key,将家里的机器添加到 Headscale 中管理。
运行结果:

2)查看添加的节点
(这里运行在部署 Headscale 服务的公有云)
运行结果:

3)添加 MacOS 节点
介绍如何将我的 Macbook 添加到 Headscale 上管理。
前提:
- MacOS 已经安装好 Tailscale
按住 OPTION键 + Tailscale 在任务栏的图标,点击 Debug 菜单,选择 Add Account 选项。

填入 headscale 的地址,

添加成功后,会自动弹出一个 headscale 页面,指导我们如何在 headscale 服务端新增该 MacOS 节点。
弹出页面如下,

回到 headscale 云服务器上,运行下列命令添加 MacOS 节点,
运行结果:

4)测试
Linux 节点
运行结果如下,

MacOS 节点
在命令行中查看,(或者直接在菜单栏上的图标查看)
5、总结
通过上面的教程,我们完成了:
- Caddy 反向代理的配置
- Headscale 服务的搭建及配置
- 自己节点的添加
下一篇文章将教大家如何创建自己的 DERP 节点进行加速。
- 作者:zouying
- 链接:https://haha.ai/headscale
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章