未知狐 发布的文章

作者: 未知狐 时间: 2025-4-12 分类: 随手记,Linux,时间轴,折腾=-=
书接上回,为了便于使用公网服务器反代内网服务实现内网穿透,我部署了WireGruad,但是连接稳定性无法保证,连接总会在大约一天后断开。因此我想到了之前使用过的内网穿透项目:NPS和Frp,考虑到前者已经失去维护,并且后者的文档也逐渐健全,最终我选择了Frp。
参考文献
获取用户真实 IP —— gofrp.org
Accepting the PROXY Protocol —— Nginx docs

下载FRP
wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
xfox@ClawHK:~$ tar -xzvf frp_0.61.2_linux_amd64.tar.gz
frp_0.61.2_linux_amd64/
frp_0.61.2_linux_amd64/LICENSE
frp_0.61.2_linux_amd64/frpc.toml
frp_0.61.2_linux_amd64/frpc
frp_0.61.2_linux_amd64/frps
frp_0.61.2_linux_amd64/frps.toml

cd frp_0.61.2_linux_amd64/
sudo mkdir -p /opt/frp
sudo cp frps /opt/frp/ #部署服务端
sudo cp frpc /opt/frp/ #部署客户端
编写服务端配置
sudo nano /opt/frp/frps.toml

bindPort = 7000
vhostHTTPPort = 8080
auth.token = "your_secure_token"
transport.proxyProtocolVersion = "v2"

编写客户端配置
sudo nano /opt/frp/frpc.toml

serverAddr = "47.242.89.175"
serverPort = 7000
auth.token = "your_secure_token"
[[proxies]]
name = "linuxuser.site"
type = "http"
localPort = 80
customDomains = ["linuxuser.site"]

transport.proxyProtocolVersion = "v2"

[[proxies]]
name = "nas.xfox.fun"
type = "http"
localPort = 5212
customDomains = ["nas.xfox.fun"]
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 22022

关于transport.proxyProtocolVersion = "v2"的配置有一个误区,我应该在需要开启proxy_protocol的对应内网穿透条目[[proxies]]下写这行配置,也就是说上面的配置里如果没有注释也只是为linuxuser.site开启了proxy_protocol支持。
这一问题一度导致我以为nignx配置写错了,自查半天以为自己记忆里的写法有误,最终去问Deepseek浪费了大量时间。

服务/客户端Systemd配置
sudo nano /etc/systemd/system/frps.service
sudo nano /etc/systemd/system/frpc.service

[Unit]

服务名称,可自定义

Description = Frp Server/Client (Self Host)
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple

启动frps的命令,需修改为您的frps的安装路径

ExecStart = /opt/frp/frps -c /opt/frp/frps.toml

启动frpc的命令,需修改为您的frpc的安装路径

ExecStart = /opt/frp/frpc -c /opt/frp/frpc.toml
[Install]
WantedBy = multi-user.target

运行客户端/服务端
sudo systemctl enable frpc.service --now
sudo systemctl enable frps.service --now

Nginx反向代理

/etc/nginx/sites-enabled/linuxuser.site

server {

listen 80;
server_name 127.0.0.1 linuxuser.site www.linuxuser.site;
root /ZHITAIPC005/www/linuxuser.site;
index index.php index.html index.htm;
client_max_body_size 128m;

# 真实IP解析(信任前端代理)
    # /etc/nginx/conf.d/frp_real_ip.conf
# Typecho URL重写规则
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

# PHP处理配置
location ~ \.php$ {
    fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# 日志配置
access_log /ZHITAIPC005/www/log/linuxuser.site.access.log frp_real_ip;
error_log /ZHITAIPC005/www/log/linuxuser.site.error.log;

}

这里也有个坑:Nginx的日志指令中,access_log的语法是:

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition];

