跳轉到內容

使用 Docker 部署 Jellyfin 媒體服務器:打造個人 Netflix(2026版)

Jellyfin 媒體服務器

Jellyfin 是一款完全免費、開源的媒體服務器軟件,讓您可以在自己的服務器上搭建個人流媒體平臺。與 Plex 和 Emby 不同,Jellyfin 沒有任何付費限制,所有功能完全開放,包括硬件轉碼、多用戶支持、移動端應用等。本教程將帶您從零開始,通過 Docker 部署 Jellyfin,打造屬於您自己的"Netflix"。

目錄

  1. 什麼是 Jellyfin?
  2. 為什麼選擇 Jellyfin?
  3. 系統要求與準備
  4. Docker 部署方案
  5. 初始配置與設置
  6. 硬件轉碼配置
  7. 元數據刮削與管理
  8. 遠程訪問設置
  9. 移動端 App 使用
  10. 性能優化與維護

1. 什麼是 Jellyfin?

1.1 Jellyfin 簡介

Jellyfin 是 Emby 3.5.2 版本的開源分支,於 2018 年正式發佈。由於 Emby 轉向閉源並引入付費功能,社區開發者決定創建一個完全開源、免費的替代品,這就是 Jellyfin 的由來。

核心特點

  • 🆓 完全免費:無任何付費功能或訂閱
  • 🔓 開源透明:代碼完全公開,可審計
  • 🎬 媒體管理:自動整理電影、劇集、音樂
  • 📺 多客戶端:Web、iOS、Android、智能電視
  • 硬件轉碼:支持 GPU 加速轉碼
  • 👥 多用戶支持:獨立賬戶和觀看歷史
  • 🌐 遠程訪問:隨時隨地訪問媒體庫
  • 🔒 隱私保護:數據完全掌控在自己手中

1.2 與其他媒體服務器對比

特性JellyfinPlexEmbyKodi
價格🆓 完全免費💰 部分付費💰 部分付費🆓 免費
開源✅ 完全開源❌ 閉源❌ 閉源✅ 開源
硬件轉碼✅ 免費💰 Plex Pass💰 Emby Premiere⚠️ 需插件
移動端 App✅ 免費💰 Plex Pass💰 付費✅ 免費
離線下載✅ 免費💰 Plex Pass💰 付費N/A
** DVR 錄製**✅ 免費💰 Plex Pass💰 付費⚠️ 需插件
多服務器✅ 免費💰 Plex Pass💰 付費N/A
社區支持⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
易用性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
自定義性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

選擇建議

  • 🎯 追求免費和開源 → Jellyfin
  • 📱 需要最佳用戶體驗 → Plex
  • ⚖️ 折中方案 → Emby
  • 🖥️ 本地播放為主 → Kodi

1.3 發展歷程

時間事件
2018.12Jellyfin 項目啟動
2019.02首個穩定版本發佈
2020.0710.0 版本,重大改進
2021.03移動端 App 發佈
2022.01硬件轉碼完善
2023.0610.8 版本,UI 重構
2024.1110.9 版本,性能提升
2025.0510.10 版本,AI 元數據
2026.01持續更新,社區活躍

2. 為什麼選擇 Jellyfin?

2.1 核心優勢

優勢一:完全免費,無隱藏費用

Plex/Emby 的付費牆

Plex Pass ($119.99 終身或 $4.99/月):
❌ 硬件轉碼
❌ 移動同步
❌ DVR 錄製
❌ 高級音樂功能

Emby Premiere ($54/年或 $119 終身):
❌ 硬件轉碼
❌ 離線下載
❌ 直播電視
❌ 家長控制增強

Jellyfin

✅ 所有功能完全免費
✅ 無訂閱費用
✅ 無功能限制
✅ 社區驅動開發

實際節省

假設使用 5 年:
Plex Pass 終身:$119.99
Emby Premiere 5年:$270
Jellyfin:$0

節省:$120-270

優勢二:隱私和數據主權

雲端服務的問題

Plex/Emby:
❌ 需要連接到官方服務器
❌ 元數據請求經過第三方
❌ 觀看習慣被追蹤
❌ 可能收集使用數據

Jellyfin 的本地優先

✅ 完全本地運行
✅ 無需外部服務器
✅ 數據完全私有
✅ 可選擇性啟用元數據
✅ 可離線使用

隱私保護

bash
# Jellyfin 可以完全斷網運行
# 只需內網即可訪問
# 不依賴任何雲服務

優勢三:強大的硬件轉碼

什麼是轉碼

原始視頻格式 → 實時轉換 → 兼容格式

例如:
4K HEVC → 1080p H.264
(用於不支持原格式的設備)

