Cloudbox:一个强大的多功能云媒体服务,可自动获取视频资源并在线播放

by Rat’s

Rat’s Blog / 2019-04-04 23:21

说明:最近发现了一个很强的多媒体项目Cloudbox,差不多是一个基于Docker的盒子,基本上里面所有的应用都是为多媒体打造,包括自动搜索影视、下载、播放等等,常见的应用包括Plex/EmbyRclone/PlexdriveruTorrentNextcloudResilio Sync,然后还有一大批不常见但很有用的应用,接下来都会大概介绍下,不然用起来很麻烦,博主只是大概的看了下。

Cloudbox又分为Mediabox(多媒体服务)、Feederbox(下载服务),你可以在一台服务器上部署完整的Cloudbox,这样会使用所有的应用,也可以在2台服务器上分别部署MediaboxFeederbox,然后分工一起配合使用,这些具体会安装以下应用:

#Cloudbox   Rclone、Plexdrive、NZBGet、ruTorrent、NZBHydra2、Jackett、Plex Media Server、Plex Autoscan、Sonarr、Radarr、PlexPy(Tautulli)、Ombi、Portainer、Organizr      #Feederbox   Rclone、Plexdrive、NZBGet、ruTorrent、NZBHydra2、Jackett、Sonarr、Radarr、Portainer、Organizr      #Mediabox   Rclone、Feeder Mount、Plexdrive、Plex Media Server、Plex Autoscan、PlexPy(Tautulli)、Ombi      #可选应用   Emby、Nextcloud、Resilio Sync、Plex Dupefinder、Heimdall、NZBHydra v1、Plex Requests、Sickbeard MP4 Automator   

大概介绍下应用:

Sonarr:Usenet和BitTorrent用户的一款RSS订阅工具。它可以监视你喜欢的多个电影、剧集的更新提醒,并将它们抓取、排序和重命名。   Radarr:Sonarr的独立分支,用于通过Usenet和BitTorrent自动下载电影。   Rclone/Plexdrive:远程存储网盘挂载工具,后者只能挂载Google Drive。   NZBGet/ruTorrent:分别为Usenet和BitTorrent下载工具,可以配合Sonarr和Radarr一起下载资源。   NZBHydra2:是NZB索引者的元搜索工具。它可以方便地访问许多NZB索引器。您可以从一个位置搜索所有索引器,并将其用作Sonarr,Radarr或CouchPotato等工具的索引器源。   Jackett:是一个基于Web的应用程序,其作用类似于代理服务器,将搜索查询从下载客户端(例如Sonarr)引导到torrent跟踪器站点并将结果发回。下载客户端也可以使用Jackett从跟踪器站点获取RSS源。最后,它可以用作元搜索工具,直接从应用程序中查找种子。   Plex Autoscan:可以扫描已导入的文件夹(相对于整个部分库文件夹),协助Plex添加由Sonarr/Radarr导入的添加媒体文件,从而减少Google API使用过多而被限制。   PlexPy:是一个基于Web的应用程序,与Plex一起运行,用于监视活动并跟踪各种统计数据。   Ombi:是一个自托管的Web应用程序,可以自动为你的共享Plex或Emby用户提供自己请求内容的功能!Ombi可以链接到多个电视节目和电影DVR工具,为你创建无缝的端到端体验。   Portainer:是一个开源轻量级管理UI,可让您轻松管理Docker容器,图像,网络和卷。   Organizr:是一个基于Web的HTPC服务器管理器,允许您管理选项卡中的各种工具和程序。还支持用户管理,允许非管理员用户或访客通过Organizr访问某些网页。   Plex/Emby:多媒体客户端,主要功能是存储+索引+转码+在线播放。   Nextcloud:一个免费的,开源的网盘程序   Resilio Sync:一个点对点的文件同步工具   Plex Dupefinder:用了在Plex库中找到重复版本的媒体,并告诉Plex自动删除最低质量版本(基于评分算法),留下一个高质量的媒体文件。   Heimdall:用来添加各种链接地址的Web面板   Sickbeard MP4 Automator:自动将视频文件转成mp4的工具

其实这些应用配合起来看起来很强大,但玩的有点懵逼。

如果你觉得你服务器空间不太够,可以配合Rclone/Plexdrive挂载远程存储一起使用,比如Google DriveCloudbox也是只建议使用Gdrive网盘,如果你没有无限空间的Gdrive,可以查看该文章免费申请一个→传送门

Cloudbox运作过程

Cloudbox通过Sonarr下载您最喜爱的电视节目,Radarr下载您喜爱的电影。两者都使用Usenet(通过NZBGet)和/或Torrent(通过ruTorrent)来完成。

下载完成后,SonarrRadarr会将这些下载内容移至服务器的/mnt/local/Media/文件夹,并向Plex Autoscan发送通知。

反过来,Plex AutoScan将通过扫描特定的视频文件夹告诉Plex扫描新下载的电视节目或电影。然后会更快地出现在Plex中,而不需要扫描全部的视频库,这样可以减少Cloud Storage API使用次数,导致被限制。