而error_log的语法是:
error_log file [level];
所以不能在error_log也写上frp_real_ip,否则frp_real_ip会成为一个无效的错误日志等级。
至于上面提到的frp_real_ip这个log_format,必须位于nginx.conf的http块中,但是考虑到nginx是可能随着Debian13的发布更新版本因此/etc/nginx/nginx.conf可能在更新时被覆盖写入。我们应该采取更规范的额外配置引入方式:
sudo nano /etc/nginx/conf.d/frp_real_ip.conf

/etc/nginx/conf.d/frp_real_ip.conf
定义日志格式(必须在http块内)
使用proxy_protocol
log_format frp_real_ip '$proxy_protocol_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
set_real_ip_from 47.242.89.175;
set_real_ip_from 127.0.0.1;
real_ip_header proxy_protocol; # 从 Proxy Protocol 数据中提取真实 IP
使用X-Forwarded-For
log_format frp_real_ip '$http_x_forwarded_for - $remote_user [$time_local] '

             '"$request" $status $body_bytes_sent '
             '"$http_referer" "$http_user_agent"';

可选:配置信任的代理IP(若使用Real IP模块)
set_real_ip_from 47.242.89.175;
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;

这里还有一个小问题,你不能画蛇添足的给log_format外再套一个http{}块。
查看/etc/nginx/nginx.conf发现