硬件轉碼優勢

CPU 軟解:
- 佔用大量 CPU
- 功耗高
- 可能卡頓

GPU 硬解:
- 佔用極少 CPU
- 功耗低
- 流暢播放
- 支持多路併發

支持的硬件

✅ Intel Quick Sync (核顯)
✅ NVIDIA NVENC/NVDEC
✅ AMD VCE/VCN
✅ ARM Mali (部分設備)
✅ Raspberry Pi (部分型號)

性能對比

硬件併發轉碼數功耗
Intel i5 (核顯)3-5 路15W
NVIDIA GTX 16505-8 路75W
AMD RX 55004-6 路100W
CPU 軟解 (i7)1-2 路65W

優勢四:活躍的社區和插件生態

官方插件

📚 元數據提供者
🎵 音樂歌詞
📺 直播電視集成
🔤 字幕下載
🎨 主題定製
📊 統計分析

社區貢獻

GitHub Stars: 30,000+
Contributors: 500+
Releases: 定期更新
Issues: 快速響應

文檔資源

✅ 官方文檔完善
✅ 社區教程豐富
✅ YouTube 視頻眾多
✅ 論壇活躍

2.2 適用場景

場景 1:家庭媒體中心

需求

- 存儲家庭照片和視頻
- 共享電影和劇集
- 多設備同時觀看
- 兒童內容管理

Jellyfin 方案

✅ 集中存儲所有媒體
✅ 自動整理和分類
✅ 多用戶獨立賬戶
✅ 家長控制功能
✅ 跨設備同步進度

場景 2:個人影視庫

需求

- 收藏大量電影
- 追劇管理
- 高質量播放
- 隨時訪問

Jellyfin 方案

✅ 自動下載元數據
✅ 海報牆展示
✅ 續播功能
✅ 收藏和播放列表
✅ 評分和評論

場景 3:音樂庫管理

需求

- 大量音樂收藏
- 按藝術家/專輯分類
- 歌詞顯示
- 多房間播放

Jellyfin 方案

✅ 自動整理音樂
✅ ID3 標籤讀取
✅ 歌詞同步
✅ 播放隊列
✅ 隨機播放

場景 4:遠程訪問

需求

- 外出時訪問家中媒體
- 手機/平板觀看
- 流量優化
- 安全訪問

Jellyfin 方案

✅ Web 界面訪問
✅ 移動端 App
✅ 自適應碼率
✅ HTTPS 加密
✅ 用戶認證

3. 系統要求與準備

3.1 硬件要求

最低配置

CPU: 雙核 2GHz+
RAM: 2GB
存儲: 20GB (系統) + 媒體空間
網絡: 100Mbps
GPU: 可選(用於轉碼)

適用場景

  • 少量媒體文件(< 500GB)
  • 1-2 個併發用戶
  • 直接播放為主(少轉碼)
  • 樹莓派等低功耗設備

推薦配置

CPU: 四核 3GHz+ (Intel 8代+ 或 AMD Ryzen)
RAM: 8GB
存儲: 100GB (系統) + TB 級媒體存儲
網絡: Gigabit Ethernet
GPU: Intel 核顯 或 NVIDIA GTX 1650+

適用場景

  • 中等媒體庫(1-5TB)
  • 3-5 個併發用戶
  • 需要硬件轉碼
  • 4K 內容支持

高性能配置

CPU: 六核+ (Intel i7/i9 或 AMD Ryzen 7/9)
RAM: 16-32GB
存儲: NVMe SSD (系統) + RAID 陣列 (媒體)
網絡: 2.5Gbps+ Ethernet
GPU: NVIDIA RTX 3060+ 或 Intel Arc

適用場景

  • 大型媒體庫(10TB+)
  • 10+ 併發用戶
  • 多路 4K 轉碼
  • 企業級應用

3.2 存儲規劃

存儲結構建議

/media/
├── movies/           # 電影
│   ├── Movie Name (Year)/
│   │   ├── movie.mp4
│   │   ├── poster.jpg
│   │   └── fanart.jpg
├── tv/              # 電視劇
│   ├── Show Name/
│   │   ├── Season 01/
│   │   │   ├── S01E01.mp4
│   │   │   └── S01E02.mp4
│   │   └── Season 02/
├── music/           # 音樂
│   ├── Artist Name/
│   │   ├── Album Name/
│   │   │   ├── 01 Song.mp3
│   │   │   └── cover.jpg
├── photos/          # 照片(可選)
└── books/           # 電子書(可選)

命名規範

電影

✅ 好:
Avatar (2009).mkv
The Dark Knight (2008).mp4

❌ 差:
avatar_final_v2.mkv
movie1.mp4