Cloudplow最终会将所有内容从远程云存储上/mnt/local/Media/命名的文件夹移动Media,从而减少服务器上的存储空间。

在此迁移期间,媒体文件将继续可供媒体服务器(例如Plex)访问,因为远程云存储(例如Google Drive)将挂载在服务器上。

准备工作

一台国外的服务器,建议内存2G以上、硬盘的话官方是建议200G,这里的话20G以上就可以了,最好越大越好,内存不够的可以用下Swap一键脚本→传送门

一个Plex账户,注册地址→传送门

一个一级域名,并将该域名的DNS服务器迁移到Cloudfare,再解析类似*.moerats.com泛域名到服务器ip

如果你不想迁移域名也可以,不过要解析多个二级域名到服务器ip,具体操作查看→传送门

安装

Github地址:https://github.com/Cloudbox/Cloudbox

支持系统:Ubuntu 16.0418.04,仅限64位系统,这里Debian系统貌似也可以,不过最好是用Ubuntu,不然可能会有问题。

1、新建用户
这里别用root用户安装,不会会有部分应用可能用不了,所以需要新建一个普通用户,如果你有普通用户的可以跳过这一步。

#新建moerats用户   useradd -m moerats   #获取sudo权限   usermod -aG sudo moerats   #设置密码等   passwd moerats   chsh -s /bin/bash moerats   

2、安装依赖
使用步骤1设置的普通用户登录SSH,使用命令:

curl -s https://cloudbox.works/scripts/dep.sh | sudo -H sh; curl -s https://cloudbox.works/scripts/repo.sh | bash   或者   wget -qO- https://cloudbox.works/scripts/dep.sh | sudo -H sh; wget -qO- https://cloudbox.works/scripts/repo.sh | bash   

3、编辑配置文件

cd ~/cloudbox   #编辑下载和备份目录,该配置可以默认   nano settings.yml      #编辑登录等信息   nano accounts.yml

settings.yml应该都看的懂,这里说下accounts.yml,大致参数意思如下:

#user为普通用户名称,passwd为登录密码,也就是所有应用Web端登录信息   user: moerats   passwd: moeratspasswd   #domai为解析的一级域名   domain: moerats.com   #email和api为cloudfare的登录邮箱和api,api获取地址https://www.cloudflare.com/a/profile   email: admin@moerats.com   cloudflare_api_token: 4993d7315d   #plex用户名和密码   plex:     user:      pass:    #pushover为推送应用,这个如果你觉得配置麻烦,可以留空,不影响安装   pushover:     app_token: ap36cqsi5w     user_key: u2wtotir3     priority: 1   

这里的pushover起到推送作用,就是一般在下载完成,备份完成等一些操作会自动推送给你,有安卓/IOS/桌面端,具体使用查看→传送门,这里的tokenkey貌似好填,这里只说下priority参数为通知优先级,不会设置的,建议设置为1,也就是高优先级,如果你希望你不要错过推送消息,那就设置2,不过2会一直打扰你,直到你点开消息为止。

4、安装

#安装Cloudbox   sudo ansible-playbook cloudbox.yml --tags cloudbox      #安装Feederbox   sudo ansible-playbook cloudbox.yml --tags feederbox      #安装Mediabox   sudo ansible-playbook cloudbox.yml --tags mediabox

安装的时候,使用Cloudfare的会自动给你解析好域名,并签发SSL证书。访问地址如下:

Jackett:https://jackett.yourdomain.com   NZBGet:https://nzbget.yourdomain.com   NZBHydra2:https://nzbhydra2.yourdomain.com   Organizr:https://organizr.yourdomain.com   Plex:https://plex.yourdomain.com   WebTools for Plex*:http://plex.yourdomain.com:33400   Plexpy (Tautulli):https://plexpy.yourdomain.com   Plex Requests:https://plexrequests.yourdomain.com   Portainer:https://portainer.yourdomain.com   Radarr:https://radarr.yourdomain.com   ruTorrent:https://rutorrent.yourdomain.com   Sonarr:https://sonarr.yourdomain.com   

其它可选安装:

#安装Emby   sudo ansible-playbook cloudbox.yml --tags emby        #安装Nextcloud   sudo ansible-playbook cloudbox.yml --tags nextcloud        #安装Resilio Sync   sudo ansible-playbook cloudbox.yml --tags resilio-sync      #安装Plex Dupefinder   sudo ansible-playbook cloudbox.yml --tags plex_dupefinder      #安装Heimdall   sudo ansible-playbook cloudbox.yml --tags heimdall      #安装NZBHydra v1   sudo ansible-playbook cloudbox.yml --tags nzbhydra      #安装Plex Requests   sudo ansible-playbook cloudbox.yml --tags plexrequests    

使用

操作之前需要先了解下服务器本地路径和Google Drive路径,这里以默认的settings.yml参数为参考。