http{
...其他配置
include /etc/nginx/conf.d/*.conf;
...Other confg
}
也就是说/etc/nginx/conf.d/*.conf的配置默认就是在http块内引入的,所以不能画蛇添足的给log_format外再套一个http{}块。

前端服务器配置
我上面用到了$http_x_forwarded_for这个变量,如果客户端或上游代理已经添加了 X-Forwarded-For 头,Nginx 作为反向代理时默认会将其传递给后端服务器。
但需注意:如果 Nginx 是第一个代理(直接接收客户端请求),默认不会主动添加 X-Forwarded-For 头,除非显式配置。
所以在前端服务器,也就是我的公网服务器必须手动指定Nginx向后传递X-Forwarded-For 头。
以下就是linuxuser.site的最前端服务器配置

server {

listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name linuxuser.site www.linuxuser.site;

SSL证书路径(保持用户原有配置)

ssl_certificate      /home/xfox/www/all_linuxuser.site/fullchain.pem;
ssl_certificate_key  /home/xfox/www/all_linuxuser.site/privkey.pem;

# SSL优化配置
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

root /ZHITAIPC005/www/linuxuser.site;
index index.php index.html index.htm;
client_max_body_size 128m;

# 反向代理配置
location / {
    proxy_pass http://linuxuser.site:8080;
    proxy_set_header X-Forwarded-For $remote_addr;
    # 保留必要头部(供FRP识别)
   proxy_set_header Host $host;

}


# 其他通用配置

# access_log /var/log/nginx/linuxuser.site.access.log;
# error_log /var/log/nginx/linuxuser.site.error.log;
}

查看效果
通过上面的一系列配置,我已经实现了通过X-Forwarded-For将访客IP 按照:
HK Server -> FRP -> Home Server 的完整链路传输
现在在Home Server执行 tail -f /ZHITAIPC005/www/log/linuxuser.site.access.log
再访问https://linuxuser.site/ 即可检验成果。

使用体验
感觉比使用WireGruad组网再反代的Web资源响应速度好了很多啊,nas的图片预览刷新明显更快了。

总结
今天的一番折腾更加坚定了我“不能完全依赖AI进行方案设计”的理念,使用AI要尽可能保证自己对达成目标所涉及的技术栈的基本原理框架有清晰认知。 大语言模型非常适合替代搜索引擎帮助用户高效检索信息,但是绝对不能用来替代你的逻辑思考过程,否则你会成为AI的奴隶,原本要完成的目标也在AI的幻觉迷惑下变得模糊不清,即使最终解决了问题也浪费了大量时间。

今天实际应用成功的Nginx 公网反代真实IP获取这一完整方案并非AI所推荐给我的。
Ai生成的方案存在肉眼可见的不和谐,比如端口冲突,没有考虑到Nginx 的http模块只能接收proxy_protocol而无法向后端发送proxy_protocol 导致后端只能接收到HK Server的公网IP。
还有诸多谬误,我不再一一记录,总而言之:不要偷懒让AI独自完成方案思考,用户必须有基于已知知识建立自己的主见。使用AI过程中出现的新知识点以及不了解的细节一定要及时查阅官方文档或者问AI。

标签: none

已有 2 条评论
GoodBoyboyGoodBoyboy
2025年4月12日20:30
终于还是用上了TCP(doge

回复
未知狐未知狐
2025年4月13日0:55
我还没写完文章你就评论了。😭

回复

作者: 未知狐 时间: 2025-4-6 分类: 随手记,阅读笔记,时间轴
众所周知,我的站点网络拓扑主要包含了:

代号 名称 IDC 网络环境
A 公有服务器 香港阿里云 公网IPv4+公网IPv6
B 家庭服务器 中国联通 NAT后IPv4+公网IPv6
A、B通过WireGuard组网连接,除了本博客和Mumble,其他服务均通过公网A进行反代->WG内网转发->私有服务器B
经过一段时间的测试,我可以确定郑州联通确实存在UDP控制。最近的一次WG掉线后(也就是昨天通过NAS公网转发备份了大约11GB的图片后),备份完成WG是没有掉线的,但是今天下午我发现掉线了。
立即重启WG检查了A/B的收发数据发现:
A没有明显异常,但是接收数据偏少。
B发送数据没有问题,接收数据直接0了。
显然,联通禁止了从A->B的UDP流量,这一情况是基于IPv4环境下的。在我将WG配置的端点地址改为域名后,AB自动使用IPv6完成了组网。
未来我会继续在这个帖子更新WG使用过程中发现的运营商UDP QoS相关问题。

连接再次中断
xfox@EliteDesk800G3:~$ sudo wg
[sudo] xfox 的密码:
interface: wg0
public key: voB153oa0vHHuPpA2cCAb3diJ2iQr7WyiqCYadqNV3U=
private key: (hidden)
listening port: 54343

peer: ol49XfUIm1dCcxr5SyD+AFl+b9LSI5tab7YOKo6kPQQ=
endpoint: [240b:4001:278:8401:ffff:abb0:2987:aa04]:51820
allowed ips: 10.10.0.1/32
latest handshake: 1 day, 17 hours, 20 minutes, 3 seconds ago
transfer: 4.31 MiB received, 74.84 MiB sent
persistent keepalive: every 25 seconds
可以发现,连接实际上很不稳定。
因为中断时间间隔很短。
看来我必须考虑tcp连接完成组网了。
作为临时措施,我先调整端口到53,并恢复使用ipv4,同时调整keepalive 从25到2s
4月11日4:23分更新:
根据wg输出的上次握手时间,2025年4月10日18时
连接断开了。显然简单的调整端口和缩短心跳时间并不会有助于维持稳定的wg组网。
看来我必须得试试使用FRP实现反代了。

标签: none

已有 4 条评论
kooriteakooritea
2025年4月8日11:33
跨境用wg这种太容易被墙或者qos了,就算是境内udp也容易qos,套个常见的代理协议会好很多。

回复
未知狐未知狐
2025年4月8日17:44
墙是目前没墙,代理协议是万万不敢套的。

回复
GoodBoyboyGoodBoyboy
2025年4月7日20:42
哈哈哈我说过了,国内玩UDP被运营商Qos就老实了(doge

回复
未知狐未知狐
2025年4月8日7:31
🫠那也要玩.....TCP组网大概率直接被当某种正向代理ban 了。

作者: 未知狐 时间: 2025-3-22 分类: 随手记,Linux,折腾=-=
我,人在西安,它,宕在郑州。
人已麻。
没事别动/etc/fstab ,有事也别tm动。
预计下次回家才能修,那就已经是清明节了,啊啊啊啊啊啊。

2025年4月5日更新
经过清明节至今天凌晨的抢修已彻底恢复 nas.xfox.fun和LinuxUse.site的反代。
同时,今后Frp将仅用作防失联的措施之一,不作为任何服务的主要对外访问渠道。
上述所有站永久切入HK三网优化线路,不再使用第三方反代业务。

顺带一提,修复排查的时候用了DeepSeek R1 和V3 但是发现回答会受到输入的错误配置文件的干扰使其产生幻觉。
所以我建议如果你想偷懒,最好让AI重新写配置文件而不是输入可能存在问题的配置信息让他修改。
Momo5418
2025年4月5日21:39
在学校配置家里软路由的nginx搞得端口占用了,访问后台直接403,本打算回家弄,结果回到家它自己好了。

回复
未知狐未知狐
2025年4月5日22:57
我猜是nginx启动了占用了80/443又没有配置对后台管理Web服务反代 导致无法访问,回家的时候nginx又因为没有设置Systemd保活 down了,于是乎后台又能正常访问了。

回复
GoodBoyboyGoodBoyboy
2025年3月23日17:03
这些高风险操作我向来是不敢远程弄的,怕一个reboot后就再也连不上ssh了😂

回复
未知狐未知狐
2025年3月23日19:02
我还是大意了,无所谓了,暂时也不用往NAS上放什么东西,等有空回家了再修,我已经远程关电了。

回复
EricQwQEricQwQ
2025年3月28日0:09
emmm遠程開機也救不了嗎

回复
未知狐未知狐
2025年3月29日16:13
会挂载不上盘,直接卡在开机过程。索性直接远程拔电了。

=-=本来不想去的,但是工友盛情难却还是在周六窜出去了。
爬山,累得半死,回来肌肉酸痛那叫一个酸爽。当然,出于被忽悠去爬山的报复心理,我拉着他俩不坐缆车硬腿上去,又腿下来,只有临走的时候时间太晚了我也懒得折腾了才花20块钱买了张景区内的载客观光车加速回到起点。
不知道当时脑子是不是在厂里干活干多了坏掉了,出去的时候没提前做防晒,戴着鸭舌帽穿着短T就冲了。
回来发现裸露的肢体直接就是一个晒伤,皮肤红的跟大虾一样,一接触阳光或外力刺激就有刺痛感。
就在写本文的时候又感觉胳膊晒伤的位置瘙痒难耐,可能是皮肤组织的炎症反应。
罢了罢了,吃点维生素C+复合B硬抗吧,自限性疾病又没什么特效药...唉。

8月5日

洗澡的时候发现胳膊晒伤的区域起皮了,看来损伤的皮肤正在缓慢修复。

照片

我GFPGAN1.4修复2025-08-07T09:19:28.png
工友拍的有点难绷,以后一定要自己买个大疆好拍照,只有自己才知道自己想拍成什么样。
下面是我拍的。
场内车票
下面是一张HEIC图片,根据在博客上无障碍浏览HEIC/HEIF图片我已经给博客添加了用于转换HEIF格式到浏览器可显示的图片格式的代码,理论上你可以在大部分现代浏览器上浏览下面这张图片。
两位工友-HEIC测试图片
由于Chromium目前还不支持HEIC图片所以你可能需要下载才能看。不过,你可以通过我的NAS浏览这些照片。
NAS预览
密码xfox.fun

既要有菩萨心肠,也要有雷霆手段。 这句话我第一次听,但是意思一样的话我听过很多。
上海出租车司机拒退19岁小伙错付的1010元车费,小伙报警无果(警方仅提供车牌号)最终喝下敌敌畏自杀。
这件事暴露出两个问题:

素质教育只教素质不教做人

只教人遵纪守法,不教人树纪立法。
基层警务渎职问题普遍存在

通过车牌号警方完全有能力在几分钟内就调出车主信息,一个电话过去要求退款不要太简单。
畸形的素质教育背后是只教半句的老师
既要有菩萨心肠,也要有雷霆手段。及格的老师会教你前半句,让你多体谅别人,少生事端。
优秀的老师会教你后半句,让你攥起拳头擡起胳膊对不公平不合理说不以便维护自身权益。

坦白来说,素质教育的畸形也构成了一种筛选,被“维稳优先“流水线规训成功的人遇到问题往往是吃一堑接着然后再吃一堑,这时候又有两种情况:精神内耗/情绪洪泛。 前者就是窝囊自杀的小伙,后者就是刀刀入肉的破防打工人。
没有被规训成功的倒是更知道要利用一切可利用的维护自身权利了,这样的人既怕死,又怕侵犯自身权益的人不死。
情绪洪泛伤及自身的人是可怜的,精神内耗的人是可悲的,但作为一个打工人从旁观者角度看,我宁可世上多些破防的可怜人杀一儆百也不想到处是可悲的窝囊废助长不法气焰。
当然,如果有的选,又一定要二选一我希望大家面临不公之时都是不被规训成功的人,尽可能合理合法的解决问题不要伤及自身。

宿舍里中暑死掉的老大爷,吃着含铅颜料染色食物的孩子和老师。捂嘴的有形大手,愤怒而无力的平民,讨要自己应得工资的工人。
​这就是我们生活的时代,一个礼崩乐坏又恰好信息传播迅速,网络审查严苛,造就翻墙群体众多,内忧难解而比下有余。
​或不屑,或愤怒,或得利或失去权利。
​红色信仰渐褪远去,什么颜色会成为新的象征?
宣传与实践的反差,是撕破假大空教育遮羞布的利刃。

上个月看到M5就想买了,但是当时又觉得真的想学画画完全可以鼠绘,最终就放弃了下单。
昨晚又突然想起来这件事和曾经试图学习绘画的经历,果断直接下单。

两次放弃与逃避
我还记得小时候曾经主动提出要学画画但最终都虎头蛇尾。
其中一次,我依稀记得无法接受自己被束缚在那个狭小的画室里不能随时回家玩,也对前几天枯燥的画线条感到无趣乏味最终提出放弃了。
另一次,应该还是那个画室学习素描吧,别人都是带齐装备,画板,笔自备,纸似乎画室当堂会发一张。第一次去的时候画室老师当着家长面不好敷衍,也确实给我找来了一张公用画板,后来自己去上课便没有这待遇了,自己找也没有找到。而我最终,只得到了家长以画室有画板可以用的搪塞,最终只得拿着买好的铅笔去了那么几次。
坐在一群自带画板的学生中间,弱小而无助。
回家嗷嗷哭,还要被骂自己要学又不学了。

昨晚就这样回想起这些痛苦的记忆片段,我忽然感觉自己很可悲,我终究是习得了父母的吝啬,甚至有时候自己对自己都如此吝啬,早在中学就想要现在却又舍不得买一个139.64包邮的数位板,甚至自己给自己找理由搪塞自己。
请朋友吃饭,几百块钱随便就付了。给喜欢的女孩买零食也没手软过,可到了为了自己兴趣爱好的时候还要如此斤斤计较自我搪塞。那我活着究竟为了什么?为了和自己的父母一样搪塞自己,搪塞后辈得过且过吗?
既然选择生活下去进入社会参加工作,为什么舍不得对自己好一些?
当然值得自我表扬的是,我从没停止在IT软硬件上持续投入金钱和时间,包括本博客和Linux用户站的服务器,域名,X99,3060laptop及12G Vram改装。🤣
参加工作换取报酬不应该为了别人,首先应该为了自己更快乐。――――――取悦自己
我相信爱自己,舍得给自己的兴趣爱好(包括曾经希望拥有的兴趣爱好)花钱应该在今后成为自我疗愈历程的重要一部分。
既然选择生活,先做一个爱自己的人吧。

6月6日 Update:
到货了但是发现竟然还是古董MicroUSB接口,给我整的有点无语。想着都2025了大意了没细问接口这件事。遂退货退款+钱换高漫M8了。 顺便去论坛发帖资讯了一下网友的意见,意外的统一建议IPAD,但是真心不想用IPAD,或者说不想用苹果的封闭生态专有产品。故最终还是+了100多块钱继续买M8了,咸鱼二手便宜一百,相当于我一天工资,不过懒得操心质量问题,况且是补偿自己的该花的我不打算那么抠抠索索。

6月8日 Update
M8到了,感觉....作为泡面盖子很合适.heic

11 条评论 已丢失

https://web.archive.org/web/20250416075550/https://xfox.fun/archives/2088/ 恢复
作者: 未知狐 时间: 2025-3-22 分类: 随手记,Linux,时间轴,折腾=-=
购买新的服务器后,我也不打算继续续费sakurafrp了,所以反代提供公网IPv4访问的工作需要转移到Claw HK机上,同样地Mumble服务器的IPv4转发也需要迁移到Claw HK机器上。
除了博客本身直接部署,所有需要反代,转发的服务都通过WireGuard组网后虚拟局域网转发完成。

Nginx反代配置

nas.xfox.fun

# HTTPS 强制跳转配置
server {
    listen 80;
    listen [::]:80;
    server_name nas.xfox.fun;
    return 301 https://$host$request_uri;
}

# 主 HTTPS 服务配置
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nas.xfox.fun;

    # 更新后的SSL证书路径
    ssl_certificate /home/xfox/www/all_xfox.fun/fullchain.pem;
    ssl_certificate_key /home/xfox/www/all_xfox.fun/privkey.pem;

    # SSL 优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    add_header Strict-Transport-Security "max-age=63072000" always;

    # 反向代理配置
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        proxy_redirect off;
        proxy_pass http://10.10.0.2:5212;

        # 超大文件支持 client_max_body_size 缺省单位->字节 ,k千字节,m兆字节,g千兆字节
        client_max_body_size 16g;
        proxy_request_buffering off;
        proxy_buffering off;
    }
}

Mumble IPv4转发 && 数据库与配置文件同步

我尝试使用iptables转发失败了,然后换了nftables还是失败了,懒得折腾了。
直接把Mumble服务器也迁移到Claw HK上。
后续直接写脚本同步数据库和配置文件。

Mumble数据库和配置文件
两个属于root的文件:

-rwxrwxrwx 1 root root 16K 12月16日 20:26 /etc/mumble-server.ini
-rwxrwxrwx 1 root root 1016K  3月22日 16:06 /var/lib/mumble-server/mumble-server.sqlite

接下来先把家庭服务器的Mumble服务器配置同步到ClawHK服务器

# 同步配置文件
sudo rsync -avz -e "ssh -i /home/xfox/.ssh/id_ed25519 -o StrictHostKeyChecking=no" \
  /etc/mumble-server.ini \
  [email protected]:/etc/

# 同步数据库文件
sudo rsync -avz -e "ssh -i /home/xfox/.ssh/id_ed25519 -o StrictHostKeyChecking=no" \
  /var/lib/mumble-server/mumble-server.sqlite \
  [email protected]:/var/lib/mumble-server/

启动Mumble服务器发现:
Mar 22 09:58:29 ClawHK mumble-server[50320]: 2025-03-22 09:58:29.869 Initializing settings from /etc/mumble-server.ini (basepath /etc)
Mar 22 09:58:29 ClawHK mumble-server[50320]: 2025-03-22 09:58:29.870 MetaParams: Failed to read /home/xfox/www/all_xfox.fun/fullchain.pem
看上去Mumble-server没权限读取证书。

sudo chmod +x /home/xfox /home/xfox/www /home/xfox/www/all_xfox.fun

即可。

仅有一条评论
EricQwQEricQwQ
2025年3月28日0:17
sakurafrp還是不錯的…免費版真香,主要是穩定+方便

回复