電視劇

✅ 好:
Breaking Bad/
├── Season 01/
│   ├── Breaking Bad - S01E01.mkv
│   └── Breaking Bad - S01E02.mkv

❌ 差:
bb/
├── s1/
│   ├── ep1.avi
│   └── 1-2.mkv

音樂

✅ 好:
Artist/
└── Album/
    ├── 01 - Song Title.mp3
    └── folder.jpg

❌ 差:
music/
└── songs/
    ├── track1.mp3
    └── song.mp3

3.3 網絡要求

帶寬計算

直接播放

SD (480p): 2-5 Mbps
HD (1080p): 5-10 Mbps
4K (2160p): 15-25 Mbps

轉碼播放

取決於轉碼質量:
480p: 1-2 Mbps
720p: 2-4 Mbps
1080p: 4-8 Mbps

併發計算

示例:5 個用戶同時觀看 1080p
直接播放:5 × 8 Mbps = 40 Mbps
轉碼播放:5 × 5 Mbps = 25 Mbps

建議上行帶寬:50-100 Mbps

路由器設置

端口轉發(如需外網訪問):

TCP 8096: Jellyfin Web UI
TCP 8920: HTTPS (如果啟用)
UDP 1900: DLNA (可選)

QoS 設置

優先 Jellyfin 流量
確保流暢播放
避免其他下載影響

3.4 軟件準備

必需軟件

✅ Docker 和 Docker Compose
✅ 文本編輯器
✅ SSH 客戶端(遠程管理)
✅ 瀏覽器

可選軟件

📁 File Browser(文件管理)
🔄 Watchtower(自動更新)
🌐 Nginx Proxy Manager(反向代理)
🔍 Radarr/Sonarr(自動下載)

4. Docker 部署方案

4.1 安裝 Docker

Ubuntu/Debian

bash
# 卸載舊版本
sudo apt remove docker docker-engine docker.io containerd runc

# 安裝依賴
sudo apt update
sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 添加 GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加倉庫
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安裝 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

# 驗證安裝
docker --version
docker compose version

CentOS/RHEL

bash
# 添加倉庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安裝
sudo yum install docker-ce docker-ce-cli containerd.io

# 啟動並開機自啟
sudo systemctl start docker
sudo systemctl enable docker

macOS

bash
# 安裝 Docker Desktop
brew install --cask docker

# 啟動
open /Applications/Docker.app

Windows

下載 Docker Desktop for Windows
https://www.docker.com/products/docker-desktop

安裝並啟動

4.2 創建目錄結構

bash
# 創建項目目錄
mkdir -p ~/jellyfin/{config,cache,media}
cd ~/jellyfin

# 目錄說明:
# config/ - Jellyfin 配置文件
# cache/ - 緩存和轉碼臨時文件
# media/ - 媒體文件(或掛載外部存儲)

如果使用外部存儲

bash
# 掛載硬盤
sudo mount /dev/sdb1 /mnt/media

# 創建符號鏈接
ln -s /mnt/media ~/jellyfin/media

4.3 Docker Compose 配置

創建 docker-compose.yml

yaml
version: '3.8'

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    user: 1000:1000  # 使用當前用戶 ID
    network_mode: host  # 使用 host 網絡模式
    volumes:
      - ./config:/config
      - ./cache:/cache
      - ./media:/media:ro  # 只讀掛載媒體
    environment:
      - TZ=Asia/Shanghai  # 時區
      - UMASK_SET=022
    devices:
      # Intel 核顯(如使用)
      - /dev/dri:/dev/dri
      # NVIDIA GPU(如使用,需要 nvidia-docker)
      # - /dev/nvidia0:/dev/nvidia0
      # - /dev/nvidiactl:/dev/nvidiactl
      # - /dev/nvidia-uvm:/dev/nvidia-uvm
    restart: unless-stopped
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

重要說明

用戶 ID 獲取

bash
# 查看當前用戶 ID
id

# 輸出示例:
# uid=1000(username) gid=1000(username) groups=1000(username)

# 修改 docker-compose.yml 中的 user: 1000:1000

網絡模式

host 模式:
✅ 性能最佳
✅ 端口自動映射
❌ 與其他容器可能衝突

bridge 模式(備選):
ports:
  - "8096:8096"
  - "8920:8920"

設備掛載

Intel 核顯:

bash
# 檢查是否有 DRI 設備
ls -la /dev/dri

# 應該看到:
# card0
# renderD128

NVIDIA GPU:

bash
# 需要安裝 NVIDIA Container Toolkit
# 參考:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

# 測試
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

4.4 啟動服務

bash
# 啟動 Jellyfin
docker compose up -d

