Plex

之前只是使用网站服务器搭建的Plex,晚高峰时期访问速度着实感人,于是更换了新的服务器来专用影视观看,顺便记录一下搭建过程,补上之前缺失的。

一、VPS利用Rclone挂载Google Drive团队盘实现无限空间


由于影视文件占据空间着实有些大,在服务器存储的话不太经济,钱包也不是很吃得消。搭建所用VPS本身位于境外,访问Google没什么问题,Google Drive团队盘本身几乎无限的存储空间相比之下就显得非常经济实惠了。只要VPS网速跟得上,在使用过程中与本地存储不会有明显的感知。通常国外的VPS供应商几乎都会提供至少100 Mbps的带宽,因此使用Rclone挂载并不会对实际体验中产生可感知的影响。

接下来将会完整展现这一过程,Rclone的安装与配置并不复杂,跟着教程一步步来很快就可以搞定。

1.1 Rclone 是什么

Rclone是一个命令行程序,用于管理云存储上的文件。它是云供应商 Web 存储接口的功能丰富的替代品。超过 40 种云存储产品支持 rclone,包括 S3 对象存储、商业和消费者文件存储服务以及标准传输协议。它的作用包括但不限于:

  • 将文件备份(和加密)到云存储
  • 从云存储恢复(和解密)文件
  • 将云数据镜像到其他云服务或本地
  • 将数据迁移到云端,或在云存储供应商之间迁移
  • 将多个、加密、缓存或多样化的云存储挂载为磁盘
  • 使用lsf、ljson、size、ncdu分析和说明云存储中保存的数据
  • 将文件系统联合在一起以将多个本地和/或云文件系统呈现为一个

如果你有兴趣的话,可自行访问他们的官网,官网中列出了目前Rclone所支持的云服务提供商列表,这一列表仍在持续更新中,如果当前列表中暂无您所需的服务,请耐心等待,或许在不远的将来就会进行支持。

1.2 Rclone 的安装

关于Rclone的安装,官网有给出相关指导,由于本教程使用VPS系统为Debian 11,所以可能并不适用于您的环境,您可访问官网页面按照引导自行进行安装。

在安装Rclone时官方提供了安装脚本,该脚本适用于Linux/macOS/BSD系统,具体如下:

sudo -v ; curl https://rclone.org/install.sh | sudo bash

当出现如:

rclone v1.59.1 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.

Rclone安装成功

这样的提示时,代表此时Rclone已成功安装,即可进入下一步。也可输入rclone命令,如果屏幕输出了帮助信息,则此时也意味着安装成功了,可以进入下一步。

Rclone帮助信息

1.3 Rclone 的配置

Rclone安装完成后,需要对其进行配置。由于我并不会用到其中的全部功能,关于该部分内容有兴趣的话可以查看官方文档

Rclone安装完成后,只需输入rclone config命令即可开始配置。

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config

第一次配置时会出现以上内容,这里我们选择输入n创建一个新的配置。

然后输入一个你喜欢的名字即可(这里本教程使用moon命名)。在命名后,会需要你选择要挂载的服务,因为本教程使用的是Google Drive,所以选择 18 ,由于支持范围在不断更新中,在自行配置时,请选择需要的服务即可。

Enter name for new remote.
name> moon #这里我命名为 moon ,在自行配置时选择喜欢的名字就好,但请记住,后面会用到。

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon Drive
   \ (amazon cloud drive)
 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, Digital Ocean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS and Wasabi
   \ (s3)
 6 / Backblaze B2
   \ (b2)
 7 / Better checksums for other remotes
   \ (hasher)
 8 / Box
   \ (box)
 9 / Cache a remote
   \ (cache)
10 / Citrix Sharefile
   \ (sharefile)
11 / Combine several remotes into one
   \ (combine)
12 / Compress a remote
   \ (compress)
13 / Dropbox
   \ (dropbox)
14 / Encrypt/Decrypt a remote
   \ (crypt)
15 / Enterprise File Fabric
   \ (filefabric)
16 / FTP
   \ (ftp)
17 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
18 / Google Drive
   \ (drive)
19 / Google Photos
   \ (google photos)
20 / HTTP
   \ (http)
21 / Hadoop distributed file system
   \ (hdfs)
22 / HiDrive
   \ (hidrive)
23 / Hubic
   \ (hubic)
24 / In memory object storage system.
   \ (memory)
25 / Internet Archive
   \ (internetarchive)
26 / Jottacloud
   \ (jottacloud)
