NAS做家庭媒体中心-实战

NAS做家庭媒体中心-实战

NAS做家庭媒体中心-实战

(与文无关)个人项目推广: Pho - 优雅地同步和浏览相册(通过smb,webdav,nfs等协议)

之前写的文章列举了我个人的NAS在实际生活中发挥到的作用,这篇文章主要分享一下我个人的NAS在家庭媒体中心方面的实战经验.

为了系统兼容性和部署方便,我选择用docker部署所有服务,并且把部署方式转化成一行命令的形式,大部分服务只需要在命令行执行一条命令即可部署

这里默认已经安装好了docker环境,实际上大部分NAS系统都已经预装了docker,只需要ssh连接到NAS执行命令即可

方案 - Alist + rclone + qbittorrent + Plex

这个方案有点复杂,但是优势在于寻找资源十分方便,各种网盘资源只要转存到自己的网盘就可以直接用plex观看,不需要下载到本地.各种种子和磁力连结只需要丢到qbittorrent去下载就不用管了,下载完了就可以用plex观看.

  • Plex作为媒体服务器和客户端
  • Alist用来把网盘映射到webdav
  • rclone用来把webdav映射到本地
  • qbittorrent用来下载种子和磁力链接

不需要直接看网盘资源可以忽略掉Alist和rclone部分
不需要下载种子和磁力链接可以忽略掉qbittorrent

部署Alist

Alist文档: https://alist.nn.ci/zh/guide/

部署服务

执行命令:

docker run -d \
  --restart=always \
  -v /mnt/user/path-of-config:/opt/alist/data \
  -p 5244:5244 \
  -e PUID=0 \
  -e PGID=0 \
  -e UMASK=022 \
  --name="alist" \
  xhofe/alist:latest
  • -v /mnt/user/path-of-config:/opt/alist/data这个部分需要把冒号前的部分改为你NAS上的某个目录,这个目录用来存放alist的配置文件,如果你不想用这个目录,可以直接把这个部分删掉,但是这样的话,你每次重启alist都需要重新配置一遍,不推荐这么做.

查看默认密码

docker logs alist

输出信息像这样,其中GQZ8zwXs就是你的管理员密码

INFO[2023-09-18 03:00:40] reading config file: data/config.json        
INFO[2023-09-18 03:00:40] config file not exists, creating default config file 
INFO[2023-09-18 03:00:40] load config from env with prefix:            
INFO[2023-09-18 03:00:40] init logrus...                               
INFO[2023-09-18 03:00:40] Successfully created the admin user and the initial password is: GQZ8zwXs 
INFO[2023-09-18 03:00:40] start HTTP server @ 0.0.0.0:5244             
INFO[2023-09-18 03:00:40] qbittorrent not ready.                       
INFO[2023-09-18 03:00:40] Aria2 not ready.  

登录

在浏览器打开http://your-nas-ip:5244,输入用户名admin和刚才查看到的密码登录.

登录后点击页面上的管理进入管理页面,这里建议先修改用户名和密码
password

配置储存

不同储存方式的配置方式不同,这里以百度网盘为例,其他网盘的配置方式可以参考Alist文档: https://alist.nn.ci/zh/guide/drivers/

挂载百度网盘关键是获取到刷新令牌,客户端ID,客户端密钥这三个参数.使用浏览器打开以下URL并登录你的百度网盘帐号,就会显示这三个参数
https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=iYCeC9g08h5vuP9UqvPHKKSVrKFXGa1v&redirect_uri=https://alist.nn.ci/tool/baidu/callback&scope=basic,netdisk&qrcode=1

baidu

点击Alist管理页面的储存 -> 添加,驱动选择百度网盘.

  • 挂载路径: 与NAS中的路径无关,是Alist内部文件系统的路径,按喜好填即可,比如/baidu
  • 刷新令牌,客户端ID,客户端密钥: 填上面获取到的参数
  • WebDAV策略: 如果是内网使用选本地代理即可,外网使用建议选302重定向

其他项保持默认点击保存即可,保存后看到状态显示work即为配置成功
work

访问webdav

我们部署Alist的主要目的是能以webdav的形式访问网盘内容,按以上方式部署好了之后,可以用以下url访问webdav,用户名密码即为你在Alist管理页面设置的用户名密码

http://your-nas-ip:5244/dav

部署rclone

rclone文档: https://rclone.org/docs/

下载rclone

下载地址: https://rclone.org/downloads/

找到对应你CPU架构的版本下载,最好直接选择Linux一列下的下载,这一列下载zip解压后直接是可以执行文件,任何Linux发行版都可以直接用.这里以v1.64.0-amd64架构为例:

mkdir rclone
cd rclone
wget https://downloads.rclone.org/v1.64.0/rclone-v1.64.0-linux-amd64.zip
unzip rclone-v1.64.0-linux-amd64.zip
cd rclone-v1.64.0-linux-amd64
sudo cp rclone /usr/bin/
sudo chmod +x /usr/bin/rclone

配置webdav

命令行输入rclone config命令进入配置引导,以下为示例,有>地方是需要手动输入后按回车继续.

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

Enter name for new remote.
name> alist

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)
.
.
.
Storage> webdav # 选择webdav

Option url.
URL of http host to connect to.
E.g. https://example.com.
Enter a value.
url> http://192.168.100.152:5244/dav # 这里填你alist的webdav地址