#Google云端硬盘路径   Media   ├── Movies #电影文件夹   ├── Music  #音乐文件夹   └── TV #电视文件夹      #本地路径   mnt   ├──local   |  └── Media #存储在本地的媒体文件   ├──remote   |  └── Media #存储在Google Drive的媒体文件   └──unionfs      └── Media #Plex,Sonarr和Radarr在扫描媒体时读取的文件夹。

Google Drive上的文件夹需要我们自己建立,具体参考→传送门

这里会定期检本地local路径的大小(默认为30分钟)。当文件夹大小达到其目标(默认为200GB)时,媒体文件将被移出/上传到云端,从而释放本地磁盘空间。

这里的默认阈值是可以修改的,编辑配置文件:

sudo nano /opt/cloudplow/config.json

检查时间间隔和默认值大致参数如下:

"uploader": {       "google": {           "check_interval": 30,           "exclude_open_files": true,           "max_size_gb": 200,           "opened_excludes": [               "/downloads/"           ],           "size_excludes": [               "downloads/*"           ]       }

check_interval为时间间隔(默认分钟),max_size_gb为大小(默认G),建议最低2G。更多参数配置参考→传送门

最后重启生效:

sudo systemctl restart cloudplow   

1、配置Rclone
这里Rclone的作用大概就是将备份/媒体文件上传至Google Drive,使用命令:

rclone config

name那里需要命名google,具体过程查看→传送门

2、配置Plexdrive
Plexdrive的作用就是让PlexGoogle Drive读取媒体文件,利用缓存加快读取和减少api使用,先获取谷歌API凭据,获取步骤参考→传送门,然后使用命令:

#先替换之前的plexdrive二进制,不然后面有个参数会不支持   wget https://github.com/dweidenfeld/plexdrive/releases/download/5.0.0/plexdrive-linux-amd64   mv plexdrive-linux-amd64 /opt/plexdrive4/plexdrive   chmod +x /opt/plexdrive4/plexdrive      #挂载配置   sudo /opt/plexdrive4/plexdrive mount -v 3 --refresh-interval=1m --chunk-check-threads=8 --chunk-load-threads=8 --chunk-load-ahead=4 --max-chunks=100 --fuse-options=allow_other,read_only --config=/opt/plexdrive4 --cache-file=/opt/plexdrive4/cache.bolt /mnt/remote

然后会要你输入客户端ID和密匙,再打开获取到的链接绑定账号后,将自己获取到的code复制到SSH客户端确定即可。

新建一个Systemd配置文件,使用命令:

sudo nano /etc/systemd/system/plexdrive.service

先修改下面的用户和用户组,然后一起复制进去。

[Unit]   Description=Plexdrive Mount   After=network-online.target mongodb.service      [Service]   User=moerats   Group=moerats   Type=simple   ExecStartPre=/bin/sleep 10   ExecStart=/opt/plexdrive4/plexdrive mount     --refresh-interval=1m     --chunk-size=16m     --fuse-options=allow_other,read_only     --config=/opt/plexdrive4     --chunk-check-threads=4     --chunk-load-threads=4     --chunk-load-ahead=4     --max-chunks=20     -v 3      /mnt/remote   ExecStop=/bin/fusermount -uz /mnt/remote   Restart=always   RestartSec=5      [Install]   WantedBy=default.target   

再使用Ctrl+xy保存退出。

启动:

sudo systemctl start plexdrive

配置开机自启:

sudo systemctl enable plexdrive

查看状态:

sudo systemctl status plexdrive

显示Active:active(running)即为成功。

最后其它应用程序使用可以直接看Github,写的很详细了,地址参考:

NZBGet:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-NZBGet   ruTorrent:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-ruTorrent   NZBHydra2:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-NZBHydra2   Jackett:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Jackett   Plex Media Server:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Plex-Media-Server   Plex Autoscan:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Plex-Autoscan   Sonarr:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Sonarr   Radarr:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Radarr   PlexPy(Tautulli):https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-PlexPy-%28Tautulli%29   Ombi:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Ombi   Portainer:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Portainer   Organizr:https://github.com/Cloudbox/Cloudbox/wiki/Install%3A-Organizr   Emby:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-Emby   Nextcloud:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-Nextcloud   Resilio Sync:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-Resilio-Sync   Plex Dupefinder:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-Plex-Dupefinder   Heimdall:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-Heimdall   NZBHydra v1:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-NZBHydra   Plex Requests:https://github.com/Cloudbox/Cloudbox/wiki/Extras%3A-Plex-Requests   Sickbeard MP4 Automator:https://github.com/Cloudbox/Cloudbox/wiki/Extra%3A-Sickbeard-MP4-Automator   

这里有几个不是很了解,全部应用一起用起来很懵逼,脑壳大,只能用上部分应用,最后有兴趣的可以自己研究下,没兴趣的就当有这个牛逼项目存在就好了。

相关教程

Shared via Inoreader