juanfont / headscale 公开

一个开源、自托管的 Tailscale 控制服务器实现

许可

BSD-3-Clause license

26.4k stars 1.4k forks Branches Tags Activity

juanfont/headscale

main

BranchesTags

跳转到文件

文件夹和文件

| 名称 | 名称 | 最后提交信息 | 最后提交日期 | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | :----------- | | .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" | | |

查看所有文件

最新提交

历史

3,385 Commits

仓库文件导航

headscale logo ci

一个开源、自托管的 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。

请查看 文档

演讲

免责声明

此项目与 Tailscale Inc. 无关。

但是,Headscale 的一位活跃维护者 受雇于 Tailscale,并且他被允许花费工作时间为该项目做出贡献。 来自此维护者的贡献由其他维护者审查。

维护者共同努力设定项目的方向。 基本原则是为自托管者、爱好者和业余爱好者社区提供服务,同时拥有一个可持续的项目。

贡献

请阅读 CONTRIBUTING.md 文件。

要求

要为 headscale 做出贡献,你需要最新版本的 GoBuf (Protobuf 生成器)。

我们建议使用 Nix 设置开发环境。 这可以使用 nix develop 完成,它将安装工具并为你提供一个 shell。 这保证了你将拥有与 headscale 维护者相同的开发环境。

代码风格

为了确保我们在越来越多的贡献中保持一致性,该项目采用了 linting 和风格/格式化规则:

Go 代码使用 golangci-lint 进行 linting,并使用 golines (宽度 88) 和 gofumpt 进行格式化。 请配置你的编辑器以在开发时运行这些工具,并确保在提交任何代码之前运行 make lintmake fmt

Proto 代码使用 buf 进行 linting,并使用 clang-format 进行格式化。

其余 (Markdown、YAML 等) 使用 prettier 进行格式化。

查看 .golangci.yamlMakefile 以查看特定配置。

安装开发工具

安装并激活:

nix develop

测试和构建

项目的某些部分需要从 Protobuf 生成 Go 代码(如果在 proto/ 中进行了更改),并且必须使用以下命令重新生成:

make generate

注意:请在单独的提交中检查来自 gen/ 的更改,以便更易于审查。

要运行测试:

make test

要构建程序:

nix build

或者

make build

贡献者

使用 contrib.rocks 构建。

关于

一个开源、自托管的 Tailscale 控制服务器实现

主题

wireguard tailscale tailscale-control-server tailscale-server

资源

Readme

许可

BSD-3-Clause license

Code of conduct

行为准则

Activity

Stars

26.4k stars

Watchers

164 watching

Forks

1.4k forks

报告仓库

Releases 120

v0.25.1 最新 Feb 25, 2025

+ 119 releases

赞助此项目

Packages 0

Contributors 192

+ 178 contributors

语言

Footer

© 2025 GitHub, Inc.

页脚导航

你现在无法执行该操作。