# 查看日誌
docker compose logs -f jellyfin

# 查看運行狀態
docker ps

期望輸出

CONTAINER ID   IMAGE                      STATUS
xxx            jellyfin/jellyfin:latest   Up 2 minutes

4.5 訪問 Jellyfin

首次訪問

瀏覽器打開:http://your-server-ip:8096

例如:http://192.168.1.100:8096

看到歡迎頁面

🎉 Welcome to Jellyfin!

請選擇語言 → 繼續

5. 初始配置與設置

5.1 初始嚮導

步驟 1:選擇語言

選擇:簡體中文 或 English
點擊 "Next"

步驟 2:創建管理員賬戶

用戶名:admin(或其他)
密碼:強密碼(至少 8 位)
確認密碼:再次輸入

⚠️ 重要:
- 記住密碼
- 使用強密碼
- 建議啟用兩步驗證(後續)

步驟 3:添加媒體庫

添加電影庫

1. 點擊 "Add Media Library"
2. 內容類型:Movies(電影)
3. 顯示名稱:Movies(或中文"電影")
4. 文件夾:選擇 /media/movies
5. 點擊 "OK"

添加電視劇庫

1. 點擊 "Add Media Library"
2. 內容類型:TV Shows(電視劇)
3. 顯示名稱:TV Shows(或"電視劇")
4. 文件夾:選擇 /media/tv
5. 點擊 "OK"

添加音樂庫(可選):

1. 內容類型:Music(音樂)
2. 顯示名稱:Music(或"音樂")
3. 文件夾:選擇 /media/music
4. 點擊 "OK"

步驟 4:元數據語言

首選元數據語言:Chinese Simplified(簡體中文)
或 English(英文,元數據更全)

國家/地區:China(中國)

步驟 5:完成設置

點擊 "Finish"
進入主界面

5.2 基本設置

進入 Dashboard(儀表板):

General(常規)

Server name: My Jellyfin Server
Preferred language: 簡體中文
Enable automatic port mapping: No(如已手動配置)

Playback(播放)

Enable hardware acceleration: 
- 選擇您的 GPU 類型
  * Intel QuickSync
  * NVIDIA NVENC
  * AMD VCE
  * Disabled(如無 GPU)

Transcoding throttle: 0(無限制)
Enable throttling: No

Streaming(流媒體)

Internet streaming bitrate limit: 0(無限制)
或根據帶寬設置:
- 10 Mbps: 10000 kbps
- 50 Mbps: 50000 kbps

Remote quality: Auto(自動)

5.3 用戶管理

創建新用戶

Dashboard → Users → Add User

用戶名:guest
密碼:(可選)
允許遠程控制:Yes
允許媒體下載:No(根據需要)

點擊 "Save"

家長控制

Dashboard → Users → 選擇用戶 → Parental Control

限制內容評級:
- 電影:PG-13 以下
- 電視:TV-14 以下

隱藏特定媒體庫:Yes/No
設置觀看時間限制:可選

5.4 備份配置

手動備份

bash
# 備份配置目錄
tar czf jellyfin-backup-$(date +%Y%m%d).tar.gz ~/jellyfin/config/

# 下載到本地
scp user@server:~/jellyfin-backup-*.tar.gz ./

自動備份

yaml
# 添加到 docker-compose.yml
services:
  jellyfin-backup:
    image: alpine
    volumes:
      - ./config:/source:ro
      - ./backups:/backup
    command: >
      sh -c "
        tar czf /backup/jellyfin-$(date +%Y%m%d).tar.gz /source &&
        find /backup -name '*.tar.gz' -mtime +30 -delete
      "
    restart: no

6. 硬件轉碼配置

6.1 Intel 核顯配置

檢查硬件

bash
# 查看顯卡信息
lspci | grep VGA

# 應該看到:
# Intel Corporation UHD Graphics 630

# 檢查 DRI 設備
ls -la /dev/dri

加載驅動

bash
# 確保加載 i915 驅動
sudo modprobe i915

# 驗證
lsmod | grep i915

權限設置

bash
# 添加用戶到 video 組
sudo usermod -aG video $USER

# 重啟 Docker 容器
docker compose down
docker compose up -d

Jellyfin 設置

Dashboard → Playback → Transcoding

Hardware acceleration: Intel QuickSync (QSV)

Encoder preset: Quality
Encoding rate control: VBR
Enable VPP Tone Mapping: Yes(HDR 內容)

測試轉碼

1. 播放一個需要轉碼的視頻
2. Dashboard → Dashboard → Active Devices
3. 查看是否顯示 "HW"(硬件加速)

6.2 NVIDIA GPU 配置

安裝驅動

bash
# Ubuntu
sudo apt install nvidia-driver-535

