iFargle / headscale-webui

A simple Headscale web UI for small-scale deployments.
Other
628 stars 57 forks source link

docker安装headscale+headscale-webui运行正常了! #79

Open stazeng opened 1 year ago

stazeng commented 1 year ago

抱歉!因为英文不好,只能用中文写。分享出来希望能给一些人作参考。

我是在Oracle ARM VPS 上安装headscale+headscale-webui的

1、docker安装headscale服务器端容器

docker pull headscale/headscale:latest

创建目录

mkdir -p /docker/headscale mkdir -p /docker/headscale/conf mkdir -p /docker/headscale/data

下载配置文件模板

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

vi config.yaml,修改: server_url #修改为 127.0.0.1:8090 listen_addr #修改为:0.0.0.0:8090 #端口号根据自己需求改 metrics_listen_addr #修改为:0.0.0.0:9090 #端口号根据自己需求改 ...

/ 修改配置文件两个注意地方: a、hs的监听端口号,要和docker-compose.yaml里定义的端口一致,默认是8080,我改为了:8090。 b、没有部署中继服务器,但derp部分不能删除,把enabled项设为fasle即可,否则后面headscale-webui进行overview时会出现服务器错误。 /

到/docker/headscale目录下,创建docker-compose.yaml,内容如下:

version: '3.6' services:
headscale: image: headscale/headscale:latest container_name: headscale networks: mynet: #在下面网络部分那里声明是存在的网络名。 ipv4_address: 172.20.0.1 #只有先有(存在)了的网络,才能指定ip地址。 volumes:

!!说明:有人在--cap_add部分,还添加了:- NET_RAW 和 - CAP_NET_BIND_SERVICE,其实这两个参数在docker中是默认开启的,因此这里不用指定。另外,“- CAP_NET_BINDSERVICE”写法是不对的,应该去掉“CAP”,即应该写为:- NET_BIND_SERVICE。

创建网络mynet和运行容器: docker network create -d bridge --subnet 172.20.0.0/24 --gateway 172.20.0.254 --ip-range 172.20.0.0/25 mynet cd /docker/headscale && docker-compose up -d

防火墙放行端口: 容器就创建成功后,需要Oracle VPS服务器上的安全列表(防火墙)中,放行headscale的8090端口(默认端口是8080)还有headscale-webui的端口5050。

一些命令: 查看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 myspace 生成api-key:docker exec -it headscale headscale apikey create | list

二、docker安装headscale-webui容器

docker pull ifargle/headscale-webui:latest mkdir /docker/headscale-webui

vi docker-compose.yaml,内容如下:

version: "3" services: headscale-webui: image: ifargle/headscale-webui:latest container_name: headscale-webui networks: mynet: ipv4_address: 172.20.0.2 environment:

变量说明:注意! headscale-webui 容器 There are two "keys":

Your Headscale API key, generated with 'headscale apikeys create' on your Headscale server
Your KEY environment variable, generated with 'openssl rand -base64 32'

the KEY variable is used to encrypt your Headscale API key when it's written to disk (via the "Save" button on the Settings page) You enter your Headscale API key on the Settings page, click Save, then click Test to verify it works.

a、先使用docker exec -it headscale headscale apikeys create 生成一个API-KEY,比如: xx8BCRqjsg.5uhNpBohlpRRExxgxAsrR2I2c_Q4OIGxxxxxxxxx (注意!这要复制保存好,以后看不到了,否则要重新生成)。 b、将这个api-key复制到webui界面的Server Information下的输入框,然后点保存,会自动Test是否正确。

最后:cd /docker/headscale-webui && docker-compose up -d

至此,headscal服务器端和headscale-webui安装成功! 浏览:https://hscale.domain.com/admin,输入用户admin和密码

qingyuan0o0 commented 1 year ago

非常感谢楼主分享,总算知道这个东西是不包含headscale的功能的,类似外部管理器,我想请问能否实现https://github.com/luislavena/homelab-headscale/blob/main/compose.yaml这样一个配置合并2个功能?实现一个容器就可以完成以上的操作?

stazeng commented 1 year ago

