之前无意发现一直用来当做网站CDN服务的腾讯云COS空间利用率低的离谱,毕竟上面只存了我博客的上传媒体资源以及中华古籍网的书籍信息储存,东西全加起来也就5个G不到,但与此同时我还是得按照50G标准储存的最低限制收费来给 。于是这几天受到mikusa的启发,就开始了流媒体平台的折腾

平台选择

目前有三大主流流媒体平台,它们的优劣总结如下:

  1. Jellyfin:免费开源,但UI比较简陋,功能也不是特别多
  2. Emby:收费版Jellyfin,UI好看点,功能也更多
  3. Plex:UI最炫,但是收费(119美刀一年)

由于我只是想存少部分音乐在平台上来实现COS空间最大化的利用,所以对功能性的要求没那么高,手机电脑都能用就行,所以我最后的选择是Jellyfin

Jellyfin
Jellyfin

COS文件挂载

适用于centos7,如是其他系统请参考官方文档

我们要做的第一件事是把COS的文件夹挂载到服务器上以便Jellyfin的资源库绑定,这里我们使用腾讯云官方的绑定工具:COSFS

首先先安装依赖

sudo yum install libxml2-devel libcurl-devel -y

然后安装工具

sudo rpm -ivh cosfs-1.0.19-centos7.0.x86_64.rpm

绑定秘钥1

vi /etc/passwd-cosfs

设置秘钥文件权限

chmod 640 /etc/passwd-cosfs

工具的配置就已经全部完成了,现在开始挂载COS到本地

cosfs [Bucket名称] [挂载的本地位置] -ourl=[COS根域名,Bucket位置决定] -odbglevel=info -onoxattr -oallow_other

现在可以点开看看挂载的文件夹,如果ok的话里面就会正常显示COS里的文件

挂载成功
挂载成功

安装Jellyfin

官方文档:https://jellyfin.org/docs/general/administration/installing.html

我们这里使用docker来进行安装和部署

安装镜像

docker pull jellyfin/jellyfin

创建configcache文件夹,里面会储存Jellyfin的各种配置,歌单信息等等

mkdir /path/to/config
mkdir /path/to/cache

创建并配置docker-compose.yml配置文件

touch docker-compose.yml
vi docker-compose.yml

配置文件里输入以下内容

version: "3.5"
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    user: [uid]:[gid] # 不知道填啥就 0:0
    network_mode: "host"
    volumes:
      - [config文件夹位置]:/config
      - [cache文件夹位置]:/cache
      - [COS挂载的文件夹位置]:/media
    restart: "unless-stopped"
    # Optional - alternative address used for autodiscovery
    environment:
      - JELLYFIN_PublishedServerUrl=http://example.com

配置完成后就能开启容器了

docker-compose up -d

成功启动后访问:http://[ip地址]:8096就能进Jellyfin了

绑定域名

我直接用的反向解析来实现的域名绑定,不用配置Jellyfin就能直接实现域名绑定,目前还没出啥Bug

反向解析
反向解析

常用命令

关闭服务:

docker container ls
dcoker stop [上一步查到的的id]

解除挂载

方式1:fusermount -u /mnt, fusermount 命令专用于卸载 FUSE 文件系统 
方式2:umount -l /mnt, 当有程序引用文件系统中文件时,进行卸载不会报错,并在没程序引用时完成卸载
方式3:umount /mnt, 当有程序引用文件系统中的文件时,进行卸载会报错

常用工具

Cosbrowser: COS桌面管理器
Renamer: 批量重命名