# 重啟
sudo reboot

# 驗證
nvidia-smi

安裝 NVIDIA Container Toolkit

bash
# 添加倉庫
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 安裝
sudo apt update
sudo apt install nvidia-container-toolkit

# 配置 Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

測試 GPU

bash
# 測試容器
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

# 應該看到 GPU 信息

更新 Docker Compose

yaml
services:
  jellyfin:
    # ... 其他配置
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

Jellyfin 設置

Dashboard → Playback → Transcoding

Hardware acceleration: NVIDIA NVENC

Enable hardware encoding: Yes
Enable hardware decoding: Yes
HEVC Decoder: NVIDIA NVDEC
VP9 Decoder: NVIDIA NVDEC

6.3 AMD GPU 配置

安裝驅動

bash
# Ubuntu
sudo apt install mesa-vulkan-drivers vainfo

# 驗證
vainfo

Jellyfin 設置

Hardware acceleration: AMD VCE

Enable hardware encoding: Yes
Enable hardware decoding: Yes

6.4 轉碼參數優化

通用設置

Transcoding path: /cache/transcodes
Delete segments older than: 1 day
Throttle Transcodes: No
Enable segment deletion: Yes

編碼器預設

Quality vs Speed:
- Faster: 更快,質量稍低
- Balanced: 平衡(推薦)
- Slower: 更慢,質量更高

Rate Control:
- CBR: 固定碼率
- VBR: 可變碼率(推薦)
- CQP: 固定質量

HDR 處理

Enable VPP Tone Mapping: Yes(將 HDR 轉為 SDR)
Tonemapping Algorithm: Reinhard
Tonemapping Range: TV
Tonemapping Desaturation: 0.5

7. 元數據刮削與管理

7.1 元數據提供者

Jellyfin 支持多個元數據源:

內置提供者

✅ TheMovieDB(電影/劇集)
✅ TheTVDB(電視劇)
✅ MusicBrainz(音樂)
✅ OMDB(補充信息)
✅ Fanart.tv(背景圖)

配置方法

Dashboard → Libraries → 選擇庫 → Manage Library → Metadata Downloaders

啟用/禁用提供者
調整優先級(拖拽排序)

推薦配置

電影庫:

1. TheMovieDB
2. OMDB
3. Fanart.tv

電視劇庫:

1. TheTVDB
2. TheMovieDB
3. Fanart.tv

7.2 自動刮削

觸發條件

✅ 添加新媒體文件時
✅ 手動刷新元數據
✅ 定時任務(可配置)

手動刷新

1. 進入媒體庫
2. 右鍵點擊項目
3. 選擇 "Refresh Metadata"
4. 選擇 "Replace all metadata"(完全替換)
   或 "Search for missing metadata"(僅補充)

批量刷新

Library → 點擊右上角三個點
→ Scan Library
→ Replace all metadata

7.3 自定義元數據

編輯信息

1. 點擊媒體項目
2. 點擊編輯按鈕(鉛筆圖標)
3. 修改:
   - 標題
   - 概述
   - 年份
   - 評級
   - 流派
   - 演員
4. 保存

上傳封面

1. 編輯項目
2. 點擊 "Change Image"
3. 上傳圖片
   - Poster(海報)
   - Backdrop(背景)
   - Logo(標誌)
   - Thumb(縮略圖)

NFO 文件支持

Jellyfin 支持從 NFO 文件讀取元數據:

電影 NFO 示例

xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<movie>
  <title>Avatar</title>
  <originaltitle>Avatar</originaltitle>
  <year>2009</year>
  <plot>A paraplegic Marine dispatched to the moon...</plot>
  <runtime>162</runtime>
  <mpaa>PG-13</mpaa>
  <genre>Action</genre>
  <genre>Adventure</genre>
  <director>James Cameron</director>
  <actor>
    <name>Sam Worthington</name>
    <role>Jake Sully</role>
  </actor>
</movie>

放置位置

Movie Folder/
├── movie.mp4
└── movie.nfo

7.4 字幕管理

自動下載字幕

安裝字幕插件

Dashboard → Plugins → Catalog
搜索 "OpenSubtitles"
安裝並重啟

配置字幕

Dashboard → Plugins → OpenSubtitles
輸入 API Key(免費註冊 opensubtitles.org)
設置首選語言:Chinese, English

手動添加字幕

1. 下載字幕文件(.srt, .ass)
2. 重命名為與視頻相同
3. 放在同一目錄

示例:
Movie.mp4
Movie.zh.srt  (中文字幕)
Movie.en.srt  (英文字幕)

字幕設置

Dashboard → Playback → Subtitles

