无公网访问emby,内网穿透之frp篇
前言
作为一个对外网访问速度也有要求的极致主义者,frp内网穿透是最好的选择,没有之一。
我曾试过或了解过的个几种方案:
IPv6:要求外网网络也具备v6,并且在实际使用中发现跨运营商有明显限速,卡到无法播放
组网:tailscale和zerotier,广大网友都测试速度仅有1-5Mb/s,不符合我要求
樱花frp:带宽10Mbps,免费版5G/月,每日签到平均可以达到100G/月,但晚上高峰期依然卡的不行,需要至少购买青铜VIP(10元/月),带宽24Mbps,赠送流量108G,带宽勉强够用,流量差点意思,不过性价比高
境外frp:由于我有国外的vps,也顺便测试了下frp,延迟太高,同时也不稳定
终极方案:阿里云/腾讯云vps搭建frp内网穿透,极其简单无脑
我是深圳联通商宽1000下300上
2024年底阿里云推出了峰值200Mbps的轻量应用服务器,不限流量,首年68元(2核2G),次年最低配2核0.5G,35元/月
连续一周每晚实测infuse跑emby满速200Mbps,比花钱买公网IP舒服多了(100/月)

让我们开始吧!
购买阿里云服务器
新人直接在阿里云轻量应用服务器界面上下滑动浏览,查看优惠价购买,此处不细说了
安装frp服务端frps
下载并安装frp
用ssh工具(finalshell、putty、xshell等)连接阿里云vps
#下载frp压缩包
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
#解压到根路径
tar -zxvf frp_0.62.1_linux_amd64.tar.gz
#进入frp目录
cd frp_0.62.1_linux_amd64
#进入编辑文件
vim frps.ini编辑frps.ini配置文件
[common]
bind_addr = "0.0.0.0"
bind_port = 7000
token = hBkFhIGrej9cpGP4o
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin123456
log_file = "/frp_0.62.1_linux_amd64/frps.log"
log_level = "info"
log_max_days = 3bind_addr 监听v4地址
bind_port 监听端口
token 密钥,用于连接frps服务端和frpc客户端
dashboard_port WebUI端口
dashboard_user WebUI用户名
dashboard_pwd WebUI密码
log_file 指定日志存放路径,方便查看
log_level 日志级别分为info、warn、error
log_max_days 日志保存天数
配置systemctl开机自启动
首先创建并进入frps.service服务文件
vim /etc/systemd/system/frps.service填写配置内容
[Unit]
Description=Frps Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/frp_0.62.1_linux_amd64/frps -c /frp_0.62.1_linux_amd64/frps.ini
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.targetExecStart是执行命令,填写格式为:frps -c frps.ini,但frps和frps.ini填写绝对路径,可根据自己实际情况修改
执行以下命令来启用并立即启动服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable frps
# 立即启动服务
sudo systemctl start frps
# 检查服务状态
sudo systemctl status frps安装frp客户端frpc
同理ssh连接家里群晖服务器
#下载frp压缩包
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
#解压到根路径
tar -zxvf frp_0.62.1_linux_amd64.tar.gz
#进入frp目录
cd frp_0.62.1_linux_amd64
#进入编辑文件
vim frpc.ini编辑frpc.ini配置文件【注意不是frps.ini】
[common]
server_addr = [填写阿里云vps的IP]
server_port = 7000
token = [填写frps服务端的token]
compression = true
[emby]
type = tcp
local_ip = 127.0.0.1
local_port = 8096
remote_port = 8096[common]固定名称
server_addr 填写阿里云vps的IP
server_port 填写frps的服务端口
token 填写frps服务端的token
compression 压缩传输,加快转发速率,适合流媒体
[emby]自定义服务名,必须是唯一值,不能重复
remote_port frps的远程端口,在frps中必须是唯一,假如给多个frpc客户端穿透,可以修改此处值避免重复
配置systemctl开机自启动
首先创建并进入frpc.service服务文件
vim /etc/systemd/system/frpc.service填写配置内容
[Unit]
Description=Frpc Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/frp_0.62.1_linux_amd64/frpc -c /frp_0.62.1_linux_amd64/frpc.ini
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.targetExecStart是执行命令,填写格式为:frpc -c frpc.ini,但frpc和frpc.ini填写绝对路径,可根据自己实际情况修改
执行以下命令来启用并立即启动服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable frpc
# 立即启动服务
sudo systemctl start frpc
# 检查服务状态
sudo systemctl status frpc成功显示 active(running)

防火墙对应打开所需端口

最后检查
浏览器输入:http://[阿里云ip]:7500
可以看到frps已经在正常监听emby的端口了

此时外网应该可以直接访问你家emby了 http://[阿里云ip]:8096

强烈建议使用nginx反代
以下是nginx的优点
屏蔽FRP端口和协议:FRP默认使用TCP端口(如7000、8080等),直接暴露这些端口可能让攻击者更容易识别服务类型。Nginx反代后,外部只看到标准的HTTP/HTTPS(80/443)流量,降低被扫描的风险。
过滤恶意请求:Nginx可通过规则拦截恶意流量(如SQL注入、CC攻击),而FRP本身不具备这种能力。
避免直接暴露内网服务:FRP将内网服务映射到公网,而Nginx作为中间层可以限制访问路径(如只允许
/emby路径转发),减少攻击面。方便SSL证书管理:在Nginx上统一配置HTTPS证书(如Let's Encrypt),无需在每个内网服务(群晖、Emby)上单独配置证书。FRP只需转发HTTP流量到Nginx,降低内网服务配置复杂度。