非常感谢楼主分享,总算知道这个东西是不包含headscale的功能的,类似外部管理器,我想请问能否实现https://github.com/luislavena/homelab-headscale/blob/main/compose.yaml这样一个配置合并2个功能?实现一个容器就可以完成以上的操作?

如果你对docker-compose了解话,完全可以在一个yaml配置文件实现2个容器运行的。

qingyuan0o0 commented 1 year ago

请问楼主,这headscale-webui,运行下来,内存使用大概维持在多少呢?我想问一下,看下是否部署到paas平台上,是否超过免费配额。。

iFargle commented 1 year ago

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
97cf135729d3   headscale-webui        0.00%     63.46MiB / 62.51GiB   0.10%     25.1MB / 44.9MB   778kB / 0B        14
qingyuan0o0 commented 1 year ago

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
97cf135729d3   headscale-webui        0.00%     63.46MiB / 62.51GiB   0.10%     25.1MB / 44.9MB   778kB / 0B        14

谢谢,我正在尝试把3个容器给做成一个compose.yaml(minio+headscale+headscale-webui),请问headscale-webui是否支持在线使用webui修改使用外部derp的配置并刷新配置?我打算把headscale-webui搭建在fly.io平台,但是fly.io没办法使用udp/3478的端口,所以我打算在openwrt路由器上转发这个3478/udp端口,这一点相对于使用公共节点更给力一些。

threerog commented 1 year ago

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
97cf135729d3   headscale-webui        0.00%     63.46MiB / 62.51GiB   0.10%     25.1MB / 44.9MB   778kB / 0B        14

谢谢,我正在尝试把3个容器给做成一个compose.yaml(minio+headscale+headscale-webui),请问headscale-webui是否支持在线使用webui修改使用外部derp的配置并刷新配置?我打算把headscale-webui搭建在fly.io平台,但是fly.io没办法使用udp/3478的端口,所以我打算在openwrt路由器上转发这个3478/udp端口,这一点相对于使用公共节点更给力一些。

headscale自带derp容器,也支持第三方derp独立服务 参考这儿 如果你打算在自己本地部署derp中继服务,我认为需要有动态公网ipv4或者固定公网ipv4才行,如果只有ipv6的话可能无法中继不支持ipv6设备的流量

threerog commented 1 year ago

metrics_listen_addr9090没必要暴露出来吧,不太了解这个端口用来干嘛的 按照config.yaml注释来说grpc_listen_addr50443也应该暴露出来

qingyuan0o0 commented 1 year ago

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
97cf135729d3   headscale-webui        0.00%     63.46MiB / 62.51GiB   0.10%     25.1MB / 44.9MB   778kB / 0B        14

谢谢,我正在尝试把3个容器给做成一个compose.yaml(minio+headscale+headscale-webui),请问headscale-webui是否支持在线使用webui修改使用外部derp的配置并刷新配置?我打算把headscale-webui搭建在fly.io平台,但是fly.io没办法使用udp/3478的端口,所以我打算在openwrt路由器上转发这个3478/udp端口,这一点相对于使用公共节点更给力一些。

headscale自带derp容器,也支持第三方derp独立服务 参考这儿 如果你打算在自己本地部署derp中继服务,我认为需要有动态公网ipv4或者固定公网ipv4才行,如果只有ipv6的话可能无法中继不支持ipv6设备的流量

我知道headscale自带derp,在免费的网页平台虽然支持docker部署,但是只有443可用,3478/udp没办法利用,想知道界面是否支持配置或者在线更新可用的,如果可以在线更新,那就很NEWB了。接下来找朋友用他的FRPS转发下3478/udp。

threerog commented 1 year ago

@iFargle I always don't quite understand whether the 5000 port number in the DOMAIN-NAME field must be written, or under what circumstances it must be written

threerog commented 1 year ago

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
97cf135729d3   headscale-webui        0.00%     63.46MiB / 62.51GiB   0.10%     25.1MB / 44.9MB   778kB / 0B        14

谢谢,我正在尝试把3个容器给做成一个compose.yaml(minio+headscale+headscale-webui),请问headscale-webui是否支持在线使用webui修改使用外部derp的配置并刷新配置?我打算把headscale-webui搭建在fly.io平台,但是fly.io没办法使用udp/3478的端口,所以我打算在openwrt路由器上转发这个3478/udp端口,这一点相对于使用公共节点更给力一些。