Subtitle mode: Default
Download subtitles: Yes
Preferred subtitle language: Chinese
Fallback subtitle language: English

8. 遠程訪問設置

8.1 方案對比

方案難度安全性性能成本
端口轉發⭐ 簡單⚠️ 一般⭐⭐⭐⭐⭐🆓 免費
Cloudflare Tunnel⭐⭐ 中等⭐⭐⭐⭐⭐⭐⭐⭐⭐🆓 免費
VPN⭐⭐⭐ 複雜⭐⭐⭐⭐⭐⭐⭐⭐⭐🆓-💰
Tailscale⭐ 簡單⭐⭐⭐⭐⭐⭐⭐⭐⭐🆓 免費

8.2 Cloudflare Tunnel(推薦)

參見本站教程:Cloudflare Tunnel 完全指南

快速配置

yaml
# cloudflared config.yml
tunnel: your-tunnel-id
credentials-file: /path/to/creds.json

ingress:
  - hostname: jellyfin.yourdomain.com
    service: http://localhost:8096
  
  - service: http_status:404

優勢

✅ 無需端口轉發
✅ 自動 HTTPS
✅ DDoS 防護
✅ 隱藏真實 IP

8.3 端口轉發

路由器設置

1. 登錄路由器管理界面
2. 找到 Port Forwarding / Virtual Server
3. 添加規則:
   - 外部端口:8096
   - 內部 IP:Jellyfin 服務器 IP
   - 內部端口:8096
   - 協議:TCP
4. 保存

動態 DNS(如無固定公網 IP):

使用服務:
- No-IP
- DuckDNS
- DynDNS

配置 DDNS 客戶端
域名指向動態 IP

訪問

http://your-ddns-domain:8096

⚠️ 安全警告

端口轉發暴露服務到互聯網
務必:
✅ 使用強密碼
✅ 啟用 HTTPS
✅ 定期更新
✅ 監控訪問日誌

8.4 Tailscale(最簡單)

安裝 Tailscale

bash
# 服務器
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

# 客戶端(手機/電腦)
下載 Tailscale App
登錄同一賬戶

訪問

使用 Tailscale 分配的 IP
http://100.x.x.x:8096

優勢

✅ 零配置
✅ 端到端加密
✅ 無需公網 IP
✅ 跨平臺支持

8.5 HTTPS 配置

使用 Let's Encrypt

安裝 Certbot

bash
sudo apt install certbot

# 獲取證書
sudo certbot certonly --standalone -d jellyfin.yourdomain.com

配置 Nginx 反向代理

nginx
server {
    listen 443 ssl;
    server_name jellyfin.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/jellyfin.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jellyfin.yourdomain.com/privkey.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";
    }
}

自動續期

bash
# 添加 cron 任務
sudo crontab -e

# 每月 1 號檢查續期
0 0 1 * * certbot renew --quiet && systemctl reload nginx

9. 移動端 App 使用

9.1 官方 App

iOS / iPadOS

安裝

App Store 搜索 "Jellyfin"
下載官方 App(免費)

連接服務器

1. 打開 App
2. 點擊 "Add Server"
3. 輸入地址:
   - 內網:http://192.168.x.x:8096
   - 外網:https://jellyfin.yourdomain.com
4. 登錄賬戶
5. 開始瀏覽

功能

✅ 瀏覽媒體庫
✅ 播放視頻/音樂
✅ 離線下載
✅ 投屏(AirPlay)
✅ 推送通知

Android

安裝

Google Play 搜索 "Jellyfin"
或 F-Droid
下載官方 App

功能

✅ 所有 iOS 功能
✅ Chromecast 投屏
✅ 後臺播放
✅ 小部件

9.2 第三方客戶端

Infuse(iOS/macOS)⭐ 推薦

特點

✅ 精美的界面
✅ 強大的解碼能力
✅ 自動元數據
✅ Dolby Vision 支持
✅ 一次性購買(非訂閱)

配置

1. 安裝 Infuse
2. Settings → Services → Add
3. 選擇 Jellyfin
4. 輸入服務器地址
5. 登錄

價格

免費版:基本功能
Pro 版:$9.99/年 或 $29.99 終身

Yatse(Android)

特點

✅ 遙控器功能
✅ 通知集成
✅ 小部件
✅ 高度可定製

9.3 智能電視

Samsung/LG Smart TV

方法 1:Web 瀏覽器

1. 打開電視瀏覽器
2. 訪問 Jellyfin Web UI
3. 登錄使用

方法 2:Kodi + Jellyfin 插件

1. 安裝 Kodi
2. 添加 Jellyfin 插件
3. 配置服務器

Apple TV

App

