基于FRP内网穿透实现plex远程访问

本文最后更新于:21 天前

前言


最近折腾了plex电影库,但是不能够远程访问,本着折腾无止境的念头,所以才有了使用frp服务器内网穿透的想法……周末开干。

使用了digitalocean的vps作为服务器,一个月5刀的费用。后续还可以翻墙,搭建各种功能,还算可以吧~

frp工作原理:简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。

服务器端


系统使用Ubuntu 18.04.5 x64,frp客户端和服务端本身同时均支持Linux和Windows,且配置方法一样,请根据实际环境自行测试。

服务器端配置代码:

# 下载frp文件并进行解压
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz
tar -zxvf frp_0.22.0_linux_amd64.tar.gz

cp -r frp_0.22.0_linux_amd64 frp
cd frp && rm frpc && rm frpc.ini

# 修改配置文件
vim frps.ini

# 文件大致格式
[common]
bind_port = 7000 # 默认只有这一行
dashboard_port = 7500 # 开启dashboard
token = 12345678 # token为服务器端和客户端的标识
dashboard_user = admin # dashboard的用户名
dashboard_pwd = admin  # dashboard的密码
  • “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
  • “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
  • “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
  • “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。

运行服务器:

# 第一种
./frps -c frps.ini  # 这样会阻塞住,ctrl+c就会停止
# 第二种
nohup ./frps -c frps.ini & # 这样就丢到后台去了,通过jobs可以看后台运行的服务。

针对上述第二种方案怎么关闭:

ps -aux|grep frp| grep -v grep
root      3600  0.1  0.1 110188  9484 pts/0    Sl   15:04   0:00 ./frpc -c ./frpc.ini
kill -9 3600

怎么开机启动:

vi /etc/systemd/system/frps.service # 新建此文件,并写入以下内容,注意frps和frps.ini的位置

[Unit]
Description=frps daemon

[Service]
Type=simple
ExecStart=/usr/bin/frps -c /etc/frps/frps.ini

[Install]
WantedBy=multi-user.target

# 启动并设为开机自启。
systemctl start frps
systemctl enable frps

客户端


同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下下载和解压等步骤不再描述。
假定你下载了“frp_0.22.0_windows_amd64.zip”,将其解压在了D盘根目录下,并且将文件夹重命名为“frp”,可以删除其中的frps和frps.ini文件。
用文本编辑器打开frpc.ini,与服务端类似,内容如下。

[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678
[plex]
type = tcp
local_ip = 127.0.0.1           
local_port = 32400
remote_port = 7001  

"server_addr" 为服务端IP地址,填入即可。
"server_port"为服务器端口,填入你设置的端口号即可,如果未改变就是7000
"token"是你在服务器上设置的连接口令,原样填入即可。

原理图:来源于网络

运行:

cmd命令符窗口进入目录:frpc -c frpc.ini,同样的,会有一个窗口,而且关了就停了。

后台运行:新建frp.bat,将下述命令放进去,点击frp.bat即可运行。

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
D:
cd D:\frp
frpc -c frpc.ini
exit

关闭:

之后直接运行这个 .bat 文件即可启动frpc并隐藏窗口(可在任务管理器中退出)。
至于开机启动,把这个 .bat 文件直接扔进Windows的开机启动文件夹就好了 :)

总结


至此,我们可以通过手机用vps的ip地址加7003端口访问plex服务了,至于怎么绑定域名,还没有折腾明白,先写到这里。

后续


已经使用宝塔面板反代绑定了域名,但是……传出去之后宿舍看还是渣渣画质,不如不开。如果回家或者在外边,倒是可以开,或者后期再弄一个私有云盘。



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!