一个开源、自托管的 Tailscale 控制服务器实现
一个开源、自托管的 Tailscale 控制服务器实现
许可
26.4k stars 1.4k forks Branches Tags Activity
juanfont/headscale
main
跳转到文件
文件夹和文件
| 名称 | 名称 | 最后提交信息 | 最后提交日期 | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | :----------- | | .github ".github" | .github ".github" | | | | cmd/headscale "This path skips through empty directories" | cmd/headscale "This path skips through empty directories" | | | | docs "docs" | docs "docs" | | | | gen "gen" | gen "gen" | | | | hscontrol "hscontrol" | hscontrol "hscontrol" | | | | integration "integration" | integration "integration" | | | | proto "proto" | proto "proto" | | | | .dockerignore ".dockerignore" | .dockerignore ".dockerignore" | | | | .envrc ".envrc" | .envrc ".envrc" | | | | .gitignore ".gitignore" | .gitignore ".gitignore" | | | | .golangci.yaml ".golangci.yaml" | .golangci.yaml ".golangci.yaml" | | | | .goreleaser.yml ".goreleaser.yml" | .goreleaser.yml ".goreleaser.yml" | | | | .prettierignore ".prettierignore" | .prettierignore ".prettierignore" | | | | CHANGELOG.md "CHANGELOG.md" | CHANGELOG.md "CHANGELOG.md" | | | | CODE_OF_CONDUCT.md "CODE_OF_CONDUCT.md" | CODE_OF_CONDUCT.md "CODE_OF_CONDUCT.md" | | | | CONTRIBUTING.md "CONTRIBUTING.md" | CONTRIBUTING.md "CONTRIBUTING.md" | | | | Dockerfile.derper "Dockerfile.derper" | Dockerfile.derper "Dockerfile.derper" | | | | Dockerfile.integration "Dockerfile.integration" | Dockerfile.integration "Dockerfile.integration" | | | | Dockerfile.tailscale-HEAD "Dockerfile.tailscale-HEAD" | Dockerfile.tailscale-HEAD "Dockerfile.tailscale-HEAD" | | | | LICENSE "LICENSE" | LICENSE "LICENSE" | | | | Makefile "Makefile" | Makefile "Makefile" | | | | README.md "README.md" | README.md "README.md" | | | | buf.gen.yaml "buf.gen.yaml" | buf.gen.yaml "buf.gen.yaml" | | | | config-example.yaml "config-example.yaml" | config-example.yaml "config-example.yaml" | | | | derp-example.yaml "derp-example.yaml" | derp-example.yaml "derp-example.yaml" | | | | flake.lock "flake.lock" | flake.lock "flake.lock" | | | | flake.nix "flake.nix" | flake.nix "flake.nix" | | | | go.mod "go.mod" | go.mod "go.mod" | | | | go.sum "go.sum" | go.sum "go.sum" | | | | mkdocs.yml "mkdocs.yml" | mkdocs.yml "mkdocs.yml" | | | | swagger.go "swagger.go" | swagger.go "swagger.go" | | |
查看所有文件
最新提交
历史
仓库文件导航
一个开源、自托管的 Tailscale 控制服务器实现。
加入我们的 Discord server 进行聊天。
注意: 始终选择与你使用的发布版本相同的 GitHub 标签,以确保你拥有正确的示例配置和文档。main
分支可能包含未发布的更改。
什么是 Tailscale
Tailscale 是 一个现代 VPN,构建在 Wireguard 之上。 它 像一个覆盖网络一样工作 在你网络的计算机之间 - 使用 NAT 穿透。
Tailscale 中的一切都是开源的,除了专有操作系统的 GUI 客户端(Windows 和 macOS/iOS)和控制服务器。
控制服务器用作 Tailscale 网络中节点的 Wireguard 公钥的交换点。 它分配客户端的 IP 地址,创建每个用户之间的边界,允许用户之间共享机器,并公开节点的通告路由。
一个 Tailscale 网络 (tailnet) 是 Tailscale 为用户分配的专用网络,以私人用户或组织的形式。
设计目标
Headscale 旨在实现 Tailscale 控制服务器的自托管开源替代方案。 Headscale 的目标是为自托管者和爱好者提供一个开源服务器,他们可以将其用于他们的项目和实验室。 它实现了一个狭窄的范围,一个 单 Tailscale 网络 (tailnet),适合个人使用或小型开源组织。
支持 Headscale
如果你喜欢 headscale
并且觉得它有用,仓库中提供了赞助和捐赠按钮。
功能
请参阅 文档中的 "功能"。
客户端操作系统支持
请参阅 文档中的 "客户端和操作系统支持"。
运行 headscale
请注意,我们不支持也不鼓励使用反向代理和容器来运行 Headscale。
请查看 文档。
演讲
- Fosdem 2023 (视频): Headscale: How we are using integration testing to reimplement Tailscale
- 由 Juan Font Alonso 和 Kristoffer Dalby 演讲
免责声明
此项目与 Tailscale Inc. 无关。
但是,Headscale 的一位活跃维护者 受雇于 Tailscale,并且他被允许花费工作时间为该项目做出贡献。 来自此维护者的贡献由其他维护者审查。
维护者共同努力设定项目的方向。 基本原则是为自托管者、爱好者和业余爱好者社区提供服务,同时拥有一个可持续的项目。
贡献
请阅读 CONTRIBUTING.md 文件。
要求
要为 headscale 做出贡献,你需要最新版本的 Go 和 Buf (Protobuf 生成器)。
我们建议使用 Nix 设置开发环境。 这可以使用 nix develop
完成,它将安装工具并为你提供一个 shell。 这保证了你将拥有与 headscale
维护者相同的开发环境。
代码风格
为了确保我们在越来越多的贡献中保持一致性,该项目采用了 linting 和风格/格式化规则:
Go 代码使用 golangci-lint
进行 linting,并使用 golines
(宽度 88) 和 gofumpt
进行格式化。 请配置你的编辑器以在开发时运行这些工具,并确保在提交任何代码之前运行 make lint
和 make fmt
。
Proto 代码使用 buf
进行 linting,并使用 clang-format
进行格式化。
其余 (Markdown、YAML 等) 使用 prettier
进行格式化。
查看 .golangci.yaml
和 Makefile
以查看特定配置。
安装开发工具
- Go
- Buf
- Protobuf 工具
安装并激活:
nix develop
测试和构建
项目的某些部分需要从 Protobuf 生成 Go 代码(如果在 proto/
中进行了更改),并且必须使用以下命令重新生成:
make generate
注意:请在单独的提交中检查来自 gen/
的更改,以便更易于审查。
要运行测试:
make test
要构建程序:
nix build
或者
make build
贡献者
使用 contrib.rocks 构建。
关于
一个开源、自托管的 Tailscale 控制服务器实现
主题
wireguard tailscale tailscale-control-server tailscale-server
资源
许可
Code of conduct
Stars
26.4k stars
Watchers
164 watching
Forks
1.4k forks
Releases 120
赞助此项目
Packages 0
Contributors 192
语言
Footer
© 2025 GitHub, Inc.
页脚导航
你现在无法执行该操作。