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

发表评论

22 条评论

  1. desimaniac

    Hi thanks for the interest in the project. The instructions here are quite old. Plexdrive is an option now, so you can have it installed and setup automatically by just changing mount type in adv_settings.yml - no need to install it manually

  2. 路人

    大佬这是什么情况
    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
      @路人

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

      1. 路人
        @Rat's

        大佬有出现 了新问题,配置plexdrive的时候
        执行 user1@server1:~/cloudbox$ mv plexdrive-linux-amd64 /opt/plexdrive4/plexdrive
        出现:mv: cannot move 'plexdrive-linux-amd64' to '/opt/plexdrive4/plexdrive': No such file or directory
        咋办

      2. 路人
        @Rat's

        明白了,估计是系统问题,我用的centos系统,有些命令没法执行

        1. Rat's
          @路人

          看说明,不支持centos

  3. leo

    果然是挺强大的。

    1. Rat's
      @leo

      强大到玩不转。

  4. xiaomin

    你好,请问能否交换友联

    1. Rat's
      @xiaomin

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

  5. perrydai

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

    1. Rat's
      @perrydai

      基本上是这样

  6. 天城

    这是干嘛的?

  7. 飞扬的旋律

    博主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
        @飞扬的旋律

        冒号后面是空格

  8. map

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

    1. Rat's
      @map

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

  9. 君莫笑

    同样一脸懵逼

    1. Rat's
      @君莫笑

      大佬还蒙蔽?

  10. lexo

    表示看完一脸懵逼