Headscale 的部署方法和使用教程

要求

只要满足以下要求,Headscale 就应该工作:

  • 具有 headscale 公共 IP 地址的服务器。建议使用公共 IPv4 和公共 IPv6 地址的双堆栈设置。
  • Headscale 通过端口 443 上的 HTTPS 提供服务。
  • 一个基于 Linux 的操作系统。本次部署环境为Ubuntu22.04。
  • 了解 Linux 以及 网络 基础知识
  • 一个用于运行 Headscale 的专用本地用户账户。
  • 一个域名以及对应的域名证书(crt+key)

使用 Debian/Ubuntu 的软件包

  1. 下载您平台上的最新 headscale 软件包(Ubuntu 和 Debian 使用 .deb 格式)。

  2. 安装 headscale:

    bash 复制代码
    sudo apt install ./headscale.deb
  3. 通过编辑配置文件来配置 headscale

    arduino 复制代码
    sudo vim /etc/headscale/config.yaml
  4. 启用并启动 headscale 服务:

    bash 复制代码
    sudo systemctl enable --now headscale
  5. 验证 headscale 是否按预期运行:

    lua 复制代码
    sudo systemctl status headscale

配置模板

yaml 复制代码
```
# 服务地址 采用域名或者ip形式
# server_url: http://10.10.10.10:9999
server_url: https://xxx.euyan.cloud:9999

# 生产环境配置为0.0.0.0
listen_addr: 0.0.0.0:9999
metrics_listen_addr: 0.0.0.0:9090
grpc_listen_addr: 0.0.0.0:50443

# 私网地址
prefixes:
  v4: 100.64.0.0/10

# 如果采用https 需要配置ssl证书
tls_cert_path: "/etc/headscale/xxx.euyan.cloud.pem"
tls_key_path: "/etc/headscale/xxx.euyan.cloud.key"

# DNS部分 可修改为国内dns
dns:
  magic_dns: true
  base_domain: example.com
  override_local_dns: false
  nameservers:
    global:
      - 114.114.114.114
      - 8.8.8.8
    split: {}
  search_domains: []
  extra_records: []

```

常用命令

bash 复制代码
```
# 创建用户
headscale users create mynetwork

# 查看用户列表
headscale users list

# 创建预共享密钥
headscale preauthkeys create --user 1

# 客户端通过服务地址以及密钥进行注册
tailscale up --login-server=http://「地址」 --authkey=「密钥」

# 清楚用户信息
headscale users destroy --name REDMIK70

# 查看节点列表
headscale nodes list

# 基于ID删除节点
headscale nodes delete -i 3

# 修改节点名称 [名称必须为小写]
headscale nodes rename lenovo-r7000p -i 5
```

配置举例

为用户K001分配预共享密钥 K001进行注册操作

ini 复制代码
```
# 第一步 创建用户
headscale users create K001

# 第二步 创建密钥
headscale preauthkeys create --user 1

# 第三部 客户端注册
tailscale up --login-server=http://172.16.40.227:9999 --authkey=a2bd538966bbe17fe41ba49f175c50f2d4be33131893bae9

# 第四步 查看节点
headscale nodes list
```

更新时区以及同步时间

csharp 复制代码
sudo timedatectl set-timezone Asia/Shanghai

sudo timedatectl set-ntp on

timedatectl status
相关推荐
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦2 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj2 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei2 天前
linux 系统目录详解
linux·运维·服务器