27 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
28 / Local Disk
   \ (local)
29 / Mail.ru Cloud
   \ (mailru)
30 / Mega
   \ (mega)
31 / Microsoft Azure Blob Storage
   \ (azureblob)
32 / Microsoft OneDrive
   \ (onedrive)
33 / OpenDrive
   \ (opendrive)
34 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ (swift)
35 / Pcloud
   \ (pcloud)
36 / Put.io
   \ (putio)
37 / QingCloud Object Storage
   \ (qingstor)
38 / SSH/SFTP
   \ (sftp)
39 / Sia Decentralized Cloud
   \ (sia)
40 / Storj Decentralized Cloud Storage
   \ (storj)
41 / Sugarsync
   \ (sugarsync)
42 / Transparently chunk/split large files
   \ (chunker)
43 / Union merges the contents of several upstream fs
   \ (union)
44 / Uptobox
   \ (uptobox)
45 / WebDAV
   \ (webdav)
46 / Yandex Disk
   \ (yandex)
47 / Zoho
   \ (zoho)
48 / premiumize.me
   \ (premiumizeme)
49 / seafile
   \ (seafile)
Storage> 18 #这里选择18,由于序号可能发生变动,在自行配置时请选择对应的序号。

选择Google Drive后,需要配置谷歌 Client Id & Client Secret

Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.

这里建议自行申请一个,这也是官方所建议的,可参照官方教程进行申请。当然也可直接回车使用Rclone官方提供的Id与密钥,但由于这是在所有Rclone通用的,Google 为每个 client_id 可以执行的每秒查询数设置了全局速率限制。Rclone的配额已经很高,但仍可能由于使用人数过多而发生一些意料之外的问题。

在填入Client IdClient Secret后,会提示选择操作权限,因为是个人使用,所以在这里选择授予完全访问权限,也就是1

Option scope.
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.

#完全访问所有文件,不包括应用程序数据文件夹。
 1 / Full access all files, excluding Application Data Folder.
   \ (drive)
#对文件元数据和文件内容的只读访问。
 2 / Read-only access to file metadata and file contents.
   \ (drive.readonly)
#只能访问由 rclone 创建的文件。这些在驱动器网站上可见。当用户取消对应用程序的授权时,文件授权被撤销。
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ (drive.file)
#允许对 Application Data 文件夹进行读写访问。这在驱动器网站中不可见。
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ (drive.appfolder)
#允许只读访问文件元数据,但不允许任何访问读取或下载文件内容。
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ (drive.metadata.readonly)
scope> 1 #这里因为是个人使用,所以选择授予完全访问权限,也就是输入 1 然后回车。

服务账户凭据及配置设置,由于通常是远程控制服务器的,所以不能使用自动配置方法,该方法会调用本地浏览器进行谷歌授权获取,由于使用SSH命令行无法操作,所以一定要注意。

Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty.
service_account_file>   #这里默认留空即可,一般不会用到这一项设置

Edit advanced config?
y) Yes
n) No (default)
y/n> n  #这里一定要选择n

Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> n  #如果你是通过SSH或其他方法远程访问服务器的话,这里也一定要选择n,否则将无法进入下一步授权阶段

接下来就是Google账号授权部分,即授权之前配置的谷歌 Client Id & Client Secret对应的开发者应用访问和操作Google Drive。由于我们上一步中选择了手动配置,则会输出一段命令在本地执行以获取授权令牌。

这里由于Rclone进行了一点改动,旧有教程中通过链接访问的方法无法使用,需要在本地安装Rclone运行终端输出的rclone authorize "drive" "xxx"命令来获取令牌,我本地系统是Windows 11,可直接下载对应可执行文件(.exe)。通过cmd在对应目录下操作即可。

Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
    rclone authorize "drive" "xxxxxxxxxxxxxxxxxxx"
Then paste the result.
Enter a value.
config_token> 

几点注意事项:

  • 如果你在中国大陆,请切换至对应网络环境后再运行上述命令以正常访问,同时需要在浏览器中登录谷歌账户。若使用V2ray或SS等非全局代理,则获取token会出现授权错误,可对cmd进行代理。具体命令为:
  • set http_proxy=http://127.0.0.1:xxxx
  • set https_proxy=http://127.0.0.1:xxxx
  • xxxx为自己的代理服务器的地址,可自行查阅,若代理服务器设置了用户名与密码,则还需:
  • set http_proxy_user=
  • set http_proxy_pass=
  • 若出现“此应用未经谷歌验证”页面(通常自行申请的Id与密钥会出现此问题),请点击“高级”。
  • 在出现的选项中单击“转至xxx(不安全)”,然后在跳转页面中单击“继续”,待页面显示“Success!”后将cmd中出现的token复制并输入到服务器中去。

