ServerStatus-Rust 配置 Grpc 并使用 CF Tunnel 踩坑记录
Code技术
ServerStatus-Rust 配置 Grpc 并使用 CF Tunnel 踩坑记录
201
2025/11/24·发布 2025/11/24

可能是全网第一个写这个的人 (

配置教程就不必赘述,官方教程 已经写得很详细了,但是有几点坑没有说明

关于证书验证的问题

serverstatus-rust(后称 ssr)给出教程是不完整的,如果你现在按照官网的配置去配置,就会得到如下报错

Plain Text
1ERR failed to serve incoming request error="Failed to proxy HTTP: Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: tls: failed to verify certificate: x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs

对于这个问题,Github 上有也有相关问答

总之,解决这个问题的方法也很简单,只要在 其他应用程序设置/TLS/无 TLS 验证 中勾选上就可以了(由于完全是本地连接,不暴露公网,安全方面的问题也是不存在的)

同时重启 cloudflared.service 就可以了(额外多说一点,其实官网配置的 --protocol http2 是完全没有必要的,在面板设置 无 TLS 验证 的相同处打开 http2 就可以了)

关于 grpc 端口的问题

其次是 grpc 端口的问题(我不确定其他人有没有这个问题,但是我是遇到了这个问题),如果你注意观察 systemd 日志就会发现,当 grpc_tls 设置为 1或2 的时候;你使用 systemd 启动 ssr 服务 grpc 并没有出现

Bash
1systemd[1]: Started stat_server.service - ServerStatus-Rust Server.
2stat_server[230940]: ✨ stat_server v1.8.1 (15b26ef, 2025-11-22 22:00:44 UTC, rustc 1.91.0, x86_64-unknown-linux-gnu)
3stat_server[230940]: ✨ run in normal mode, load conf from local file `/opt/ServerStatus/server/config.toml
4stat_server[230940]: ✨ admin_user: 
5stat_server[230940]: ✨ admin_pass: 
6stat_server[230940]: 🚀 listening on http://0.0.0.0:8080

于此同时你使用 ss -l 也可以看到 grpc 端口未被监听

但是当你直接在命令行手动运行的时候, grpc 端口确实是监听成功的(后续测试发现也有可能不成功

问题出自哪里我也并不清楚(当然这个问题也很神经病)

解决方法也很简单,不用 systemd 进行启动就可以了

比较暴力一点的办法就直接 nohup 运行(未验证)

或者说是使用 supervisor(已验证)或者 pm2 (未验证)之类的工具进行管理

最后放一个用于 supervisor 的配置文件 stat_server.conf 作为收尾

Bash
1[program:stat_server]
2directory=/opt/ServerStatus/server
3command=/opt/ServerStatus/server/stat_server -c /opt/ServerStatus/server/config.toml
4autostart=true
5autorestart=true
6stderr_logfile=/var/log/stat_server.err.log
7stdout_logfile=/var/log/stat_server.out.log
8user=root

最后更新 11月24日 10:22
serverstatus-rustcloudflarecloudflaredgrpc

评论 (1)

Zero2025-11-24 10:22#1