Option vendor.
Name of the WebDAV site/service/software you are using.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Fastmail Files
   \ (fastmail)
 2 / Nextcloud
   \ (nextcloud)
 3 / Owncloud
   \ (owncloud)
 4 / Sharepoint Online, authenticated by Microsoft account
   \ (sharepoint)
 5 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
   \ (sharepoint-ntlm)
 6 / Other site/service or software
   \ (other)
vendor> other # 选择other

Option user.
User name.
In case NTLM authentication is used, the username should be in the format 'Domain\User'.
Enter a value. Press Enter to leave empty.
user> fregie # 这里填你alist的用户名

Option pass.
Password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> y
Enter the password:
password: # 这里填你alist的密码,注意输入的时候不会显示,输入后回车即可
Confirm the password:
password: # 再次输入密码确认

Option bearer_token.
Bearer token instead of user/pass (e.g. a Macaroon).
Enter a value. Press Enter to leave empty.
bearer_token>  # 直接回车跳过

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Configuration complete.
Options:
- type: webdav
- url: http://192.168.100.152:5244/dav
- vendor: other
- user: fregie
- pass: *** ENCRYPTED ***
Keep this "alist" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
====                 ====
alist                webdav

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

检查配置是否成功:
以下命令将列出webdav根目录下的文件和目录,能正确输出即为配置成功

rclone lsd alist:/ --max-depth 1
          -1 2023-09-04 15:00:14        -1 baidu
          -1 2023-09-06 14:19:17        -1 nas
          -1 2023-09-04 14:29:07        -1 quark

映射到NAS文件系统

mkdir --mode=777 /mnt/alist
rclone mount --daemon --vfs-cache-mode minimal --allow-non-empty --allow-other alist:/ /mnt/alist -vv

查看映射是否成功,有类似以下输出即为成功

ls /mnt/alist
baidu/  nas/  quark/

部署qbittorrent

docker run -d \
  --name=qbittorrent \
  -e PUID=0 \
  -e PGID=0 \
  -e TZ=Asia/Shanghai \
  -e WEBUI_PORT=8090 \
  -p 8090:8090 \
  -p 6881:6881 \
  -p 6881:6881/udp \
  -v /mnt/user/media/qbittorrent/config:/config \
  -v /mnt/user/media:/downloads \
  --restart unless-stopped \
  lscr.io/linuxserver/qbittorrent:latest
  • /mnt/user/media/qbittorrent/config - 用来保存qbittorrent配置的位置,需要替换成你自己NAS中的某个目录
  • /mnt/user/media - 用来保存下载内容的位置,需要替换成你自己NAS中的某个目录

部署完成后用浏览器打开http://your-nas-ip:8090即可访问qbittorrent,默认用户名密码为adminadminadmin,配置和使用都比较简单,就不详细介绍了.

部署plex

注册plex

在plex官网注册一个帐号,不详细说明了.

获取claim token

在浏览器打开以下地址,登录你的plex帐号,然后复制claim token,类似这种claim-xxxxxxxxxxxxxxxxx
https://www.plex.tv/claim

部署plex

docker run -d \
--name plex \
--network=host \
-e TZ="Aisa/Shanghai" \
-e PLEX_CLAIM="claim-xxxxxxxxxxxxxxxxx" \
-v /mnt/user/config-cache/plex-config:/config \
-v /mnt/user/media/plex/transcode:/transcode \
-v /mnt/user/media:/data/media \
-v /mnt/alist:/data/alist \
plexinc/pms-docker
  • /mnt/user/config-cache/plex-config - 用来保存plex配置的位置,需要替换成你自己NAS中的某个目录
  • /mnt/user/media/plex/transcode - 用来保存plex转码缓存的位置,需要替换成你自己NAS中的某个目录
  • /mnt/user/media - 用来保存plex媒体库的位置,需要替换成你自己NAS中储存媒体资源的目录
  • /mnt/alist - 用来保存alist挂载的网盘的位置,需要替换成你自己NAS中alist挂载的目录

容器启动后需要初始化一小段时间,初始化完成后可以用浏览器打开http://your-nas-ip:32400/web访问plex,按照提示登录即可.

配置plex

plex启动后,使用浏览器打开http://your-nas-ip:32400/web访问plex,点击设置 -> 管理 -> 媒体库 -> 添加资料库.我一般是分为电影,电视剧,音乐三个资料库,每个资料库都可以添加多个文件夹,每个文件夹都可以设置为自动扫描,这样就可以自动把文件夹中的内容添加到资料库中了.

这里主要说一下文件夹的添加: 核心就在于将我们之前映射的alist的各种网盘的目录以及NAS中储存媒体资源的目录添加到媒体库中.例如我这里:
/data/alist/baidu/movie - /data/alist是我们在启动docker容器时将/mnt/alist映射到了这个目录,所以在这里可以找到alist映射的网盘文件,baidu是alist中配置的百度网盘的挂在路径,movie是百度网盘中的一个目录,我把所有电影资源会转存到这个目录.

plex-path

按照以上方式配置完资料库后等待plex扫描资源即可,大部分资源都能刮削到正确的信息,刮削不到的可能需要手动匹配一下,就不赘述了.

最后

在你的各个客户端安装plex客户端并登录你的帐号就可以观看了
plex
John Wick

看看其他

注: 以上分享的主要目的在于推广我的个人项目Pho,本文的作者即Pho的个人开发者.
如果文章对大家有所帮助,可以通过使用或宣传Pho来支持,我会继续更新一些此类主题的实战教程.