该解决方法部分来自:

Running Headscale In A Container Documentation Updates. by canardleteer · Pull Request #1659 · juanfont/headscale (github.com)

部署私有的 Headscale 控制台 · 三令五申 (yelsew.net)

为啥部署headscale

或许大家都有听过zerotier,一个用来组虚拟局域网(或者说直白就是个VPN)的东西

但是zt官方服务器的访问实在是令人无奈,这时候就有一个解决方案,就是搭建一个planet服务器

不过我个人又需要用到如zeronsd这样的服务来配置一个DNS,这样就不用在一堆ip里面找了

但是问题就出来了,ZNSD对于自建planet的配置不太友好,至少我没设置成功,各位会的大佬麻烦浇浇(?

那么我们就可以转换思路,选择zt的亲兄弟---- tailscale 

不过问题也出现了, tailscale在我这边也是一坨(x

所以改成他的自部署服务: Headscale在国内部署一遍

部署 - 需要一步到位的请看总结

作为docker忠实用户(划掉) 看到可以使用docker部署那肯定要试一试

Container - Headscale

但是这不尝试不知道,他这个社区贡献是真的纯纯社区啊(划掉

第一个坑 - docker-compose

首先让我们跳过安装docker和docker-compose的步骤(不会的出门右转装1Panel用(嗯)

这个是官方给出的docker compose文件

version: "3.7"

services:
  headscale:
    image: headscale/headscale:0.22.3
    restart: unless-stopped
    container_name: headscale
    ports:
      - "0.0.0.0:8080:8080"
      - "0.0.0.0:9090:9090"
    volumes:
      # pls change [config_path] to the fullpath of the config folder just created
      - [config_path]:/etc/headscale
    command: headscale serve

但是很快在部署之后就会愉快的发现,这玩意跑不起来

为什么呢

因为官方的compose里是少给了个/var/lib/headscale/的挂载 (虽然棺方说了要把配置文件里的var/lib路径全部改成/etc,但是何必呢)

顺便一提,正常来说9090是不需要开的,不过我还是开了(

缝缝补补就是

version: '4.1'

services:
  headscale:
    image: headscale/headscale:0.22.3
    container_name: headscale
    command: headscale serve
    restart: unless-stopped
    volumes:
      - /opt/headscale/config/:/etc/headscale/
      - /opt/headscale/data/:/var/lib/headscale/
    ports:
      - "8080:8080"
      - "9090:9090"

那么第一个坑是跳过去了

第二个坑 - 配置文件

在我们改好docker compose之后,就继续跟着棺方文档走

(Strongly Recommended) Download a copy of the example configuration from the headscale repository.

wget -O ./config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml

然后等下完了改完配置文件, 一运行又炸了

这个实际问题是因为他的配置文件是会跟着版本变动的...

如果你直接按着他的来就会发现headscale不认配置文件

正确的步骤应该是

wget -O ./config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/v0.22.3/config-example.yaml

随后,我们只需要稍微修改配置文件

比如 server_url: 是必须要改的,我这里改成

server_url: https://headscale.owk.ink/

(我是配置了Nginx反代和ssl证书的,如果你没配置的话就改成)

server_url: http://IP:8080

然后是MagicDNS

比如我这里改成:

  magic_dns: true
  base_domain: fu.rs

那么在连接到headscale网络之后就可以用<hostname>.<username>.fu.rs来访问了

这个域名不需要是你自己的,只要他是一个域名就行

随后是ip分配,它默认是v6排在前面,我这里给他改成先分配v4了

ip_prefixes:
  - 100.64.0.0/10
  - fd7a:115c:a1e0::/48
注意: 如果你在上一步和我一样修改过了/var/lib/headscale的挂载,就不要修改配置文件中的文件路径

总结

安装Docker和DockerCompose

创建 /opt/headscale/config/ 和 /opt/headscale/data/ 两个目录

运行

wget -O /opt/headscale/config/config.yaml https://raw.githubusercontent.com/juanfont/headscale/tag/v0.22.3/config-example.yaml

修改 /opt/headscale/config/config.yaml:

server_url: http://IP:8080
  magic_dns: true
  base_domain: anydomain.com
ip_prefixes:
  - 100.64.0.0/10
  - fd7a:115c:a1e0::/48

使用以下docker-compose启动容器

version: '4.1'

services:
  headscale:
    image: headscale/headscale:0.22.3
    container_name: headscale
    command: headscale serve
    restart: unless-stopped
    volumes:
      - /opt/headscale/config/:/etc/headscale/
      - /opt/headscale/data/:/var/lib/headscale/
    ports:
      - "8089:8080"
      - "9090:9090"

运行成功

现在你可以根据棺方文档继续操作了(

最后

感觉可能不如直接deb安装(

但是用docker compose等下部署webui就方便多了:)

 

最后修改:2024 年 10 月 20 日
如果觉得我的文章对你有用,请随意赞赏