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 分钟前
Nginx 部署前端项目实战指南
运维·前端·nginx
java_logo2 小时前
QWEN3 企业级 Docker 容器化部署指南
运维·docker·容器·qwen3部署·qwen3部署文档·qwen3部署教程·qwen3部署方案
huohaiyu2 小时前
网络中的一些基本概念
运维·服务器·网络
Kiyra2 小时前
虚拟机假死?SSH 能连却卡 Logo 界面
运维·ssh
tap.AI3 小时前
Deepseek(九)多语言客服自动化:跨境电商中的多币种、多语种投诉实时处理
运维·人工智能·自动化
ling-453 小时前
Linux-day09 11
linux·运维·服务器
202321336054 刘3 小时前
Linux常用命令分类整理
linux·运维·数据库
oMcLin3 小时前
如何在 Debian 11 上通过配置 LVM 和 RAID 结合,提升大规模存储系统的性能与冗余性
运维·debian
C_心欲无痕3 小时前
网络相关 - Ngrok内网穿透使用
运维·前端·网络
宇钶宇夕3 小时前
CoDeSys入门实战一起学习(四):应用程序运行、监控与调试
运维·自动化