headscale自带derp容器,也支持第三方derp独立服务 参考这儿 如果你打算在自己本地部署derp中继服务,我认为需要有动态公网ipv4或者固定公网ipv4才行,如果只有ipv6的话可能无法中继不支持ipv6设备的流量

我知道headscale自带derp,在免费的网页平台虽然支持docker部署,但是只有443可用,3478/udp没办法利用,想知道界面是否支持配置或者在线更新可用的,如果可以在线更新,那就很NEWB了。接下来找朋友用他的FRPS转发下3478/udp。

界面上修改3478的可能性几乎为零,因为headacale没有提供相关接口,直接在config.yaml里修改derp的3478端口就可以了呀 headscale-webui是基于headscale提供有限api接口实现的界面化操作,具体完整的api接口可访问HS_SERVER/swagger,比如http://xxx.xxx.xx:8080/swagger

ywycd commented 1 year ago

早点看到这个issue,就不用折腾好几天的headscale和webui才成功。 补充:命令用 docker exec headscale headscale ns list docker exec -it headscale /bin/bash,当你选择-debug镜像时才加-it,这样会进入bash,接着用headscale ns list。没弄好webui时用debug删除节点的。 用docker没配置mynet,默认bridge填对SERVER和domain可以连接。 headscale-webui key填openssl rand -base64 32的值,加密本地保存的apikey。- DOMAIN_NAME填xx.x.x:5000,删除- SCRIPT_NAME=/admin。访问xx.x.x:5000输入user和PASS可以登录。

volumes:
      - ./volume:/data                      
      - ./headscale/config/:/etc/headscale/:ro

注意要运行chown 1000:1000 ./volume,不然会提示权限不够无法保存。第二个 ./headscale/config/换成自己headscale配置文件的路径。 api-key复制到webui界面的Server Information下点save,会自动判断是否正确。开始点test提示错误,选save测试通过。

ywycd commented 1 year ago

二合一的docker-compose.yaml,示例 https://raw.githubusercontent.com/ywycd/My-actions/master/docker-compose.yaml 根据实际情况修改。 headscale配置看的 http://www.putianhui.cn/posts/2ac21da921f0 。headscale新版用user替换namespace。

qingyuan0o0 commented 1 year ago

二合一的docker-compose.yaml,示例 https://raw.githubusercontent.com/ywycd/My-actions/master/docker-compose.yaml 根据实际情况修改。 headscale配置看的 http://www.putianhui.cn/posts/2ac21da921f0 。headscale新版用user替换namespaces。

感谢,我看看,你发的那个博客里面的代码只能显示9行10行。。拖动不成功。

ywycd commented 1 year ago

二合一的docker-compose.yaml,示例 https://raw.githubusercontent.com/ywycd/My-actions/master/docker-compose.yaml 根据实际情况修改。 headscale配置看的 http://www.putianhui.cn/posts/2ac21da921f0 。headscale新版用user替换namespaces。

感谢,我看看,你发的那个博客里面的代码只能显示9行10行。。拖动不成功。

有帮助就好。那个博客长代码默认收起,底下中间有闪烁的朝下箭头,按下显示全部。或者右上角复制再修改。 headscale config.yaml里的enabled: true 启用自带derp。urls去 https://github.com/juanfont/headscale/blob/main/config-example.yaml 复制,注意格式。 翻了下前面,你可以看看自建derp。想整合在一起,可以看这个 https://www.jinnsblog.com/2020/12/docker-compose-tutorial.html 。测试单独docker-compose通过,services下添加。

qweapple commented 1 year ago

请问各位有遇到节点rename的时候一直卡loading吗?我用的nginx反代 image

iotbi commented 1 year ago

我headscale是二进制文件部署的,正常使用! 但是docker部署webbi时报错(这个文件地址绝对没错的) Error - /etc/headscale/config.yaml not readable /etc/headscale/config.yaml not readable. Please ensure your headscale configuration file resides in /etc/headscale and is named "config.yaml" or "config.yml"

