结合我自己使用的jellyfin+TinyMediaManager(下面简称tmm)搭建自己的影音库。这里主要记录我在使用NFS扩充小鸡硬盘空间时遇到的一些问题及解决方法。
NFS简述:NFS(Network File System,网络文件系统)是一种允许用户通过网络访问远程计算机上的文件系统的协议。它最初由 Sun Microsystems 在 1984 年开发,现在是类 Unix 操作系统(如 Linux、BSD、macOS)中广泛支持的一种标准。NFS 允许客户端计算机通过网络像访问本地磁盘一样读取、写入远程服务器上的文件。
这里涉及的实验机器如下:
服务器A(服务端),假设ip为192.168.100.10,自身硬盘容量大,提供硬盘空间给服务器B使用
服务器B (客户端),假设ip为192.168.100.20,自身硬盘容量小,通过NFS方式挂在服务器A的硬盘,并当成是本地硬盘使用
操作系统都是debian12
服务器A(服务端)
安装服务
sudo apt update
sudo apt install nfs-kernel-server
配置共享目录
#修改/etc/exports文件,假设我要共享的文件是qb的下载路径,权限最好改成777,这样子客户端读写时不受限
/opt/1panel/apps/qbittorrent/qbittorrent/data 192.168.100.20(rw,sync,no_subtree_check)
chmod 777 /opt/1panel/apps/qbittorrent/qbittorrent/data
#重启NFS服务
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
#如果有防火墙的话
sudo ufw allow from 192.168.100.20 to any port nfs
服务器B(客户端)
安装客户端
sudo apt update
sudo apt install nfs-common
创建挂载目录(一般都是mnt目录下)
sudo mkdir -p /mnt/nfs_qbdata
挂在共享目录
sudo mount 192.168.100.10:/opt/1panel/apps/qbittorrent/qbittorrent/data /mnt/nfs_qbdata
#检查下读写权限
ls -ld /mnt/nfs_qbdata
如果需要开机挂载(不建议)
sudo vim /etc/fstab
192.168.100.10:/opt/1panel/apps/qbittorrent/qbittorrent/data /mnt/nfs_qbdata nfs defaults 0 0
主要是遇到过国产Linux挂载nfs导致系统起不来的问题,个例哈。其实重启开机后执行一下这个挂载命令也是很方便的,如果多的话可以写成脚本。
jellyfin中挂载这个目录
jellyfin的docker compose文件中在volumes中增加挂载的目录
- /mnt/nfs_qbdata:/media/qbnfs
然后重启这个应用(数据不会丢失)
登录jellyfin管理后台,新增媒体库,选择这个目录,同时因为是采用TMM进行刮削,需要把内置的这些媒体刮削都取消掉

TMM相关设置
同样在TMM的docker compose文件中的volumes加入
- /mnt/nfs_qbdata:/media/qbnfs
媒体库中加入这个/media/qbnfs
重启docker应用
cd docker-compose.yml文件目录
sudo docker compose down
sudo docker compose up -d
重新进入这个页面会发现中文字乱码丢失,需要进行修复
docker ps #查看TMM的容器id,假设为d42474c2e398
sudo docker exec -it d42474c2e398 bash
wget http://dl-cdn.alpinelinux.org/alpine/v3.19/community/aarch64/font-wqy-zenhei-0.9.45-r3.apk
apk add --allow-untrusted font-wqy-zenhei-0.9.45-r3.apk
sudo docker restart d42474c2e398
再次登录页面会发现中文字回来了,但是刮削的时候会发现图片,nio等信息都无法写入到这个nfs文件夹里
TMM 的运行用户与 NFS 权限映射不一致 或 使用了 root 启动但被 NFS
root_squash
限制。
使用非root权限即可,假如用户为dandy
id dandy #获取用户号,一般第一个创建的是1000,uid=1000(dandy) gid=1000(dandy)
# 修改PUID和PGID
docker run -d \
-e PUID=1000 \
-e PGID=1000 \
-v /mnt/nfs_qbdata:/media \
-v /config/tmm:/config \
--name tinymediamanager \
tinymediamanager/tmm
我的参考:
version: '3.8'
services:
tinymediamanager:
image: romancin/tinymediamanager:latest
container_name: tinymediamanager
restart: unless-stopped
ports:
- "15800:5800"
- "15900:5900"
environment:
- USER_ID=1000 # ← 替换为你主机“dandy”用户的 UID
- GROUP_ID=1000 # ← 替换为你主机“dandy”用户的 GID
- TZ=Europe/Madrid
- VNC_PASSWORD=s123123123jksdf #访问密码
volumes:
- /share/Container/tinymediamanager/config:/config
- /share/Container/tinymediamanager/media:/media
- /opt/1panel/apps/qbittorrent/qbittorrent/data:/media/qb
- /mnt/nfs_qbdata:/media/qbnfs
#重建容器,在docker-compose.yml文件目录里执行
docker-compose down # 停止并删除旧容器(可选)
docker-compose up -d # 启动新容器
docker ps #查看TMM的容器id,假设为d42474c2e398,解决中文错乱问题
sudo docker exec -it d42474c2e398 bash
wget http://dl-cdn.alpinelinux.org/alpine/v3.19/community/aarch64/font-wqy-zenhei-0.9.45-r3.apk
apk add --allow-untrusted font-wqy-zenhei-0.9.45-r3.apk
sudo docker restart d42474c2e398
这样子,可以通过TMM进行愉快的“刮削”了,同时小鸡的硬盘因为外挂“电池”,“续航”更强大(容量更大了),可以下载更多的电影进行观看了。