Google授权验证

在配置令牌后,会询问是否配置为团队盘,我们所使用的就是团队盘,所以这里我们要选择 y 。之后会显示你所有的团队盘,一个团队盘对应一个选项,一个配置只能绑定一个团队盘,这里选择需要的即可,如果多个团队盘需要挂载,则创建多个remote即可。

Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n> y #这里我们使用的是共享盘,所以选择y

随后会展现当前配置的各项信息,这里我们只要简单确认无误即可,输入 y 确认后会显示当前设备所保存的remote列表,如果没有什么要修改的,按 q 退出即可。

至此,Rclone配置完成。

1.4 Rclone 的挂载

在配置完成后,想要将其作为Plex的媒体文件库,需要将Google Drive挂载到本地服务器上,关于这一部分有兴趣可以查看官方文档

要完成挂载,我们需要用到一个名叫fuse的工具,在开始前我们需要先安装它。

# Debian或者Ubantu
apt-get update && apt-get install -y fuse
#CentOS
yum install -y fuse

Rclone的挂载命令为rclone mount remote:path/to/files /path/to/local/mount [参数] --daemon

  • 在 Linux 和 macOS 上,您可以在前台或后台(也称为守护程序)模式下运行 mount。Mount 默认以前台模式运行。使用--daemon标志强制后台模式。在 Windows 上,您只能在前台运行 mount,该标志被忽略。
  • remote表示在Rclone配置中的名字,如本配置中其为moon
  • path/to/files表示云盘路径,留空则表示根目录。
  • /path/to/local/mount表示本地服务器磁盘的挂载路径,你可以选择自己喜欢的路径进行挂载。
  • [参数]需按照个人需要选定,相关内容请参考官方文档

我的挂载示例如下:

#挂载示例
rclone mount moon: /home/GDrive/Faris --copy-links --allow-other --allow-non-empty --umask 000 --daemon #

#取消挂载
fusermount -qzu <本地路径>

挂载完成后想要开机自启怎么配置呢,这里我使用了systemctl方法。

cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
AssertPathIsDirectory=LocalFolder
After=network-online.target
[Service]
Type=simple
ExecStart=rclone mount remote:path/to/files /path/to/local/mount [参数]
ExecStop=fusermount -u LocalFolder
Restart=on-abort
User=root
[Install]
WantedBy=default.target
EOF
  • remote表示在Rclone配置中的名字,如本配置中其为moon
  • path/to/files表示云盘路径,留空则表示根目录。
  • /path/to/local/mount表示本地服务器磁盘的挂载路径,你可以选择自己喜欢的路径进行挂载。
  • [参数]需按照个人需要选定,相关内容请参考官方文档

配置完成后,即可进行启用,相关命令如下:

#启动服务
systemctl start rclone
#开机自启
systemctl enable rclone
#重启服务
systemctl restart rclone
#停止服务
systemctl stop rclone
#查看服务状态
systemctl status rclone

至此,Rclone的配置就全部完成了。

二、Plex私人影音流媒体服务器搭建-Plex Media Server的安装与使用


2.1 关于Plex

Plex 为您提供了一个地方来查找和访问对您而言重要的所有媒体。从您自己服务器上的个人媒体,到免费和点播电影和节目、直播电视、播客和网络节目,再到流媒体音乐,您可以在任何设备上的一个应用程序中享受这一切。

Plex 由 Plex Media Server 和 Plex Media Player 组成,主要功能是存储+索引+转码+在线播放。Plex Media Server 凭借其强大的刮削能力以及精美的 UI 设计赢得了许多消费者的喜爱,对于影视爱好者来说,这无疑是最好的私人影音管理软件。通过 Plex Media Server ,你将不再需要忍受在线流媒体平台糟糕的画质、过低的码率以及混杂的资源。你可以一站式管理你所喜爱的电影、电视、图片乃至音乐。

Plex 提供了全面且详细的官方技术文档,其安装与配置也非常的简单与易用,目前其已实现了绝大部分的汉化,极大的降低了使用门槛。其可用于Windows、Android、Linux、OS X、FreeBSD和XBox,PS,各种TV,树莓派等,基本实现了全平台支持。Plex 甚至与Bitcasa、Box和Dropbox等云服务兼容,还支持在线格式转换,可将视频、音乐等各类文件转化为流至移动设备、智能电视和电子媒体播放器上。