qingyuan0o0 commented 1 year ago

关于整合版本我的想法是,里面包含了headscale和headscale-webui两个应用。 在headscale的配置文件中有这样一段代码是自定义derp服务的

#/etc/headscale/config.yaml
derp:
  server:
    enabled: false  # 这里开启的话是使用自身的derp服务,因为我部署在fly.io上面,这个需要另外购买独立ip,我就不开了
  urls:
    - https://controlplane.tailscale.com/derpmap/default
  auto_update_enabled: true
  update_frequency: 24h

这个设想中derp服务是使用外部derp地址的 默认是使用 https://controlplane.tailscale.com/derpmap/default 如果这里改写成获取官方的json后加入自己的自定义地址 如果这个地址是http://127.0.0.1:5000/derpmap,这样可以实现修改并且不影响客户端使用默认的derp列表。 再者由于docker使用caddy做为监听443,只要caddy做好配置,可以设置访问管理入口为/admin,端口复用双应用。

hausen1012 commented 1 year ago

结合各位大佬的经验整理的教程,https://www.amjun.com/1957.html

EarthBugs commented 11 months ago

我在管理员权限的cmd中使用tailscale login --login-server http://..* --authkey ***** 来登录的时候,命令行在这里卡住了,但右下角win10消息弹窗提示TailscaIe Authentication Needed CIick the Tailscale icon to log in. 我按提示点击ts图标或者右键图标选择login也没有反应,全程没有打开浏览器跳转到登录界面,我还尝试了安卓端的ts客户端,也没法完成登录。 我在docker容器中将8080和9090端口暴露出来了,config.yaml中将serverurl替换成域名:8080,其余的127.0.0.1也都替换为了0.0.0.0,端口不变,portainer中查看logs也并无error,还能怎么排查下问题呢,和各位大佬请教下。

hausen1012 commented 11 months ago

这个没遇到过,浏览器直接访问8080端口是什么情况,还有一个会不会是客户端版本问题

EarthBugs commented 11 months ago

这个没遇到过,浏览器直接访问8080端口是什么情况,还有一个会不会是客户端版本问题

访问8080/windows是可以看到提示页面的,但我用安卓端和windows端都没办法连上去。 服务端的版本是latest(我以为是github release的0.22.3,但刚才查了一下docker hub上的0.22.3已经是4个月前的了),win客户端是1.48.1(最新的),安卓端没法看版本号,但也同样连不上自建服务器……(win和安卓端都可以连上ts官方服务器)

hausen1012 commented 11 months ago

那这个就很奇怪,因为我这是搭建有一段时间了,所以我怀疑是不是tailscale官方做了限制

EarthBugs commented 11 months ago

方便说下你docker image和win客户端的版本吗

hausen1012 commented 11 months ago

0.22.3 和 1.44.0

wolfcdd commented 10 months ago

Headscale-WebUI访问输入用户名和密码后

页面报错: Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

后台提示这个: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xxx.yyy.com', port=443): Max retries exceeded with url: /health (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1002)'))) During handling of the above exception, another exception occurred: Traceback (most recent call last)

不能使用self-signed certificate的证书吗?zerossl的也不行吗

wolfcdd commented 10 months ago

0.22.3 和 1.44.0

Headscale-WebUI访问输入用户名和密码后

页面报错: Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

后台提示这个: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xxx.yyy.com', port=443): Max retries exceeded with url: /health (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1002)'))) During handling of the above exception, another exception occurred: Traceback (most recent call last)

不能使用self-signed certificate的证书吗?zerossl的也不行吗

yijiangchengming commented 10 months ago

这个没遇到过,浏览器直接访问8080端口是什么情况,还有一个会不会是客户端版本问题

访问8080/windows是可以看到提示页面的,但我用安卓端和windows端都没办法连上去。 服务端的版本是latest(我以为是github release的0.22.3,但刚才查了一下docker hub上的0.22.3已经是4个月前的了),win客户端是1.48.1(最新的),安卓端没法看版本号,但也同样连不上自建服务器……(win和安卓端都可以连上ts官方服务器)

一样的问题,但是不知道哪里出错了。

