Loading...

文章背景图

headscale:自托管 Tailscale 控制服务器部署指南

2026-10-27
0
- 字
- 分钟
|

headscale 是 Tailscale 控制服务器的开源自托管实现,目标是为自托管爱好者提供一个开源、可自建的 Tailscale 控制面。它实现一个独立的 tailnet,适合个人或小团队使用。

一、项目官方信息

项目 信息
GitHub 仓库 https://github.com/juanfont/headscale
官方文档 https://headscale.net/stable/
开源协议 BSD-3-Clause
主要语言 Go(约 98.8%)
Star 数 约 45.0k

注意:headscale 与 Tailscale Inc 无官方关系,但有一名活跃维护者受雇于 Tailscale。

二、官方图片

headscale 官方 Logo:

headscale

三、环境要求

  • Linux 服务器(官方推荐直接跑二进制,不鼓励反代/容器)。
  • 公开域名(用于 TLS 与客户端发现)。
  • 反向代理(可选,但官方不鼓励)。
  • SQLite/PostgreSQL(默认 SQLite)。

四、完整部署步骤

1. 下载二进制

到 https://github.com/juanfont/headscale/releases 下载对应版本:

wget https://github.com/juanfont/headscale/releases/download/v0.24.0/headscale_0.24.0_linux_amd64.deb
sudo dpkg -i headscale_0.24.0_linux_amd64.deb

或用 tar.gz。

2. 配置

编辑 /etc/headscale/config.yaml(或 config-example.yaml):

server_url: https://hs.example.com:8443
listen_addr: 0.0.0.0:8443
metrics_listen_addr: 127.0.0.1:9090
db_type: sqlite3
db_path: /var/lib/headscale/db.sqlite
base_domain: example.com

3. 启动

sudo headscale serve

systemd:

sudo systemctl enable --now headscale

4. 创建用户(tailnet)

sudo headscale users create myuser

5. 注册节点

在客户端生成注册命令:

sudo headscale nodes register --user myuser --key <client-key>

或在客户端用 --login-server 启动后授权:

tailscale up --login-server https://hs.example.com:8443

6. 查看节点

sudo headscale nodes list

五、使用方法

常用命令

headscale users list
headscale nodes list
headscale nodes expire <id>
headscale nodes delete <id>
headscale preauthkeys create --user myuser

预授权密钥

为自动注册生成一次性密钥:

headscale preauthkeys create --user myuser --expiration 1h

客户端:

tailscale up --login-server https://hs.example.com:8443 --authkey <key>

路由与出口节点

在 headscale 中批准路由:

headscale nodes routes list <id>
headscale nodes routes approve <id> <route>

客户端支持

Linux/macOS/Windows/iOS/Android 客户端均可对接,详见 https://headscale.net/stable/about/clients/ 。

六、常见问题 FAQ

1. 官方不推荐 Docker? README 明确说不支持/不鼓励反代与容器方式,建议直接跑二进制。

2. 客户端连不上? 确认 server_url 可达;TLS 证书有效;客户端 --login-server 地址正确。

3. 如何升级? 下载新版本二进制替换,重启服务;数据库自动迁移。

4. 支持多 tailnet 吗? 设计上是单 tailnet(多 user),适合个人/小团队。

5. 与官方 Tailscale 兼容吗? 客户端协议兼容,但控制面功能可能滞后于官方。

6. 如何开发? 需 Go 最新版 + Buf;用 nix develop 准备环境。

七、跳转链接

评论交流

文章目录