低成本私域直播&播放平台搭建——Frp技术实例
通过Frp将内网服务开放在公网,完美避免服务器和个人PC的性能和网络矛盾,Frp简单来说也是反向代理的一种
使用场景:
直播推流是对CPU单核和多核要求都高的场景,单核编码帧画面,决定延迟和画质;多核并发编码,影响效率。大家在租用云服务器的时候,CPU内核和RAM是影响价格的重要因素之二。从处理器的角度来看,低廉服务器的CPU年代久,架构老,硬件编码能力弱;我们的个人电脑内核数更多(相较于我们租用云服务器的划分内核数),而且Intel的核显编解码能力大家有目共睹,能胜任一般情况下的推流和编解码场景。从RAM的角度来看,我们希望服务器能跑更多的服务,每个服务的内存占用尽量降低,但是推流和编解码是占用内存较大的场景,会增加我们机器的负载;而在现在的个人电脑上,16G都有隐隐不够用的而向32G发展趋势,可以说应付推流和编解码的占用轻轻松松,退一步讲,即使8G/4G,对于Linux和Docker也是相当自由且富裕的(请读者忽略挡在内存大涨价的行情)。
说完了性能,再来谈谈网络。当下国内的家庭网络正处于IPV4极度稀缺(指几乎不可能向运营商申请),IPV6正在推进(但是也是大NAT)的阶段。所以将内网服务开放在公网一直是大家的需求。云服务器一般都有独立的公网地址,或者NAT端口,公网访问轻轻松松,我们可以通过Frp技术将内网设备连接公网服务器,Frp对于服务器资源占用取决于流量多少,但消耗也远远小于直接在服务器端推流和编解码,从而内网服务<—>服务器<—>用户。这样,个人电脑负责性能,服务器负责网络流量转发,各司其职,发挥所长,两方都是杀鸡用牛刀。
实战平台:
搭建教学:
Frp
以1Panel为例,打开应用商店,搜索Frp,选择Frp服务端安装并设置账密,一个面板端口(可以不开),一个frp服务端口(一定要开),再另外开启一个打洞端口(一定要开)。以我的服务器为例,打开文件目录
/opt/1panel/apps/frps/frps/data,打开frps.toml,将以下内容粘贴1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19bindAddr = "0.0.0.0"
bindPort = 7000 #面板端口
vhostHTTPSPort = 8443 #打洞端口
auth.method = "token"
auth.token = "你的token"
webServer.addr = "0.0.0.0"
webServer.port = 7500 #服务端口
webServer.user = "你的用户名"
webServer.password = "你的密码"
# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"在我们个人电脑下载并安装Frpmgr,选择新建配置-基本,名称随意,填入服务器地址、端口(默认7000);切换认证一栏,选择Token,填入第一步设置的密码。
打开我们第二部建立好的配置,右侧点击新建,名称随意,类型选择tcp,本机地址127.0.0.1,本地端口取决于你本地服务的端口,远程端口即为第三部的打洞端口,其他保持默认即可。
公网打开Frp服务面板,显示客户端Online;本地打开Frpmgr,绿灯亮起,即是连接成功。
SyncTV-Docker Desktop
- 终端输入wsl进入wsl,打开电脑上的Docker Desktop(如果读者对这一步存疑,可以阅读我上篇文章 WSL2—Linux发行版以及Docker的安装)
- 在Docker Desktop顶部搜索synctv,选择第一个直接Run,名称随意,端口选一个空端口(可以在PowerShell里面用
netstat -ano | findstr :端口,这条命令检查占用,无返回即是空端口)。 - 容器绿灯亮起即启动成功,在浏览器内访问localhost:端口,即可进入webui面板,默认账密都是root。

SyncTV-wsl命令行
- 终端输入wsl进入wsl,
sudo -v ; curl -fsSL https://raw.githubusercontent.com/synctv-org/synctv/main/script/install.sh | sudo bash -s -- -v latest或者docker run -d --name synctv -v /opt/synctv:/root/.synctv -p 8080:8080 synctvorg/synctv - wsl中输入
synctv server启动服务 - 在浏览器内访问localhost:端口,即可进入webui面板,默认账密都是root

Frp反代建站:
- 以OpenResty为例,选择反向代理,将我们的打洞端口反代到指定域名,并配置https
- OpenResty建站详见使用1Panel进行反向代理和SSL证书申请
SyncTV使用技巧:
- 登录后,在个人中心-绑定账号可以绑定Billbill,Alist(Openlist),Emby。其中Alist账户要求不能开始2FA
- 每个注册的账户都可以绑定个人账户,管理员可以设置用户注册要求和开启房间要求
- 添加BiliBili视频时,选择共享和代理选项,可以给观众提供绑定账号的B站权益(大会员)
- 创建直播,建议在本地(localhost:8080)地址创建,这样串流不经过服务器,本地OBS直连SyncTV
- 房间内的语音要求Https连接(前文反代建站配置https)
后记:
这样流程走下来我们就能实现高性能私域直播,也许有读者知道Owncast这个更专业的私域直播服务,我之前也使用过,也很好,参数更多可调整,但是我之所以SyncTV,是因为他集成了Bilibili,Alist和Emby和直播,原生中文支持,更加易用。最后,很感谢你能看到这里。