hausen1012 commented 10 months ago

大概率配置问题,昨天有人博客给我留言也是这样

yijiangchengming commented 10 months ago

大概率配置问题,昨天有人博客给我留言也是这样

你现在解决了吗?使用默认配置都有问题

wolfcdd commented 10 months ago

经过几天的摸索,从各种错误 一步一步排查,最终解决了,现提供参考:

适应场景: 1、有自己的域名,却没有稳定的真正的公网IP地址 2、已经跟运营商申请了动态公网地址,并通过类似DDNS-GO的工具做了自动解析 3、证书通过zeroSSL等类似的工具实现了自动更新 4、自己的路由器支持端口转发 5、已经部署好nginx 6、按照headscale官网教程完成了db.sqlite的创建及config-example.yaml的获取(https://headscale.net/running-headscale-container/#configure-and-run-headscale) 7、客户端下载安装好Tailscale,直接用官方的就行,不需要用第三方修改的。(https://tailscale.com/download/

符合以上场景的,可以直接无脑抄下述作业:

一、配置:

1、Docker Compose:

headscale的:

version: '3.6'
services:
    headscale:
        container_name: headscale
        restart: always
        volumes:
            - '/dockermnt/headscale/config:/etc/headscale/' #按需更改自己的挂载目录
            - '/dockermnt/headscale/data:/var/lib/headscale' #按需更改自己的挂载目录
        ports:
            - '4050:8080' #自己喜欢映射到哪个端口就用哪个端口,对应的防火墙请放行
            - '9090:9090'
            - '3478:3478/udp'
        command: 'headscale serve'
        networks:
            headscale: #自己定义的网络名,提前用docker network create 命令创建,自行查阅官网说明创建即可
                ipv4_address: 172.32.0.11 #自己定义的静态ip地址,请注意:此地址为容器内地址
        image: 'headscale/headscale:latest' #用最新版本即可
#        image: 'headscale/headscale:0.22.3'
        cap_add:
            - NET_ADMIN
            - SYS_MODULE
        sysctls:
            - net.ipv4.ip_forward=1

#声明已有网络
networks: 
    headscale: 
        external: true 

headscale-webui的:

version: '3.3'
services:    
    headscale-webui:
        container_name: headscale-webui
        restart: always
        volumes:
            - '/dockermnt/headscale/config:/etc/headscale/:ro' #按需更改自己的挂载目录
            - '/dockermnt/headscale/web-ui/data:/data:rw' #按需更改自己的挂载目录
        user: root
        networks:
            headscale:
                ipv4_address: 172.32.0.22  #自己定义的静态ip地址,请注意:此地址为容器内地址,且与headscale共用同一个网络
        ports:
            - '5000:5000' #自己喜欢映射到哪个端口就用哪个端口,对应的防火墙请放行
        environment:
            - TZ=Asia/Shanghai
            - 'HS_SERVER=http://172.32.0.11:8080' #此处请指定headscale容器中配置的静态地址
            - 'DOMAIN_NAME=https://aaa.bbb.com' #自己的域名
            - SCRIPT_NAME=/admin
            - AUTH_TYPE=Basic
            - BASIC_AUTH_USER=xxx #登录用户
            - BASIC_AUTH_PASS=xxxx #登录密码
            - KEY=xxx #通过openssl rand -base64 32生成
        image: 'ifargle/headscale-webui:latest'
networks:
    headscale:
        external: true

2、Nginx Config:

headscale的nginx反代配置:


server {  
#自己定义一个ssl端口,不能与前面headscale容器映射出去的一样,在防火墙放行,同时在路由器做端口转发
      listen 4051 ssl;
#证书路径
      ssl_certificate /etc/nginx/ssl/*.bbb.com.cer; 
      ssl_certificate_key /etc/nginx/ssl/*.bbb.com.key;
      server_name  bbb.com;
      ssl_session_cache shared:SSL:1m;
      ssl_session_timeout  10m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      ssl_prefer_server_ciphers on;

      client_max_body_size 10M;
      location / {
#headscale容器所在宿主机的地址及容器映射出去的端口
          proxy_pass http://10.0.0.111:4050;
          proxy_redirect https:// https://;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $server_name;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_http_version 1.1;
              proxy_buffering off;
              proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
                }

        }

headscale-webui的nginx反代配置:

server {  
#自己定义一个ssl端口,不能与前面headscale-webui容器映射出去的一样,在防火墙放行,同时在路由器做端口转发 
      listen 5100 ssl;
#证书路径
      ssl_certificate /etc/nginx/ssl/*.bbb.com.cer; 
      ssl_certificate_key /etc/nginx/ssl/*.bbb.com.key;
      server_name  bbb.com;

      ssl_session_cache shared:SSL:1m;
      ssl_session_timeout  10m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      ssl_prefer_server_ciphers on;

      client_max_body_size 10M;
      location /admin/ {
#headscale-webui容器所在宿主机的地址及容器映射出去的端口
          proxy_pass http://10.0.0.111:5000/admin/;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }

        }

3、config.yaml(不要直接拷贝粘贴,对照名称逐项修改,我只列出来修改的项):


# 改成自己的域名+路由器转发的外网端口
server_url: https://aaa.bbb.com:4051

# 改成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

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

  # List of DNS servers to expose to clients.
  # 改成自己喜欢的DNS
  nameservers:
    - 223.5.5.5
    - 114.114.114.114

  # Defines the base domain to create the hostnames for MagicDNS.
  # 改成自己的域名
  base_domain: aaa.bbb.com

# 改成true
randomize_client_port: true

二、使用

1、启动headscale后,执行命令创建用户、生成apikey、生成key

#创建用户
docker exec -it headscale headscale users create 自己的名字

#创建apikey
#10000d 表示过期时间,尽量长点
docker exec -it headscale headscale apikeys create -e 10000d

#创建preauthkeys
#reusable 表示可以重复使用
docker exec -it headscale headscale preauthkeys create -e 10000d --reusable -u 自己的名字

2、网页端访问headscale-webui容器对应的域名地址,输入创建的apikey,点击Save验证

3、登录/注册设备 Windows端:

先按照官网文档修改注册表(https://headscale.net/windows-client/

再在tailscale安装目录中执行命令行(powershell和cmd以及win11的终端都行,不需要管理员权限):

tailscale login --login-server https://headscale容器对应的域名:headscale端口 --authkey 前面创建的preauthkeys --accept-dns=false --accept-routes

Android:

运行Tailscale后,点右上角那三个点,一直点,直到出现Change server(https://headscale.net/android-client/) 然后点击Change server 修改server url为:config.yaml中的server_url,保存。再回到开始页点击Sign in

wolfcdd commented 10 months ago

大概率配置问题,昨天有人博客给我留言也是这样

你现在解决了吗?使用默认配置都有问题

跟我的现象一模一样,你可以看看客户端的日志(C:\ProgramData\Tailscale\Logs\),里面应该是类似这样的错误:

error: fetch control key: Get "https://xxx/key?v=74": http: server gave HTTP response to HTTPS client

按照我上面写的内容操作就不会有问题,大概率是反代的端口跟容器映射出去的端口冲突了

yijiangchengming commented 10 months ago

大概率配置问题,昨天有人博客给我留言也是这样

你现在解决了吗?使用默认配置都有问题

跟我的现象一模一样,你可以看看客户端的日志(C:\ProgramData\Tailscale\Logs\),里面应该是类似这样的错误:

error: fetch control key: Get "https://xxx/key?v=74": http: server gave HTTP response to HTTPS client

按照我上面写的内容操作就不会有问题,大概率是反代的端口跟容器映射出去的端口冲突了

没有发生端口冲突,访问https://xxx.xxx.com/windows可以访问,headscale-webui也可以连接到headscale,唯独https://xxx.xxx.com无效。

qooboy commented 9 months ago

安装了几个ui都连不上headscale,Docker和nginx安装都不得要领,能付费提供一下咨询吗?

hausen1012 commented 9 months ago

安装了几个ui都连不上headscale,Docker和nginx安装都不得要领,能付费提供一下咨询吗?

可以的哈,v: aman-jun

bbhxwl commented 1 month ago

不错楼主,国人真少啊