Headscale使用gRPC API

背景

最近在开发一个 Headscale 控制管理平台用来管理用户创建、设备管理等等。但是当我试用了 Headscale 官网推荐的几个 UI 程序后,发现它们离我预期的功能还相差很多。我试用的几个 Headscale UI 程序,都使用 REST APIHeadscale 进行通信,但是我遇到一个问题,在高版本 Headscale(0.25.1及以上) 中,REST API 不能创建带 NamespacedisplayName 的用户。

所以我就通过搜索引擎查找关于 Headscale REST API 创建 带租户的用户名,发现了以下两个链接:

知道, Headscale 提供 gRPC API 提供 用户 displayName 创建。不过互联网上关于 Headscale gRPC API 的资料少之又少,跟别提 demo 程序了。

一番检索之后,我发现只能自己来完成这项工作了,并且在程序开发完成后,将 Headscale 一部分管理控制功能开源出来。

开发

知道使用 gRPC API 可以创建带 displayName 的用户后,后面的开发就简单多了,是的,全部交给 AI 来完成。

不过 AI 的知识库没有那么多新内容,在处理 gRPC 返回格式时一直出现错误。此时我们需要把 HeadscaleGithub 相关链接告诉它,并且提供 gRPC 返回的数据格式,AI 就顺利的完成了整个代码编写。 后续我自己进行相关测试即可。

开源

由于关于 Headscale gRPC API 功能的说明文档以及示例代码很少,所以我就准备将这部分开源出来。

开源的程序有 两套,一套是基于 headscale-admin 添加的 gRPC 功能,这是一个纯 NodeJS 项目;另一套是 Java 程序,纯后端,没有前端配套界面。