本文主要记录自身PLEX通过APP访问的记录,也算是一个教程。
另感谢各教程贡献者,详见参考。
本教程重点在内网穿透的域名访问内网资源。
适用人员
针对无公网IP,同时PLEX安装在群晖或其它NAS上的,希望在外网使用pelx 应用访问家中资源的人(其它系统也类似,原理相同)
前期准备
购买云服务器
因为选择云服务器的主要原因是实现内网穿透,对设备之间进行搭桥,因此购买时需要着重考虑服务器的上行与下行速度。换言之,我们需要购买一台带宽高(类似于NAT机)的云服务器。
高上行与下行速度的云服务器确实也不少。无论是阿里云、腾讯云都有许多类似的服务器,但价格似乎有些不敢恭维了。
我使用的是AZURE云服务器(日本西南节点),新人有一年免费使用权,可以流畅播放2K内网视频。
其它的服务器选择可以看其它教程,按需选择。
域名注册
选个大的域名服务商注册即可,国内腾讯、阿里、华为均可,国外的话我没有这个需求,请自行查资源。具体可以见另一个博主的文章——新手建网站域名申请技巧和注意事项
暂定域名为 test.vip
域名解析
注册完毕后,可以在服务上中设置域名解析,IP指向服务器的IP地址,子域名可以使用www
,可以针对特定服务,指定子域名,如plex
加上子域名完整域名为 plex.test.vip
FRP安装与配置
找到需要的frp版本,获取下载链接
进入frp下载页面, 找到需要下载的版本
登陆VPS
使用SSH登陆VPS,并执行以下命令下载对账版本的FRP
如果没有权限,开头添加sudo
即可。
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
解压下载的压缩文件
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
查看解压情况
ls
成功解压,为了方便后续操作,建议重名为frp
mv frp_0.36.2_linux_amd64 frp
进入到frp目录,找到frps.ini
vi frps.ini
vi打开文件进行修改,不会的话请查看参考-3
加入一行token,大家可以自行设置,但是这个是明文密码,不要设置自己的常用密码即可。
保存后推出vi
./frps -c frps.ini
执行上命令,可以看到服务端启动成功了
注意VPS需要开通该端口权限。
首先ctrl c
退出frps服务,然后输入以下命令
iptables -I INPUT -ptcp --dport 7000 -j ACCEPT
输入以下代码进行服务设置
vi /lib/systemd/system/frps.service
按i
键进入编辑模式
黏贴下列命令
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.ini
[Install]
WantedBy=multi-user.target
按esc键 输入 :wq
回车
启动frp服务
systemctl start frps
设置自动启动
systemctl enable frps
查看frps运行状态
systemctl status frps
如果需要重启服务,使用以下命令
systemctl restart frps
群晖端配置
客户端配置文件
新建frpc配置文件,文件名为frpc.ini
因为我只想暴露plex,所以开放了plex访问端口
# frpc.ini
[common]
server_addr = plex.test.vip #之前申请的域名
server_port = 7000 #frps服务端端口 对应bind_port
token = 123456 #frps服务端设置的token
[plex]
type = tcp
local_ip = 127.0.0.1 #也可以是内网访问群晖的ip或地址
local_port = 32400 #访问plex的内网端口
remote_port = 6666 #映射到外网的登陆端口,可以自行设置,如6666
保存文件至docker有权限访问的目录,如 /docker/frp/
下
安装docker版frp
群晖-->docker-->注册表-->搜索frp
选择
或者
点击下载,选择最新即可
点击映像,待下载完毕点击启动
点击高级设置
点击卷,点击添加文件配置文件映射
点击网络,勾选**使用与Docker Host相同的网络
点击环境,修改ARGS为fprc
点击应用,下一步,应用,启动Frp
测试外网是否可以打开
输入 plex.test.vip:6666
*端口6666对应fprc.ini中的remote_port
配置
可以看到正常打开plex页面
SSL证书不大想弄,可以试试
plex加载登陆界面会比较慢
到了这一步很多人已经很满足了,但是网页加端口太不方便了,哪有只输入网址爽,可以使用nginx代理下解决此问题
NGINX代理
使用SSH登陆VPS
安装 nginx
sudo apt-get install nginx
配置nginx
默认配置文件路径/etc/nginx/nginx.conf
这个文件里可能会有引用,比如
include /etc/nginx/conf.d/*.conf;
那么实际上你的项目配置文件就是在/etc/nginx/conf.d/
这个文件夹下的所有.conf
文件;
一般一个项目(域名)配一个文件,比如你的域名是www.baidu.com
,那么你的配置文件就可以叫
/etc/nginx/conf.d/www.baidu.com.conf
如`plex.test.vip.conf
编辑配置文件
vi /etc/nginx/conf.d/plex.test.vip.conf
复制以下内容到编辑框中说明见下图
upstream plex {
server 127.0.0.1:6666;
}
server {
listen 80;
listen [::]:80;
server_name plex.test.vip;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:6666;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx服务相关的操作可以不必使用systemctl或service,可以直接使用
直接启动服务
nginx
重启服务
nginx -s reload
查看nginx当前的状态
systemctl status nginx
测试输入域名访问
这时候已经可以在外网愉快的访问了,但是只能通过浏览器操作,想直接用plex应用访问,还得看下一步
PLEX服务端设置
打开Plex服务器,设置->网络,找到 Custom server access URLs
你填写的URL就是你穿透出去的域名或者IP,例如
http(s)://xx.xx.xx.xx:[穿透端口] 或者
http(s)://plex.test.vip:[穿透端口]
注意
建议使用IP地址,因为有些国内的域名,Plex是解析不到的
务必取消勾选上方的【Enable Relay】,具体原因和原理参见 【Plex】 Enable Relay原理及功能介绍
结语
配置完后,就可以愉快的访问plex,如果慢的话,就买个带宽大的VPS!
参考
- 群晖DS218+ 内网穿透笔记
- 域名注册 新手建网站域名申请技巧和注意事项
- NAS 篇十一:小白上手教程,自建Frp内网穿透,实现外网访问nas设备
- 使用apt-get安装Nginx
- FRP内网穿透后 App无法使用问题