Rat's

Cloudbox:一个强大的多功能云媒体服务,可自动获取视频资源并在线播放
说明:最近发现了一个很强的多媒体项目Cloudbox,差不多是一个基于Docker的盒子,基本上里面所有的应用都是...
扫描右侧二维码阅读全文
04
2019/04

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

说明:最近发现了一个很强的多媒体项目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

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

相关教程

Vultr注册就送$50,可开日本/新加坡等机房,【点击注册】。
最后修改:2019 年 04 月 04 日 10 : 20 PM

发表评论

18 条评论

  1. 路人

    大佬这是什么情况
    ERROR! The field 'loop' is supposed to be a string type, however the incoming data structure is a <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

    The error appears to have been in '/home/user1/cloudbox/roles/pre_tasks/tasks/subtasks/apt.yml': line 11, column 3, but may
    be elsewhere in the file depending on the exact syntax problem.

    The offending line appears to be:

    name: APT | Remove APT locks
    ^ here
    1. Rat's
      @路人

      这个问题不清楚,没遇到过

  2. leo

    果然是挺强大的。

    1. Rat's
      @leo

      强大到玩不转。

  3. xiaomin

    你好,请问能否交换友联

    1. Rat's
      @xiaomin

      可以去这个地方写一下信息,有空我会加上。https://www.moerats.com/links.html

  4. perrydai

    所以,这就是个媒体服务的综合解决方案?可以将资源下载、媒体服务器管理、通知、转码等功能集成到cloudbox这一个容器中?

    1. Rat's
      @perrydai

      基本上是这样

  5. 天城

    这是干嘛的?

  6. 飞扬的旋律

    博主cloudflare 的api是选择哪个 Global Api key吗?

    1. Rat's
      @飞扬的旋律

      对的,注意书写格式,参考文章里的格式

    2. 飞扬的旋律
      @飞扬的旋律

      ERROR! Syntax Error while loading YAML.
      could not find expected ':'

      The error appears to have been in '/home/bobmaster/cloudbox/accounts.yml': line 7, column 1, but may
      be elsewhere in the file depending on the exact syntax problem.

      The offending line appears to be:

      cloudflare_api_token:0519e8a09670c5727171bcc07b16c5a
      plex:
      ^ here

      1. kk
        @飞扬的旋律

        冒号后面是空格

  7. map

    功能好强大,功能太多了,眼花缭乱

    1. Rat's
      @map

      是的,不了解的还用不过来

  8. 君莫笑

    同样一脸懵逼

    1. Rat's
      @君莫笑

      大佬还蒙蔽?

  9. lexo

    表示看完一脸懵逼