打造家庭影音中心
集自动搜索种子索引、推送种子索引、自动跟踪剧集电影、自动下载、自动分类整理、提供播放服务的家庭影音中心
准备工作
你需要的硬件
一台可以跑起Ubuntu server的设备。 其它linux系统也行,能跑docker就行。
许多硬盘。 可以是sata可以是m.2也可以是移动硬盘。
连接他们
你可以用raid,可以直接把硬盘插上设备,反正连接起来就行。
然后开机。
确保你的硬盘挂载了
设置一个挂载点
bash
mkdir /mnt/media
挂载你的硬盘
bash
lsblk -o NAME,UUID #这个命令可以查到你的硬盘的UUID,记住你的UUID
bash
nano /etc/fstab #这个文件决定了硬盘的挂载
/etc/fstab结构: <file system> <dir> <type> <options> <dump> <pass>
bash
<file systems> - 要挂载的分区或存储设备.
<dir> - <file systems>的挂载位置。
<type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统: ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
<options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:
auto - 在启动时或键入了 mount -a 命令时自动挂载。
noauto - 只在你的命令下被挂载。
exec - 允许执行此分区的二进制文件。
noexec - 不允许执行此文件系统上的二进制文件。
ro - 以只读模式挂载文件系统。
rw - 以读写模式挂载文件系统。
user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用 noexec, nosuid, nodev 参数。
users - 允许所有 users 组中的用户挂载文件系统.
nouser - 只能被 root 挂载。
owner - 允许设备所有者挂载.
sync - I/O 同步进行。
async - I/O 异步进行。
dev - 解析文件系统上的块特殊设备。
nodev - 不解析文件系统上的块特殊设备。
suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
nosuid - 禁止 suid 操作和设定 sgid 位。
noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async.
<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2.
0 表示设备不会被 fsck 所检查。
在/etc/fstab最后面加一行,执行挂载:
bash
UUID=你的UUID /mnt/media ntfs user 0 0 #你的硬盘如果不是ntfs就选择其它的比如ext4
启用挂载:
bash
sudo mount -a
现在你的硬盘应该挂载好了
现在我们进入/mnt/media应该看得到你的硬盘内容了
bash
cd /mnt/media
ls
现在我们在里面搞一些文件夹,用来装电影、电视剧和下载中转
bash
mkdir movie
mkdir tv
mkdir downloads
非常好
安装全套软件链
prowlarr
prowlarr是一个种子索引聚合工具,可以用它搜索并推送 种子索引 给具体的管理软件,比如电视剧管理软件sonarr和电影管理软件radarr,管理软件拿到 种子索引 之后,可以根据用户需要从中搜索、跟踪电影电视剧,并且推送给下载软件如qBitorrent进行下载。
sonarr和radarr
sonarr和radarr是电视剧管理软件和电影管理软件,他们会根据用户需求,从prowlarr拿到推送的 种子索引 去跟踪、整理电视剧和电影,并把具体的 种子 找出来推送给qBitorrent,让它去下载。
qBitorrent
qBitorrent是下载工具,换其它的也行,但这个还挺好用的,它的作用就是根据sonarr和radarr的指令去执行下载任务。
通过docker安装软件链
因为众所周知的原因,这里不讲docker的代理,具体需要可以自行咨询AI,设置很方便。
bash
cd
mkdir toolchain #创建一个文件夹
cd toolchain
nano docker-compose.yml
将以下内容复制进去:
bash
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
restart: unless-stopped
ports:
- "9696:9696"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
# 代理设置
- HTTP_PROXY=http://192.168.1.140:7890 # 请替换为您的代理地址
- HTTPS_PROXY=http://192.168.1.140:7890
- NO_PROXY=localhost,127.0.0.1,qbittorrent,radarr,sonarr #规定好不走代理的地址
volumes:
- ./appdata/prowlarr:/config
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
restart: unless-stopped
ports:
- "8080:8080" # Web UI 端口
- "6881:6881" # BT 连接端口
- "6881:6881/udp"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- WEBUI_PORT=8080
volumes:
- ./appdata/qbittorrent:/config
- /mnt/media/downloads:/downloads # 映射下载目录
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
restart: unless-stopped
ports:
- "7878:7878"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- ./appdata/radarr:/config
- /mnt/media/movie:/movies # 映射电影媒体库
- /mnt/media/downloads:/downloads # 映射下载目录,以便Radarr处理已完成下载
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
restart: unless-stopped
ports:
- "8989:8989"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- ./appdata/sonarr:/config
- /mnt/media/tv:/tv # 映射电视剧媒体库
- /mnt/media/downloads:/downloads # 映射下载目录,以便Sonarr处理已完成下载
这里的PUID和PGID要换一下,避免发生权限问题,用以下命令来确认:
bash
id $USER
你会看到输出类似:
bash
uid=1000(your_username) gid=1000(your_username) groups=1000(your_username),4(adm),24(cdrom),27(sudo),...
在这里,uid=1000就是你的 PUID ,gid=1000就是你的 PGID。请记下你自己的数值并替换docker-compose.yml里的。
编辑好docker-compose.yml之后,就可以拉起服务了。
bash
docker compose up -d
注意 docker-compose.yml里面的映射文件夹,如果你没有创建过,不用担心,拉起服务的时候会自动创建。
注意 为什么docker-compose.yml中,只有prowlarr走代理?你不走代理也行,没有代理就不要设置代理相关的那几行,但是这是一个种子索引搜索器,可能需要不可描述的网络,如果你不走代理,可能会有某些意想不到的问题。
配置软件链
现在服务应该都拉起来了,我们进去试试
通过 http://设备ip:9696 进入prowlarr服务。
然后在左边找到"Indexers"(索引器),通过它搜到的公开和私人的索引器来添加。这样你就有索引器了。
通过 http://设备ip:8080 进入qbittorrent服务。
第一次进入qBittorrent,用户名是admin,密码要进日志看。
bash
docker logs qbittorrent
仔细看,里面有密码。
第一次进去qBittorrent之后,马上去设置里改用户名密码。
通过 http://设备ip:7878 进入radarr服务。
去radarr的设置里面找下载器,添加下载器,把qBittorrent添加进去,会要到qBittorrent的账户密码。
通过 http://设备ip:8989 进入sonarr服务。
去sonarr的设置里面找下载器,添加下载器,把qBittorrent添加进去,会要到qBittorrent的账户密码。
进一步去http://设备ip:9696 进入prowlarr服务设置
这里我们去找添加APP,把sonarr和radarr添加进去,用到的URL要用容器名,我们的容器名是prowlarr、radarr、sonarr这种,你添加URL就应该是http://prowlarr:9696 和 http://sonarr:8989 http://radarr:7878 这样。
这里会需要到sonarr和radarr的API KEY 你可以去sonarr和radarr的设置-通用里面找到它
如此一来,prowlarr就可以把种子索引推送给radarr和sonarr了。
开始使用
我们进入sonarr或者radarr,你可以配置一下想要的质量、语言,然后直接搜索电影、电视剧,然后点上追踪,你再去 http://设备ip:8080 进入qbittorrent服务,你就会看见下载被提上了任务。
通过jellyfin观看影视
现在我们解决了自动搜索、自动下载、自动追剧的问题,要解决一下怎么观看的问题。
jellyfin是什么
jellyfin是一个影音中心,你可以把它看作视频、音乐网站,点开即看那种,它会从硬盘上扫描所有影音作品,通过在线观看、网络推流等方式服务用户。
jellyfin和前面几个软件关系不大,没有从属配置。
通过Docker安装jellyfin
先创建一个jellyfin的文件夹
bash
cd
mkdir jellyfin
cd jellyfin
创建一个docker-compose.yml
bash
nano docker-compose.yml
复制以下内容
bash
services:
jellyfin:
image: jellyfin/jellyfin:latest # 或使用 ghcr.io/jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
network_mode: bridge # 显式使用桥接模式,避免使用宿主网络
ports:
- "8096:8096" # 主 Web UI 端口
#- "8920:8920" # 可选的 HTTPS 端口,若不需要可注释掉
environment:
- PUID=1000 # 请替换为您的实际 UID
- PGID=1000 # 请替换为您的实际 GID
- TZ=Asia/Shanghai
# 注意:此处不设置任何代理相关的环境变量(如HTTP_PROXY),确保直连
# - JELLYFIN_PublishedServerUrl=192.168.x.x # 可选:如果需要自定义服务器发现地址
volumes:
# 配置和缓存数据持久化
- ./config:/config
- ./cache:/cache
# 挂载您的媒体库目录
- /mnt/media/movie:/media/movies:ro # 只读挂载电影目录
- /mnt/media/tv:/media/tvshows:ro # 只读挂载电视剧目录
# 可选:如果系统支持并需要硬件转码,取消注释下面的 devices 部分
# devices:
# - /dev/dri:/dev/dri # 对于 Intel 核显 (QuickSync) 或 AMD GPU
# 对于 NVIDIA 显卡,通常需要设置 runtime 和环境变量,例如:
# runtime: nvidia
# environment:
# - NVIDIA_VISIBLE_DEVICES=all
# 注意:使用硬件转码需要宿主机已安装相应的显卡驱动
# 无需定义额外的网络,使用默认的 bridge 即可
# 如果您的 radarr, sonarr 等也在同一台宿主机的 Docker 默认网络中,它们可以通过宿主机的内部 IP 和端口与 Jellyfin 通信
启动!
bash
docker compose up -d
现在我们可以通过http://设备ip:8096 进入jellyfin,这个应用十分好懂,进去以后先去控制台扫一遍盘。
用上了
现在只需要通过http://设备ip:8096 进入jellyfin,你就会看到一个非常好用的,经过sonarr和radarr精心整理的,各种剧集点击就播的网站,你也可以选择获取网络流,用VLC之类的软件播放。