2.2 Plex Media Server的安装

官方链接

Plex Media Server 下载https://www.plex.tv/media-server-downloads/#plex-media-server

Plex Media Server 的安装文档https://support.plex.tv/articles/200288586-installation/

Plex Media Server的安装非常容易,即使你没有任何的技术基础也可轻松完成。

首先请访问Plex Media Server 下载页面,Plex Media Server支持Windows、Linux、OS X、FreeBSD、Nas、Docker等,本教程以Debian 11系统进行演示,请根据你自己的设备来选择对应版本。

基本的安装方法大致可描述为以下几项:

  • 下载对应的软件包。
  • 运行安装命令。

在正式安装开始前,请确保你的系统是最新的,可使用sudo apt-get update && sudo apt-get upgrade命令。

通过wget获取软件包,或使用其他方式将下载的软件包上传至服务器。

#请将链接更换为设备对应版本的下载链接
wget https://downloads.plex.tv/plex-media-server-new/1.28.2.6151-914ddd2b3/debian/plexmediaserver_1.28.2.6151-914ddd2b3_amd64.deb

当终端输出‘plexmediaserver_1.28.2.6151-914ddd2b3_amd64.deb’ saved后即可进行安装。

#Ubuntu(请将最后一个文件名替换为您下载的包的名称)
sudo dpkg -i plexmediaserver_1.19.4.2935-79e214ead_amd64.deb
#Fedora/CentOS(请将最后一个文件名替换为您下载的包的名称)
sudo yum install plexmediaserver-1.19.4.2935-79e214ead.x86_64.rpm

若安装设备为本地设备,即可打开浏览器窗口并转到http://127.0.0.1:32400/web。若安装设备为本地网络的不同设备,可打开浏览器窗口并转到http://server.local.ip.address:32400/web(例如http://192.168.1.5:32400/web)。若安装设备为远程连接访问的,与本机不在同一网络下,则需使用SSH的隧道转发功能。

本教程属于第三种情况,关于隧道转发,SSH软件大多都有这一功能,Putty在connection – SSH – Tunnels菜单下设置,Xshell也在同一菜单层级下,因为我习惯使用Xshell,这里也以它为例。

SSH隧道转发配置

在教程中,我设定的本机端口为8965,目标端口为32400,设置完成后点击连接,待连接成功后打开浏览器窗口并转到http://127.0.0.1:8965/web(这里请将8965换为你设置的端口)。

Plex别名设置

访问浏览器会打开Plex的Web页面,登陆账户后会要求你设置服务器别名,这里可以取个你喜欢的名字。媒体资料库的设置可以先跳过,单击完成后即可进入Plex的频道界面,整体UI是非常美观的。此时我们就可以不再使用隧道转发进行访问了,而是可以通过http://yourip:32400/web进行访问。如果服务器有安全组的,请事先放行端口。

Plex界面

至此,Plex Media Server就安装完成了。

2.3 Plex Media Server的配置

Plex关闭中转

Plex 默认开启了中转,对大陆用户来讲则会拖慢访问速度,所以可以在设置-网络-显示高级选项-取消勾选启用中转以提高访问速度。

Plex添加资料库

在设置-媒体库-点击添加资料库,你就可以添加电影、电视剧、音乐、照片等类型的影音文件。设置资料库后,Plex会对资料库进行扫描,并对影音文件进行刮削,自动识别影片名字等信息。

2.4 结语

Plex是一整套完整的解决方案,采用Server + Client的形式,Server端用于管理各种媒体(电影,电视剧,照片,音乐、有声小说),Client端用于播放(有Mac,PC,iOS,Android,XBox,PS,各种TV,树莓派等)。需要注意的是PLEX的移动端(Android/iOS)需要付费才能使用,可以采用Kodi+Plex插件的形式曲线救国。

Plex对播放设备的性能没要求,但对搭载Plex Media Server的服务器配置需求则要高一些。如果影音资料多的话,Plex需要调用大量的CPU来处理转码任务和输出视频流,如果配置不足,则会在观看时出现明显卡顿,所以选择服务器时应该多注意CPU和带宽方面。

标签: Debian, Goole Drive, Rclone, 流媒体, Plex, VPS, 影音

已有 2 条评论

  1. 测试头像

  2. 感谢博主分享 等有机会试下

添加新评论

0:00