1. 项目概述与核心价值
树莓派5作为最新一代的单板计算机,凭借其强大的性能和丰富的扩展能力,已经成为家庭服务器搭建的理想选择。结合X1009扩展板提供的SATA接口和2.5G网口,我们可以构建一个经济实惠但性能不俗的NAS系统。本文将详细介绍如何从零开始搭建基于OpenMediaVault 8(OMV 8)的家庭影院NAS系统,并部署完整的媒体管理套件。
这个方案的核心优势在于:
- 低成本:整套系统硬件成本控制在千元以内
- 低功耗:整机待机功耗仅10W左右
- 高性能:树莓派5的CPU性能较前代提升2-3倍,可流畅处理4K转码
- 易扩展:X1009扩展板提供双SATA接口,支持RAID配置
- 全功能:通过容器化部署完整的媒体获取、管理、播放生态链
2. 硬件准备与系统安装
2.1 硬件选型与组装
核心硬件清单:
- 树莓派5(8GB内存版本推荐)
- X1009扩展板(含散热风扇)
- 2.5英寸硬盘(建议选择NAS专用盘如西数红盘)
- 优质电源(官方30W电源或同等品质第三方电源)
- 散热配件(金属外壳或主动散热器)
组装注意事项:
- 先安装扩展板再连接硬盘,避免带电操作
- 确保散热片与芯片充分接触,建议使用导热胶固定
- 2.5G网口需要配合支持Multi-Gig的路由器才能发挥最大性能
- 双硬盘配置时,建议使用不同品牌的硬盘以提高可靠性
2.2 系统安装与基础配置
OMV 8安装步骤:
bash复制# 下载官方镜像
wget https://sourceforge.net/projects/openmediavault/files/8.0.0/openmediavault-8.0.0-raspi64.img.xz
# 刷写镜像到SD卡
xzcat openmediavault-8.0.0-raspi64.img.xz | sudo dd of=/dev/sdX bs=4M status=progress
# 首次启动后通过SSH登录(默认用户密码:root/openmediavault)
基础网络配置:
- 设置静态IP:
omv-firstaid→ 选择网络配置 - 更新软件源:
omv-update - 安装必要插件:
omv-extras(提供Docker支持)
提示:首次登录后立即修改默认密码,并通过
raspi-config扩展文件系统
3. OMV 8基础配置
3.1 存储管理
磁盘初始化流程:
- 物理磁盘 → 擦除(选择快速擦除)
- 文件系统创建(推荐ext4,兼容性最好)
- 挂载点设置(建议挂载到/srv/dev-disk-by-*路径)
共享文件夹设置:
- media:存放媒体文件
- downloads:下载临时目录
- config:容器配置文件
- backup:系统备份
每个共享文件夹需要设置正确的权限(建议用户组为users,权限775)
3.2 网络与服务配置
SMB/NFS服务:
- 启用SMB服务并设置工作组
- 创建共享链接到之前设置的文件夹
- 对于4K视频流,建议启用SMB3多通道支持
Docker环境准备:
bash复制# 安装Docker
omv-install docker docker-compose
# 创建docker用户组
sudo groupadd docker
sudo usermod -aG docker $USER
4. 媒体套件容器部署
4.1 Docker Compose编排
创建docker-compose.yml文件:
yaml复制version: '3.8'
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
environment:
- PUID=1000
- PGID=100
volumes:
- /srv/dev-disk-by-label-config/jellyfin:/config
- /srv/dev-disk-by-label-media:/media
ports:
- 8096:8096
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
qbittorrent:
image: linuxserver/qbittorrent
container_name: qbittorrent
environment:
- PUID=1000
- PGID=100
volumes:
- /srv/dev-disk-by-label-config/qbittorrent:/config
- /srv/dev-disk-by-label-downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
prowlarr:
image: linuxserver/prowlarr
container_name: prowlarr
environment:
- PUID=1000
- PGID=100
volumes:
- /srv/dev-disk-by-label-config/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
radarr:
image: linuxserver/radarr
container_name: radarr
environment:
- PUID=1000
- PGID=100
volumes:
- /srv/dev-disk-by-label-config/radarr:/config
- /srv/dev-disk-by-label-media/movies:/movies
- /srv/dev-disk-by-label-downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: linuxserver/sonarr
container_name: sonarr
environment:
- PUID=1000
- PGID=100
volumes:
- /srv/dev-disk-by-label-config/sonarr:/config
- /srv/dev-disk-by-label-media/tv:/tv
- /srv/dev-disk-by-label-downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
bazarr:
image: linuxserver/bazarr
container_name: bazarr
environment:
- PUID=1000
- PGID=100
volumes:
- /srv/dev-disk-by-label-config/bazarr:/config
- /srv/dev-disk-by-label-media:/media
ports:
- 6767:6767
restart: unless-stopped
4.2 容器初始化配置
Jellyfin硬件加速设置:
- 进入容器控制台:
docker exec -it jellyfin bash - 安装VAAPI驱动:
apt install intel-media-va-driver-non-free - 在Jellyfin控制台 → 播放设置中启用硬件加速
qBittorrent优化:
- 连接限制:全局最大连接数设置为2000
- 磁盘缓存:512MB(树莓派5内存充足)
- 启用μTP协议提高内网传输效率
索引器配置技巧:
- 在Prowlarr中添加Jackett索引源
- 设置合理的API请求间隔(建议≥10秒)
- 启用自动同步到Sonarr/Radarr
5. 系统集成与自动化
5.1 服务互联配置
Radarr/Sonarr与qBittorrent集成:
- 在下载客户端设置中添加qBittorrent
- 主机:qbittorrent
- 端口:8080
- 用户名/密码:admin/adminadmin(首次登录后修改)
- 设置完成的下载自动移动到媒体库
Bazarr字幕自动化:
- 关联Sonarr/Radarr实例
- 配置字幕提供商(推荐OpenSubtitles)
- 设置自动下载策略(匹配度≥90%)
5.2 计划任务与维护
OMV定时任务:
- 每周文件系统检查
- 每日凌晨3点执行TRIM(SSD适用)
- 每月1号备份容器配置
媒体库维护脚本:
bash复制#!/bin/bash
# 清理空文件夹
find /srv/dev-disk-by-label-media -type d -empty -delete
# 修复文件权限
chmod -R 775 /srv/dev-disk-by-label-media
chown -R 1000:100 /srv/dev-disk-by-label-media
# 更新容器
docker-compose pull && docker-compose up -d
6. 性能优化与问题排查
6.1 树莓派5专属优化
CPU调度策略:
bash复制# 设置性能模式
sudo cpufreq-set -g performance
# 写入启动项
echo 'cpufreq-set -g performance' | sudo tee -a /etc/rc.local
内存分配建议:
- Jellyfin:预留2GB
- 其他容器:各512MB
- 系统保留:至少1GB
6.2 常见问题解决方案
4K播放卡顿:
- 检查Jellyfin转码日志
- 确认硬件加速已启用
- 降低转码质量(建议720p 4Mbps)
下载速度慢:
- 检查qBittorrent端口映射
- 更换Tracker服务器
- 调整连接协议(禁用IPv6测试)
容器启动失败:
- 查看日志:
docker logs <容器名> - 检查卷映射权限
- 验证Compose文件格式
7. 安全加固与远程访问
7.1 基础安全措施
必做安全配置:
- 更改所有Web界面默认密码
- 设置OMV防火墙规则
- 启用Fail2Ban防护
- 定期备份
/srv/dev-disk-by-label-config
SSH安全加固:
bash复制# 禁用root登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 启用密钥认证
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
# 重启服务
sudo systemctl restart sshd
7.2 远程访问方案
Tailscale组网:
bash复制# 安装Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# 启动并登录
sudo tailscale up
反向代理配置(Caddy示例):
code复制jellyfin.yourdomain.com {
reverse_proxy localhost:8096
encode gzip
}
注意:暴露服务到公网前必须设置强密码和2FA认证
8. 进阶扩展与升级路径
8.1 硬件扩展建议
性能升级选项:
- 添加USB3.0转NVMe扩展(提升IO性能)
- 升级散热方案(支持持续高负载)
- 外接GPU加速(实验性支持)
存储扩展方案:
- 通过X1009扩展板的第二个SATA口添加硬盘
- 配置软件RAID1(mirror)提高可靠性
- 使用LVM实现存储池管理
8.2 软件生态扩展
值得添加的服务:
- Tautulli:媒体库监控与分析
- Overseerr:自助请求系统
- PhotoPrism:个人照片管理
- Nextcloud:个人云存储
监控方案:
yaml复制# Prometheus + Grafana监控栈
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- 9090:9090
grafana:
image: grafana/grafana
volumes:
- grafana-storage:/var/lib/grafana
ports:
- 3000:3000
在实际部署中,我发现树莓派5的散热需要特别关注——即使有金属外壳,在连续转码时CPU温度仍可能达到80℃以上。我的解决方案是在扩展板上加装了一个4010风扇,通过PWM控制在60℃以上启动,成功将满载温度控制在70℃以内。另外,X1009扩展板的2.5G网口性能表现优异,配合SSD存储可以轻松达到280MB/s的传输速度,完全满足4K原盘播放需求。