Appearance
媒体服务器选择与部署指南
主流媒体服务器对比
1. Jellyfin
优势
- 🆓 完全免费开源
- 🔒 注重隐私,无需账户
- 🎮 支持硬件转码
- 🌐 活跃的社区支持
- 🔧 高度可定制
劣势
- 📱 客户端支持相对较少
- 🎨 界面设计相对简单
- 🔄 某些功能不如商业软件完善
2. Emby
优势
- 🎨 界面美观,用户体验好
- 📱 客户端支持广泛
- 🎮 优秀的直播电视功能
- 🔧 配置简单直观
- 🎬 媒体识别准确
劣势
- 💰 高级功能需付费
- 🔒 需要账户登录
- 🌐 国内访问可能不稳定
3. Plex
优势
- 🎨 最精美的界面
- 📱 最全面的客户端支持
- 🎬 强大的媒体管理能力
- 🔄 内容发现功能出色
- 🌐 CDN加速支持
劣势
- 💰 高级功能需付费
- 🔒 强制要求Plex账户
- 🌐 国内连接性较差
- 🔧 自定义程度较低
Jellyfin部署教程
1. 准备工作
系统要求
- CPU:2核以上
- 内存:2GB以上
- 存储:根据媒体库大小决定
- 网络:100Mbps以上
目录结构
bash
~/jellyfin/
├── config/ # 配置文件
├── cache/ # 缓存文件
└── media/ # 媒体文件
├── movies/ # 电影
├── tvshows/ # 电视剧
└── music/ # 音乐
2. Docker部署
- 创建必要目录:
bash
mkdir -p ~/jellyfin/{config,cache,media/{movies,tvshows,music}}
- 创建docker-compose.yml:
yaml
version: "3.5"
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000 # 替换为你的UID:GID
network_mode: "host"
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media
devices:
- /dev/dri:/dev/dri # Intel GPU硬件加速
restart: unless-stopped
environment:
- JELLYFIN_PublishedServerUrl=http://example.com # 替换为你的域名
- 启动服务:
bash
cd ~/jellyfin
docker-compose up -d
3. 初始配置
访问Web界面:
- 本地访问:http://localhost:8096
- 远程访问:http://你的IP:8096
首次设置向导:
- 选择语言:简体中文
- 创建管理员账户
- 设置媒体库位置
- 配置远程访问
配置硬件加速:
- 转到"管理"->"播放"
- 启用"硬件加速"
- 选择适合的编码器
4. 媒体库设置
创建电影库:
- 类型:电影
- 路径:/media/movies
- 启用自动扫描
创建剧集库:
- 类型:电视节目
- 路径:/media/tvshows
- 启用季文件夹
创建音乐库:
- 类型:音乐
- 路径:/media/music
- 启用专辑艺术家
5. 性能优化
- 转码设置:
bash
# 编辑配置文件
nano ~/jellyfin/config/encoding.xml
# 添加以下配置
<EncodingOptions>
<HardwareAccelerationType>vaapi</HardwareAccelerationType>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
<HardwareDecodingCodecs>h264,hevc,mpeg2video,vc1</HardwareDecodingCodecs>
</EncodingOptions>
缓存设置:
- 转码缓存:2GB
- 元数据缓存:1GB
- 启用图片缓存
网络设置:
- 启用HTTPS
- 配置反向代理
- 设置合适的缓冲值
Emby部署教程
1. 基础设置
- 创建目录结构:
bash
mkdir -p ~/emby/{config,media/{movies,tvshows,music}}
- 创建docker-compose.yml:
yaml
version: "3"
services:
emby:
image: emby/embyserver:latest
container_name: emby
environment:
- UID=1000
- GID=1000
volumes:
- ./config:/config
- ./media:/media
ports:
- 8096:8096
- 8920:8920
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
2. 高级配置
- 硬件加速设置:
bash
# 确保添加GPU设备
devices:
- /dev/dri:/dev/dri # Intel GPU
# 或
- /dev/nvidia0:/dev/nvidia0 # NVIDIA GPU
- /dev/nvidiactl:/dev/nvidiactl
- /dev/nvidia-modeset:/dev/nvidia-modeset
- 网络优化:
yaml
# docker-compose.yml中添加
networks:
- medianet
labels:
- "traefik.enable=true"
- "traefik.http.routers.emby.rule=Host(`emby.example.com`)"
Plex部署教程
1. 基础部署
- 创建目录:
bash
mkdir -p ~/plex/{config,transcode,media/{movies,tvshows,music}}
- 创建docker-compose.yml:
yaml
version: "3"
services:
plex:
image: plexinc/pms-docker:latest
container_name: plex
environment:
- TZ=Asia/Shanghai
- PLEX_CLAIM=claim-XXXXXXXXXXXXXXXX
network_mode: host
volumes:
- ./config:/config
- ./transcode:/transcode
- ./media:/media
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
2. 进阶配置
硬件转码设置:
- 确保Plex Pass激活
- 启用硬件加速
- 配置转码目录
远程访问设置:
- 配置端口转发
- 设置CDN加速
- 启用SSL证书
通用优化建议
1. 存储优化
- 目录结构规范:
/media/
├── movies/
│ ├── Movie (2024)/
│ │ ├── Movie (2024).mkv
│ │ └── subtitles/
├── tvshows/
│ ├── Show Name/
│ │ ├── Season 01/
│ │ │ ├── S01E01.mkv
│ │ │ └── subtitles/
└── music/
├── Artist/
│ ├── Album/
│ │ └── 01 - Track.mp3
- 文件命名规范:
- 电影:Movie.Name.2024.1080p.mkv
- 剧集:Show.Name.S01E01.1080p.mkv
- 音乐:01 - Track Name.mp3
2. 网络优化
- 反向代理配置(Nginx):
nginx
server {
listen 443 ssl;
server_name media.example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
- CDN配置:
- 使用Cloudflare
- 配置DNS记录
- 启用HTTPS
3. 性能优化
- 系统级优化:
bash
# 调整系统限制
sudo nano /etc/sysctl.conf
# 添加以下内容
fs.inotify.max_user_watches = 524288
vm.swappiness = 10
- Docker优化:
bash
# 配置日志轮转
sudo nano /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
4. 监控与维护
设置监控:
- 使用Netdata监控系统资源
- 配置邮件告警
- 监控存储空间
定期维护:
- 更新软件版本
- 清理缓存
- 备份配置
- 整理媒体库
故障排除
1. 常见问题
转码失败:
- 检查硬件加速配置
- 验证显卡驱动
- 查看转码日志
网络问题:
- 检查端口映射
- 验证防火墙规则
- 测试网络连接
存储问题:
- 检查权限设置
- 验证挂载点
- 清理缓存文件
2. 日志分析
- 查看容器日志:
bash
# Jellyfin
docker logs -f jellyfin
# Emby
docker logs -f emby
# Plex
docker logs -f plex
- 系统日志:
bash
# 查看系统日志
sudo journalctl -u docker.service
# 查看硬件日志
sudo dmesg | grep -i gpu
3. 性能诊断
- 资源监控:
bash
# 查看容器资源使用
docker stats
# 查看系统负载
top -c
- 网络诊断:
bash
# 测试网络连接
netstat -tupln
# 检查端口
ss -tulpn