App Store 下載 "Swiftfin"(免費開源)
或 "Infuse"(付費,體驗更佳)

Android TV / Fire TV

App

Google Play 下載官方 Jellyfin App
或使用 Kodi

9.4 離線下載

iOS/Android

1. 找到要下載的項目
2. 點擊下載圖標
3. 選擇質量:
   - Original(原畫質)
   - High(高)
   - Medium(中)
   - Low(低)
4. 等待下載完成
5. 離線觀看

管理下載

Profile → Downloads
查看已下載內容
刪除不需要的
設置下載限制(WiFi only)

10. 性能優化與維護

10.1 數據庫優化

定期清理

Dashboard → Scheduled Tasks

運行:
- Clean Database(清理數據庫)
- Remove Old Cache Items(清理緩存)
- Optimize Database(優化數據庫)

手動優化

bash
# 停止 Jellyfin
docker compose down

# 備份數據庫
cp ~/jellyfin/config/data/jellyfin.db ~/jellyfin.db.backup

# 優化 SQLite
sqlite3 ~/jellyfin/config/data/jellyfin.db "VACUUM;"

# 重啟
docker compose up -d

10.2 緩存管理

清理轉碼緩存

bash
# 刪除舊的轉碼文件
find ~/jellyfin/cache/transcodes -type f -mtime +7 -delete

# 或自動清理
# Dashboard → Playback → Delete segments older than: 7 days

清理圖片緩存

Dashboard → Scheduled Tasks
運行:Clean Image Cache

10.3 監控和日誌

查看日誌

bash
# Docker 日誌
docker compose logs -f jellyfin

# 日誌文件
tail -f ~/jellyfin/config/log_*.log

監控資源

bash
# CPU 和內存
docker stats jellyfin

