Headscale Docker配置

配置环境

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

root@***:~# uname -m
x86_64

安装docker及docker-compose

安装docker

  1. 更新包列表:
sudo apt-get update
  1. 安装必要的依赖:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  1. 添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  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. 安装Docker引擎:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 验证安装:
sudo docker run hello-world

安装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

网速慢可以直接下载到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. 赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose

配置headscale与管理员界面

headscale仓库:

https://github.com/juanfont/headscale

headscale-webui仓库

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

其中有个Issue讲的很详细

  1. 创建路径:
cd
mkdir -p /dockermnt/headscale
mkdir -p /dockermnt/headscale/config
mkdir -p /dockermnt/headscale/data
mkdir -p /dockermnt/headscale/web-ui

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

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

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

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

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


# 改成自己的域名+路由器转发的外网端口
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. 创建网络
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

其中

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

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

复制生成的字符

vim /dockermnt/headscale/docker-compose.yaml
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

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

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

查看镜像状态

docker ps -a

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

docker logs headscale

修改错误后重启

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

  2. 生成密匙

docker exec -it headscale headscale apikeys create

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

点保存便可以,不用test

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

查看创建结果

docker exec -it headscale headscale ns list 

在管理页面的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/

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-voyager-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值