eastern 发布的文章

问题现象:Cloudflare Tunnel代理cockpit,能够显示首页,但是无法登录cockpit,如下图:

报错图片

问题原因:cockpit使用wss进行通信,而Cloudflare Tunnel只代理了http/https,所以登录后无法进行通信,导致此问题发生,从下图控制台报错可以看到原因:

控制台wss连接

解决办法:添加cockpit配置文件,使其能够通过代理访问

root@armbian:~# cat /etc/cockpit/cockpit.conf
[WebService]
Origins = https://cockpit.xxxx.xxx wss://cockpit.xxxx.xxx
ProtocolHeader = X-Forwarded-Proto
AllowUnencrypted = true
root@armbian:~# systemctl restart cockpit.service #重启cockpit

AI给出的解决办法

AI给出的解决办法
实际上只需要配置cockpit能够通过代理访问即可,其他步骤不是必须。

参考:Cockpit 项目issue

下载软件包

到frp的GitHub下载最新的软件包frp release

服务端配置

1.解压下载到的软件包

tar -zxvf frp.xxx.xxx.tar.gz -C /usr/local/

2.编写frps.toml配置文件

root@s29932:~# cat /usr/local/frp/frps.toml
[common]
bind_addr = 0.0.0.0 #监听ip,0.0.0.0表示所有
bind_port = 7000 #监听端口
authentication_method = token  #设置认证方式为密码认证
token = 你设置的对接认证密码
## 这个配置可能是旧版本的配置,如果有更新的配置,请自行更新

3.编写systemd service文件

root@s29932:~# cat /etc/systemd/system/frps.service
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml
[Install]
WantedBy = multi-user.target

4.运行frp

systemctl start frp

客户端配置

1.下载解压同服务端
2.编写frpc.toml

root@armbian:~# cat /usr/local/frp/frpc.toml
[common]
server_addr = 你的服务器地址
server_port = 7000 #服务器端口
token = 同服务器端配置的对接认证密码一致
[cockpit] #代理的名称
type = tcp #代理的类型
local_ip = 127.0.0.1  #本地ip
local_port = 9090  #本地端口
remote_port = 9090  #远程端口
## 这个配置可能是旧版本的配置,如果有更新的配置,请自行更新

3.编写systemd service文件

root@armbian:~# cat /etc/systemd/system/frp.service 
[Unit]
Description = frp client
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/local/frp/frpc -c /usr/local/frp/frpc.toml
[Install]
WantedBy = multi-user.target