# 磁盤使用
du -sh ~/jellyfin/*

Dashboard 監控

Dashboard → Dashboard
查看:
- Active Devices(活躍設備)
- Current Streams(當前流)
- System Activity(系統活動)

10.4 自動更新

使用 Watchtower

yaml
# 添加到 docker-compose.yml
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true  # 刪除舊鏡像
      - WATCHTOWER_SCHEDULE=0 0 3 * * *  # 每天 3 點檢查
    restart: unless-stopped

手動更新

bash
# 拉取最新鏡像
docker compose pull

# 重啟容器
docker compose down
docker compose up -d

# 清理舊鏡像
docker image prune -f

10.5 備份策略

完整備份腳本

bash
#!/bin/bash
# backup-jellyfin.sh

BACKUP_DIR=~/backups/jellyfin
DATE=$(date +%Y%m%d_%H%M%S)

# 創建備份目錄
mkdir -p $BACKUP_DIR

# 備份配置
tar czf $BACKUP_DIR/config_$DATE.tar.gz ~/jellyfin/config/

# 備份數據庫
cp ~/jellyfin/config/data/jellyfin.db $BACKUP_DIR/db_$DATE.db

# 刪除 30 天前的備份
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
find $BACKUP_DIR -name "*.db" -mtime +30 -delete

echo "Backup completed: $DATE"

定時備份

bash
# 添加 cron 任務
crontab -e

# 每天凌晨 2 點備份
0 2 * * * /path/to/backup-jellyfin.sh

10.6 故障排除

問題 1:無法訪問 Web UI

檢查

bash
# 容器是否運行
docker ps | grep jellyfin

# 端口是否監聽
sudo netstat -tlnp | grep 8096

# 防火牆規則
sudo ufw status

解決

bash
# 重啟容器
docker compose restart

# 檢查日誌
docker compose logs jellyfin

問題 2:轉碼失敗

檢查

bash
# GPU 是否可用
nvidia-smi
# 或
vainfo

# 權限是否正確
ls -la /dev/dri

解決

Dashboard → Playback
嘗試不同的硬件加速器
或禁用硬件加速測試

問題 3:元數據不顯示

檢查

文件命名是否正確
文件夾結構是否符合規範
網絡連接是否正常

解決

1. 刷新元數據
2. 檢查元數據提供者設置
3. 手動編輯信息
4. 查看日誌排查錯誤

問題 4:播放卡頓

檢查

網絡帶寬是否足夠
服務器負載是否過高
是否需要轉碼

解決

1. 降低播放質量
2. 啟用硬件轉碼
3. 預轉碼媒體
4. 優化網絡

常見問題解答

Q1: Jellyfin 支持哪些視頻格式?

A: 幾乎支持所有常見格式。

視頻編碼

✅ H.264/AVC
✅ H.265/HEVC
✅ VP8/VP9
✅ AV1(新)
✅ MPEG-2/4
✅ WMV

音頻編碼

✅ AAC
✅ AC3/E-AC3
✅ DTS
✅ FLAC
✅ MP3
✅ Opus

容器格式

✅ MP4
✅ MKV
✅ AVI
✅ MOV
✅ TS/M2TS
✅ WEBM

Q2: 如何遷移 Plex/Emby 到 Jellyfin?

A: Jellyfin 提供遷移工具。

從 Plex 遷移

1. 安裝 Jellyfin
2. Dashboard → Advanced → Import Data
3. 選擇 Plex 數據庫
4. 映射媒體路徑
5. 導入

從 Emby 遷移

由於 Jellyfin 是 Emby 分支
可以直接使用 Emby 的配置和數據庫
只需更換程序即可

Q3: 可以同時多少人觀看?

A: 取決於硬件和網絡。

直接播放

千兆網絡:10-20 人
百兆網絡:3-5 人

硬件轉碼

Intel i5 核顯:3-5 路 1080p
NVIDIA GTX 1650:5-8 路 1080p
高端 GPU:10+ 路

CPU 軟解

i7-12700K:1-2 路 1080p
不推薦軟解

Q4: 如何預轉碼媒體?

A: 使用 FFmpeg 批量轉碼。

腳本示例

bash
#!/bin/bash
# pre-transcode.sh

INPUT_DIR="/media/movies"
OUTPUT_DIR="/media/transcoded"

for file in "$INPUT_DIR"/*.mkv; do
    filename=$(basename "$file")
    ffmpeg -i "$file" \
        -c:v libx264 -preset fast -crf 23 \
        -c:a aac -b:a 128k \
        "$OUTPUT_DIR/${filename%.mkv}.mp4"
done

優點

✅ 播放更流暢
✅ 減少服務器負載
✅ 兼容性好

缺點

❌ 佔用存儲空間
❌ 轉碼耗時長
❌ 質量有損失

Q5: 如何優化 4K 播放?

A: 多個方面優化。

網絡

- 使用有線連接
- 確保帶寬充足(25Mbps+)
- 路由器 QoS 設置

服務器

- 啟用硬件解碼
- SSD 存儲媒體
- 足夠的 RAM

客戶端

- 使用支持硬解的設備
- 更新播放器
- 選擇合適的應用

Jellyfin 設置

- 禁用不必要的元數據下載
- 優化圖片緩存
- 使用 direct play

Q6: 可以錄製直播電視嗎?

A: 是的,Jellyfin 支持 DVR。

需要

✅ HDHomeRun 或其他 tuner
✅ 天線或有線電視
✅ 配置 TV Provider

設置

Dashboard → Live TV
添加 Tuner
掃描頻道
設置錄製計劃

Q7: 數據安全嗎?

A: 相對安全,但需注意。

安全措施

✅ 使用強密碼
✅ 啟用 HTTPS
✅ 定期更新
✅ 備份數據
✅ 限制遠程訪問
✅ 監控日誌

額外保護

- 使用 VPN 遠程訪問
- 啟用兩步驗證
- 設置失敗登錄鎖定
- 定期審查用戶權限

Q8: Jellyfin 未來發展方向?

A: 社區驅動的持續改進。

路線圖

🎯 更好的移動端體驗
🎯 AI 輔助元數據
🎯 改進的轉碼性能
🎯 更多插件和集成
🎯 雲同步功能
🎯 社交功能

社區參與

- GitHub 貢獻代碼
- 報告 bug
- 提出建議
- 幫助翻譯
- 撰寫文檔

總結

Jellyfin 是構建個人媒體服務器的絕佳選擇,它免費、開源、功能強大。

🎯 核心價值

  1. 完全免費:無任何隱藏費用
  2. 隱私保護:數據完全本地化
  3. 硬件轉碼:高效處理各種格式
  4. 跨平臺:支持幾乎所有設備
  5. 社區活躍:持續改進和支持

💡 實施建議

  1. 從小開始:先部署基礎功能
  2. 逐步擴展:根據需要添加功能
  3. 重視備份:定期備份配置和數據
  4. 關注安全:啟用 HTTPS 和強密碼
  5. 參與社區:獲取幫助和分享經驗

📚 延伸閱讀

💬 獲取幫助

  • 📖 官方文檔:jellyfin.org/docs
  • 💬 論壇:forum.jellyfin.org
  • 💬 Discord:discord.gg/jellyfin
  • 🐛 問題反饋:GitHub Issues
  • 💡 本站交流:歡迎在評論區分享經驗

🎬 開始構建您的個人 Netflix,享受完全控制的媒體體驗!

💡 提示:收藏本頁面以備將來參考。如果您覺得本教程有幫助,歡迎分享給更多朋友!

最後更新於: