当前位置:   article > 正文

Headscale Docker配置

headscale docker

配置环境

服务器环境 Ubuntu 22.04.3 LTS
(没有服务器可以去试用一下,学生优惠普遍都很便宜)
用root用户可以直接按顺序复制
设备架构

root@***:~# uname -m
x86_64
  • 1
  • 2

安装docker及docker-compose

安装docker

  1. 更新包列表:
sudo apt-get update
  • 1
  1. 安装必要的依赖:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  • 1
  1. 添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • 1
  1. 设置稳定存储库:
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 1
  1. 安装Docker引擎:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 1
  • 2
  1. 验证安装:
sudo docker run hello-world
  • 1

安装docker-compose

  1. 下载最新版本的Docker:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 1

网速慢可以直接下载到win主机用scp上传
https://github.com/docker/compose/releases/latest/download/docker-compose-(uname-s)-(uname -m)
scp -P 22 -i 密匙文件路径 "下载文件路径" root@<ip>:/usr/local/bin/docker-compose

  1. 赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  • 1
  1. 赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  • 1

配置headscale与管理员界面

headscale仓库:

https://github.com/juanfont/headscale
  • 1

headscale-webui仓库

https://github.com/iFargle/headscale-webui
  • 1

其中有个Issue讲的很详细

  1. 创建路径:
cd
mkdir -p /dockermnt/headscale
mkdir -p /dockermnt/headscale/config
mkdir -p /dockermnt/headscale/data
mkdir -p /dockermnt/headscale/web-ui
  • 1
  • 2
  • 3
  • 4
  • 5

其中/dockermnt可以修改为自己想要的路径,如果修改,后文相同字段也须修改

  1. 下载配置文件模板
wget -O /docker/headscale/conf/config.yaml https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml
  • 1

用最新版可以使用连接
老版本建议去下载对应版本的source压缩包,用解压后的config-example.yaml文件
历史版本连接
本文用的版本为v0.22.3(Source code(zip))

  1. 修改配置文件
cd
vim /dockermnt/headscale/config
  • 1
  • 2

配置文件中可以用 /配置名段进行搜索
修改以下配置:


# 改成自己的域名+路由器转发的外网端口
server_url: https://aaa.bbb.com:8080 # headscale服务地址
# aaa.bbb.com可以用公网IP设置,后面的aaa.bbb.com同样要修改
# 8080端口可以修改为自己想要的端口,后面的8080同样要修改为设置的端口

# 改成0.0.0.0:8080
listen_addr: 0.0.0.0:8080

# 改成0.0.0.0:9090
metrics_listen_addr: 0.0.0.0:9090 

# 改成0.0.0.0:50443
grpc_listen_addr: 0.0.0.0:50443

ip_prefixes:
  - fd7a:115c:a1e0::/48
  - 10.77.0.0/24 # 10.77.0.0可以修改为自己想要的端口

derp:
  server:
# 改成true
    enabled: true
    region_id: 999
    region_code: "headscale"
    region_name: "Headscale Embedded DERP"
# 改成0.0.0.0:3478
    stun_listen_addr: "0.0.0.0:3478"
  urls:
    - https://controlplane.tailscale.com/derpmap/default
    
dns_config:
  # List of DNS servers to expose to clients.
  # 可以用自己想要的,这里给出阿里云的
  nameservers:
    - 223.5.5.5
    - 114.114.114.114
 

  # Defines the base domain to create the hostnames for MagicDNS.
  # 改成自己的域名
  base_domain: aaa.bbb.com 
  
disable_check_updates: true #不想显示最新的版本信息可以改为true

# 改成true
randomize_client_port: true

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  1. 创建网络
docker network create -d bridge --subnet 172.20.0.0/24 --gateway 172.20.0.254 --ip-range 172.20.0.0/25 headscale-net
  • 1

其中

172.20.0.0可以修改为自己想用的地址段
headscale-net可以修改为自己想要的网络名称
如果修改,后文中的相同部分进行修改

  1. docker-compose.yaml文件
    生成加密key
openssl rand -base64 32
  • 1

复制生成的字符

vim /dockermnt/headscale/docker-compose.yaml
  • 1
version: "3"
services:
  headscale:
    # image: headscale/headscale:<headscale版本号>
    image: headscale/headscale:0.22.3
    container_name: headscale
    networks:
      headscale-net:
        ipv4_address: 172.20.0.1
    volumes:
      - /dockermnt/headscale/config:/etc/headscale
      - /dockermnt/headscale/data:/var/lib/headscale
    ports:
      - '8080:8080'
      - '9090:9090'
      - '3478:3478/udp'
    command: 'headscale serve'
    restart: always
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1

  headscale-webui:
  	# image: ifargle/headscale-webui:<headscale-webui版本号>
    image: ifargle/headscale-webui:latest
    container_name: headscale-webui
    networks:
      headscale-net:
        ipv4_address: 172.20.0.2
    environment:
      - TZ=Asia/Shanghai
      - COLOR=blue-gray
      - 'HS_SERVER=http://172.20.0.1:8080'
      - 'DOMAIN_NAME=https://aaa.bbb.com:5050' # 端口号可以改,改了后文5050也需要修改
      - SCRIPT_NAME=/admin
      - KEY= #通过openssl rand -base64 32生成的内容,直接复制就可
      - AUTH_TYPE=Basic
      - LOG_LEVEL=info
      - BASIC_AUTH_USER=设定管理页面用户名
      - BASIC_AUTH_PASS=设定管理页面用户密码
    volumes:
      - /dockermnt/headscale/web-ui:/data:rw
      - /dockermnt/headscale/config/:/etc/headscale/:ro
    ports:
      - '5050:5000'
    restart: always

networks:
  headscale-net:
    external: true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

直接复制有问题可以用
nano /dockermnt/headscale/docker-compose.yaml

  1. 防火墙放行端口
    上文中的 5050,8080.9090, 3478,50443都要放行
    另外再放行端口 443部分服务器防火墙需要去官方管理控制台放行
  2. 运行docker-compose
cd /dockermnt/headscale && docker-compose up -d
  • 1

查看镜像状态

docker ps -a
  • 1

如果全部是up则可以,不是则可以查看日志

docker logs headscale
  • 1

修改错误后重启

cd /dockermnt/headscale && docker-compose down
cd /dockermnt/headscale && docker-compose up -d
  • 1
  • 2
  1. 进入管理页面
    https://aaa.bbb.com:5050/admin
    输入刚刚的docker-compose用户民和密码

  2. 生成密匙

docker exec -it headscale headscale apikeys create
  • 1

复制密匙输入到 api中
在这里插入图片描述

点保存便可以,不用test

  1. 创建用户
docker exec -it headscale headscale ns create test-net # test-net可以修改为自己想要的
  • 1

查看创建结果

docker exec -it headscale headscale ns list 
  • 1

在管理页面的User中看到的和输出的一致,配置便成功了
一些命令:
查看namespace列表:docker exec -it headscale headscale ns list
创建namespace:docker exec -it headscale headscale ns create test-net
删除namespace:docker exec -it headscale headscale namespace destroy default
重命名namespace:docker exec -it headscale headscale namespace rename default

本地电脑添加

所有添加指令前加上docker exec -it headscale
https://icloudnative.io/posts/how-to-set-up-or-migrate-headscale/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/365187
推荐阅读
相关标签
  

闽ICP备14008679号