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
相关推荐
网硕互联的小客服3 小时前
遇到网站500内部服务器错误如何处理?如何预防这样的问题发生?
运维·服务器·安全
叮咚侠3 小时前
Ubuntu 24.04.3 LTS 中 vdb 的 UUID 永久挂载没有显示的磁盘的操作步骤
linux·运维·ubuntu·挂载磁盘
GAOJ_K3 小时前
滚柱导轨中的密封件如何判断是否需更换?
运维·人工智能·科技·自动化·制造
skyyx20024 小时前
写给网工新手:子网掩码基本概念和一些计算方法
运维·网络
杰克崔4 小时前
进程内mmap锁相互干扰问题
linux·运维·服务器·车载系统
2501_924064115 小时前
2025年一站式测试平台对比:可视化报告与自动化监控最佳实践
运维·自动化
恒创科技HK5 小时前
2026年香港服务器有哪些区域可选?
运维·服务器
xjxijd5 小时前
工业元宇宙 IDC 支撑:数字孪生算法 + 边缘服务器,生产调度响应速度提 3 倍
运维·服务器·算法
程序员zgh5 小时前
代码重构 —— 读后感
运维·c语言·开发语言·c++·重构
代码游侠5 小时前
应用——Linux进程通信与信号处理
linux·运维·服务器·笔记·学习·信号处理