Skip to content

媒体服务器选择与部署指南

主流媒体服务器对比

1. Jellyfin

优势

  • 🆓 完全免费开源
  • 🔒 注重隐私,无需账户
  • 🎮 支持硬件转码
  • 🌐 活跃的社区支持
  • 🔧 高度可定制

劣势

  • 📱 客户端支持相对较少
  • 🎨 界面设计相对简单
  • 🔄 某些功能不如商业软件完善

2. Emby

优势

  • 🎨 界面美观,用户体验好
  • 📱 客户端支持广泛
  • 🎮 优秀的直播电视功能
  • 🔧 配置简单直观
  • 🎬 媒体识别准确

劣势

  • 💰 高级功能需付费
  • 🔒 需要账户登录
  • 🌐 国内访问可能不稳定

3. Plex

优势

  • 🎨 最精美的界面
  • 📱 最全面的客户端支持
  • 🎬 强大的媒体管理能力
  • 🔄 内容发现功能出色
  • 🌐 CDN加速支持

劣势

  • 💰 高级功能需付费
  • 🔒 强制要求Plex账户
  • 🌐 国内连接性较差
  • 🔧 自定义程度较低

Jellyfin部署教程

1. 准备工作

系统要求

  • CPU:2核以上
  • 内存:2GB以上
  • 存储:根据媒体库大小决定
  • 网络:100Mbps以上

目录结构

bash
~/jellyfin/
├── config/     # 配置文件
├── cache/      # 缓存文件
└── media/      # 媒体文件
    ├── movies/     # 电影
    ├── tvshows/    # 电视剧
    └── music/      # 音乐

2. Docker部署

  1. 创建必要目录:
bash
mkdir -p ~/jellyfin/{config,cache,media/{movies,tvshows,music}}
  1. 创建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  # 替换为你的域名
  1. 启动服务:
bash
cd ~/jellyfin
docker-compose up -d

3. 初始配置

  1. 访问Web界面:

  2. 首次设置向导:

    • 选择语言:简体中文
    • 创建管理员账户
    • 设置媒体库位置
    • 配置远程访问
  3. 配置硬件加速:

    • 转到"管理"->"播放"
    • 启用"硬件加速"
    • 选择适合的编码器

4. 媒体库设置

  1. 创建电影库:

    • 类型:电影
    • 路径:/media/movies
    • 启用自动扫描
  2. 创建剧集库:

    • 类型:电视节目
    • 路径:/media/tvshows
    • 启用季文件夹
  3. 创建音乐库:

    • 类型:音乐
    • 路径:/media/music
    • 启用专辑艺术家

5. 性能优化

  1. 转码设置:
bash
# 编辑配置文件
nano ~/jellyfin/config/encoding.xml

# 添加以下配置
<EncodingOptions>
    <HardwareAccelerationType>vaapi</HardwareAccelerationType>
    <EnableHardwareEncoding>true</EnableHardwareEncoding>
    <HardwareDecodingCodecs>h264,hevc,mpeg2video,vc1</HardwareDecodingCodecs>
</EncodingOptions>
  1. 缓存设置:

    • 转码缓存:2GB
    • 元数据缓存:1GB
    • 启用图片缓存
  2. 网络设置:

    • 启用HTTPS
    • 配置反向代理
    • 设置合适的缓冲值

Emby部署教程

1. 基础设置

  1. 创建目录结构:
bash
mkdir -p ~/emby/{config,media/{movies,tvshows,music}}
  1. 创建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. 高级配置

  1. 硬件加速设置:
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
  1. 网络优化:
yaml
# docker-compose.yml中添加
    networks:
      - medianet
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.emby.rule=Host(`emby.example.com`)"

Plex部署教程

1. 基础部署

  1. 创建目录:
bash
mkdir -p ~/plex/{config,transcode,media/{movies,tvshows,music}}
  1. 创建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. 进阶配置

  1. 硬件转码设置:

    • 确保Plex Pass激活
    • 启用硬件加速
    • 配置转码目录
  2. 远程访问设置:

    • 配置端口转发
    • 设置CDN加速
    • 启用SSL证书

通用优化建议

1. 存储优化

  1. 目录结构规范:
/media/
├── movies/
│   ├── Movie (2024)/
│   │   ├── Movie (2024).mkv
│   │   └── subtitles/
├── tvshows/
│   ├── Show Name/
│   │   ├── Season 01/
│   │   │   ├── S01E01.mkv
│   │   │   └── subtitles/
└── music/
    ├── Artist/
    │   ├── Album/
    │   │   └── 01 - Track.mp3
  1. 文件命名规范:
    • 电影:Movie.Name.2024.1080p.mkv
    • 剧集:Show.Name.S01E01.1080p.mkv
    • 音乐:01 - Track Name.mp3

2. 网络优化

  1. 反向代理配置(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";
    }
}
  1. CDN配置:
    • 使用Cloudflare
    • 配置DNS记录
    • 启用HTTPS

3. 性能优化

  1. 系统级优化:
bash
# 调整系统限制
sudo nano /etc/sysctl.conf

# 添加以下内容
fs.inotify.max_user_watches = 524288
vm.swappiness = 10
  1. Docker优化:
bash
# 配置日志轮转
sudo nano /etc/docker/daemon.json

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

4. 监控与维护

  1. 设置监控:

    • 使用Netdata监控系统资源
    • 配置邮件告警
    • 监控存储空间
  2. 定期维护:

    • 更新软件版本
    • 清理缓存
    • 备份配置
    • 整理媒体库

故障排除

1. 常见问题

  1. 转码失败:

    • 检查硬件加速配置
    • 验证显卡驱动
    • 查看转码日志
  2. 网络问题:

    • 检查端口映射
    • 验证防火墙规则
    • 测试网络连接
  3. 存储问题:

    • 检查权限设置
    • 验证挂载点
    • 清理缓存文件

2. 日志分析

  1. 查看容器日志:
bash
# Jellyfin
docker logs -f jellyfin

# Emby
docker logs -f emby

# Plex
docker logs -f plex
  1. 系统日志:
bash
# 查看系统日志
sudo journalctl -u docker.service

# 查看硬件日志
sudo dmesg | grep -i gpu

3. 性能诊断

  1. 资源监控:
bash
# 查看容器资源使用
docker stats

# 查看系统负载
top -c
  1. 网络诊断:
bash
# 测试网络连接
netstat -tupln

# 检查端口
ss -tulpn