跳至主内容

TrueNAS SCALE

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Jellyfin 可安装在 iX-systems 的 TrueNAS SCALE 系统上。

本文档适用于 TrueNAS SCALE v24.10.0 (Electric Eel) 或更高版本。

如果您此前未在系统中配置过应用,建议查阅 TrueNAS 应用文档

  • 注意:TrueNAS CORE 与 TrueNAS SCALE 是不同的系统。Jellyfin 不支持在 TrueNAS CORE 上运行。

准备工作

TrueNAS SCALE 支持通过 Docker 运行应用程序。

在 TrueNAS SCALE 服务器上安装 Jellyfin 有两种官方支持的方式:

  1. 自定义应用

  2. ix-systems 提供的社区第三方应用

两种方法均使用 Jellyfin 官方提供的 Docker 镜像。 本文将涵盖这两种安装方式。

您可以在应用部署完成后随时配置环境变量。

建议将 TrueNAS SCALE 应用系统设置在由 SSD 组成的存储池上。


数据集与 Jellyfin

官方 Jellyfin Docker 镜像在容器内部会自动创建以下必需目录:

  1. cache(缓存)

  2. config(配置)

  3. cache/transcodes(转码缓存)

若使用社区应用,您可在安装过程中允许 SCALE 自动为 Jellyfin 创建所需的数据集。 您也可选择创建静态的 transcodes 数据集,或使用磁盘临时存储或内存(系统 RAM)进行转码。

  • 注意:使用 RAM 进行转码可能存在问题,因为转码会占用大量空间。若 RAM 中没有足够内存进行转码,转码过程将失败。建议将转码目录放置在具有充足可用空间的驱动器上以避免此问题。考虑使用 SSD 替代 HDD 以防止性能下降。

您也可创建自定义数据集,在安装过程的 存储配置 环节将其作为 host paths 使用。

您可将数据集组织为父数据集加子数据集的形式,例如 /mnt/tank/jellyfin/config/mnt/tank/jellyfin/cache 等。 使用 Docker 时,只要将这些数据集以正确的名称挂载到容器,您可以自由组织目录结构。

建议将 Jellyfin 的配置目录设置在可访问的数据集上。 这将便于您备份/恢复服务器

同时建议将 Jellyfin 的配置和缓存数据存放在 SSD 存储池的数据集上。


用户与权限

您可在设置 Jellyfin 时指定运行容器的用户和组。 若需使用默认应用用户/组(568)以外的身份运行,请立即创建相应用户/组

请确保您的数据集已设置适当权限,以允许 Jellyfin 容器用户访问。


以自定义应用方式安装

使用 YAML

进入 SCALE 的「应用」版块。

自定义应用按钮

点击页面右上角的 Discover Apps 按钮,这将带您进入社区应用商店。

YAML 按钮

在该页面中,点击右上角的三点菜单,然后选择 Install via YAML

  • 注意:您也可以使用 SCALE 的引导式应用启动器 GUI 安装自定义应用。请参考安装社区应用的步骤,因为布局大致相同。
    • 如果选择此方法,您的 Jellyfin 容器最终只能通过此 GUI 进行编辑。如果您希望之后能够访问 Compose YAML 编辑器,则需要使用 YAML 选项启动容器。
    • 根据您在引导式 GUI 中选择的设置,您可能需要将 Jellyfin 的镜像拉取到 SCALE 服务器上。
      • 对于 Repository(仓库)字段,只需输入 jellyfin/jellyfin。然后指定要从 Docker Hub 拉取的 Tag(版本)。
      • 有关 SCALE 上的容器镜像的更多信息,请参见此处

页面右侧将打开一个选项卡,您可以在其中使用 Docker Compose 文件启动自定义应用。

Compose YAML 文件

自定义应用安装页面

在此处为自定义应用命名,并编写/粘贴您的 compose 文件内容。

请参阅使用 Docker Compose 运行 Jellyfin 的文档。或者,这里有一个基本的 compose 文件示例,您应编辑其中的卷(volumes)以匹配您的系统,然后将其复制并粘贴到编辑器中以启动 Jellyfin:

services:
jellyfin:
container_name: jellyfin
image: ghcr.io/jellyfin/jellyfin:latest
user: '568:568'
# group_add:
# - '107'
# devices:
# - /dev/dri/renderD128:/dev/dri/renderD128
# - /dev/dri/card0:/dev/dri/card0
environment:
- TZ=America/Los_Angeles
network_mode: bridge
ports:
- 8096:8096/tcp
# cpus: '8' # optional
# mem_limit: 16G # optional
restart: unless-stopped
volumes:
- /mnt/path/to/config:/config:rw
- /mnt/path/to/cache:/cache:rw
# rw = read & write
# ro = read only
  • 请记住在您的 compose 文件中将媒体数据集添加为额外的卷,以便容器可以访问它们。

  • 您设置的用户和组仅用于运行容器,不会用于创建 Jellyfin 账户。

  • 请确保每个选项的缩进正确。Compose 文件使用缩进来正确解析选项。

  • 您可以在 Wikipedia 上查找您所在地区的时区标识符。

  • 请注意,以 # 开头的行表示注释。在删除该符号之前,这些行不会生效。

  • 如果您拥有 GPU 并希望使用硬件加速,请取消 group_adddevices 选项的注释。

    • 如果您拥有 NVIDIA GPU,请阅读此部分
    • 除非您将容器设置为以 root 用户运行,否则需要使用 group_add 将渲染组的 ID 添加到容器中。
    • 如果渲染组的 ID 并非在所有 SCALE 服务器上默认为 107,请前往系统 shell 并运行以下命令以获取您的渲染组 ID:cat /etc/group | grep render
  • 如果可能,还应配置 Jellyfin 的自动发现端口。查看更多信息

Docker Compose Options
OptionUsageDescription
container_name"jellyfin"The name of your Docker container.
imageghcr.io/jellyfin/jellyfin:latestThe Docker image to use for the container.
user'UID:GID'The user:group IDs of the user that will run the container.
group_addGIDID of additional group to add.
devices<host-path>:<container-path>Devices (ex. GPU) to pass into the container.
environmentTZ=<timezone-name>Environment variables that affect the container. You can set variables here such as TZ for declaring a time zone. See more environment configs here.
network_modebridge, hostNetwork mode to use for the container. If set to host, remove your forwarded ports.
portshost-port:container-portForward the host port to the container port. Refer to the TrueNAS default port list for a list of assigned port numbers.
cpus'#'Assign # amount of CPU threads to the container. You can't assign more threads than there exists on the installed CPU.
mem_limit#GLimit memory usage by the container. Can also specify different units: K=KB, M=MB, G=GB
restartno, always, failure, unless-stoppedDeclare how to handle automatic container restarts.
volumes/mnt/tank/jellyfin/my-config-dataset:/config:rwHost mount paths on the host system onto the container

应用页面

安装完成后,您将返回到主应用屏幕。在此处,您可以查看 Jellyfin 容器的状态,以及编辑用于启动它的现有 compose 文件,以便为容器添加更多配置。

  • TrueNAS SCALE 的 YAML 界面会重新排列并删除您 YAML 文件中的所有注释。

一旦 Jellyfin 容器的状态图标在 UI 上变为绿色的 Running 图标,即表示您的 Jellyfin 服务器已启动并运行。

现在您可以通过本地网络中的网页浏览器访问 Jellyfin 服务器,使用 SCALE 服务器的 IP 地址和您为 Jellyfin 设置的端口号(默认 HTTP 端口为 8096)。如果使用之前的 compose 文件示例且服务器 IP 地址为 192.168.1.10,则应在浏览器中使用此 URL:http://192.168.1.10:8096

Jellyfin Web 门户

在浏览器中访问您的服务器后,您便进入了 Jellyfin 服务器环境。请按照首次设置向导完成服务器配置。您也可以查阅 Jellyfin 文档获取更多帮助

为自定义应用添加 Jellyfin 徽标

在 SCALE 上安装自定义应用时,应用会显示通用的 SCALE 图标而非官方徽标。

您可通过以下步骤恢复 Jellyfin 徽标:

  1. 进入系统 shell

  2. 使用以下命令切换至 root 权限(以访问 Docker 应用文件夹):sudo -i

  3. 导航至应用配置目录(目录名称应与编辑 YAML 文件时指定的 Jellyfin 容器名一致):cd /mnt/.ix-apps/app_configs/jellyfin/

  4. 使用 VIM 编辑 metadata.yaml 文件:vim metadata.yaml

  5. 输入 i 进入插入模式,将光标移至 host_mounts: [] 末尾,按 ENTER 键新建一行

  6. 添加两个空格使光标与元数据选项对齐,写入此行:icon: https://media.sys.truenas.net/apps/jellyfin/icons/icon.svg

  7. ESC 退出插入模式,输入 :wq 后按 ENTER 保存并退出

  • 注意:
    • SCALE Shell 中可使用 SHIFT + INSERT 粘贴内容
    • 在 vim 中可通过按下 ESC 后输入 :q! 强制退出而不保存

文件内容此时应如下所示:

custom_app: true
human_version: 1.0.0_custom
metadata:
app_version: custom
capabilities: []
description: This is a custom app where user can use his/her own docker compose
file for deploying services
home: ''
host_mounts: []
icon: https://media.sys.truenas.net/apps/jellyfin/icons/icon.svg
maintainers: []
name: custom-app
run_as_context: []
sources: []
title: Custom App
train: stable
version: 1.0.0
migrated: false
notes: null
portals: {}
version: 1.0.0

完成后,前往应用页面找到该自定义应用。在应用信息中打开编辑选项,点击底部的保存按钮。此操作将使用 Jellyfin 徽标更新自定义应用的图标。


通过 SCALE 社区应用安装

安装 Jellyfin 应用时,请进入应用 > 发现应用,在搜索框中输入 Jellyfin 或向下滚动查找 Jellyfin 应用小部件。若结果中未显示 Jellyfin 应用,请点击"刷新目录"。

Jellyfin 应用小部件

点击小部件打开 Jellyfin 应用详情界面。

Jellyfin 应用详情界面

点击安装打开 Jellyfin 应用配置界面。

应用配置设置分为多个部分(下文将详细说明)。查找特定字段时,可在搜索输入框中检索,或通过右上角导航区域跳转到对应章节。

安装 Jellyfin 界面

应用名称设置

接受默认值或在应用名称字段中输入新名称。多数情况下使用默认名称即可,但部署第二个应用实例时必须更改此名称。

版本 字段接受默认版本号。当有新版本可用时,应用会显示更新标记。已安装应用 界面会显示应用更新选项。

Jellyfin 配置设置

可接受 Jellyfin 配置 中的默认设置,或输入您需要的自定义配置。

可为 UDP 自动发现功能输入 已发布服务器 URL,或留空。

如需定义 额外环境变量,请点击 添加,选项参考配置文档

用户与组设置

可接受 用户 ID组 ID 的默认值 568 (apps),或自定义设置。

用户与组设置

此用户和组仅用于运行 Jellyfin 容器,不可用于登录 Jellyfin Web 界面。请通过 Jellyfin 初始化向导创建管理员用户访问 UI。

网络设置

若使用 DLNA,请在 网络配置 下选择 主机网络 以绑定主机网络设置。否则请勿勾选 主机网络

网络设置

可接受 WebUI 端口 的默认值 30013

可更改为 8096 端口。多数 Jellyfin 客户端内置的扫描功能默认检测 8096 端口。

端口分配列表请参考 TrueNAS 默认端口文档

存储设置

Jellyfin 需要三个应用存储数据集:

  1. Jellyfin 配置存储

  2. Jellyfin 缓存存储

  3. Jellyfin 转码存储

建议为配置、缓存和转码存储使用固态存储。请勿使用机械硬盘上的媒体库数据集,避免性能下降。

可使用默认设置 ixVolume (系统自动创建的数据集) 安装 Jellyfin,或使用预创建数据集的主机路径选项。

配置 ixVolume 存储

选择 主机路径 (系统中已存在的路径) 浏览并选择数据集。

配置主机路径存储

对于 Jellyfin 转码存储,在 类型 中选择:

  • 主机路径 (系统中已存在的路径):使用系统上现有的数据集

  • ixVolume (系统自动创建的数据集):由 SCALE 自动创建数据集

  • 临时存储 (磁盘创建的临时目录):使用应用系统存储池中创建的临时目录

  • tmpfs (内存创建的临时目录):使用系统 RAM 创建的临时目录

建议将转码目录链接至可用空间充足的存储位置。根据转码内容类型,转码文件可能占用大量空间。若空间不足,转码写入中断会导致播放问题。

挂载额外存储

点击 额外存储 旁的 添加,添加系统中的媒体库存储路径。

附加存储

类型中选择 Host Path(系统中已存在的路径)SMB/CIFS Share(将卷挂载到 SMB 共享)
您也可以选择 iXvolume(由系统自动创建的数据集) 来创建新的库数据集,但不推荐此方式。

挂载 SMB 共享可实现共享与应用程序之间的数据同步。
当前 SMB 共享挂载不包含 ACL 保护功能,权限仅限于挂载共享的用户权限。
备用数据流(元数据)、Finder 颜色标签、预览、资源分支和 macOS 元数据会随文件系统权限一同从共享中剥离。该功能正在积极开发中,计划在未来 TrueNAS SCALE 版本中实现。

  • 请注意:若想使用 Jellyfin 的实时媒体扫描功能,必须使用 Host Path 直接挂载媒体,因为 SMB 连接不支持此特性。

所有类型都需要输入将在 Jellyfin 容器内使用的挂载路径

  • 例如:本地 Host Path /mnt/tank/video/movies 可分配挂载路径 /media/movies
    • 按此配置时,在 Jellyfin 中浏览 /media/movies 即可查看 SCALE 服务器上 /mnt/tank/video/movies 的内容
Additional Storage Fields
TypeFieldDescription
AllMount PathThe virtual path to mount the storage within the container.
Host PathHost PathThe local path to an existing dataset on the System.
ixVolumeDataset NameThe name for the dataset the system creates.
SMB ShareServerThe server for the SMB share.
SMB ShareShareThe name of the share.
SMB ShareDomain (Optional)The domain for the SMB share.
SMB ShareUsernameThe user name used to access the SMB share.
SMB SharePasswordThe password for the SMB share user.
SMB ShareSize (in Gi)The quota size for the share volume. You can edit the size after deploying the application if you need to increase the storage volume capacity for the share.

资源配置设置

资源限制

可自定义分配给 Jellyfin 容器的 CPU 和内存限制。

在 GPU 配置中,若需为 Jellyfin 启用硬件加速,请勾选 Passthrough available (non-NVIDIA) GPUs 选项

完成安装

点击 安装

系统将以 root 权限启动容器,为 Jellyfin 目录配置正确权限。
随后 Jellyfin 容器将以非 root 用户身份运行(默认用户 ID:568)。
若父目录与配置用户不匹配,系统将自动更改存储目录所有权。

系统将打开已安装应用界面,Jellyfin 应用处于部署中状态。
安装完成后状态将变为运行中

应用页面

点击应用信息组件中的 Web UI 按钮,打开 Jellyfin 初始化设置向导,创建管理员账户并开始管理媒体库。

Jellyfin Web 门户

编辑 Jellyfin 应用

前往 已安装应用 界面,从应用列表中选择 Jellyfin。 在 应用信息 组件中点击 编辑,打开 编辑 Jellyfin 界面。 编辑界面的设置项与初始安装界面完全一致。

  • 存储配置 路径在初始安装后无法修改(若路径由系统自动创建为 ixVolume 类型)。
    • 但您仍可修改现有的 主机路径 挂载点和路径。

点击 更新 保存更改。 TrueNAS 将自动更新、重建并重新部署包含新环境变量的 Jellyfin 容器。


卷挂载信息与实时日志查看

通过 工作负载 组件右下角的日志图标,可访问 Jellyfin 的实时日志流。

卷挂载信息位置

若未指定配置目录和缓存目录的外部挂载位置,系统将自动创建这些目录。 要查看这些目录(及其他容器挂载点)的当前位置,请在 工作负载 组件中点击右下角的文件夹图标。

卷挂载信息详情

此界面将显示所有挂载点及其路径。 您可通过系统终端访问这些路径,注意操作 Docker 相关目录需 root (sudo) 权限。

容器镜像管理

应用配置下拉菜单

要查看 TrueNAS SCALE 服务器上的容器镜像列表:

  1. 进入主应用界面
  2. 点击 Configuration 按钮
  3. 选择下拉菜单中的 管理容器镜像 此页面将展示所有已安装的 Docker 镜像。

您也可以在此拉取新的镜像备用。

镜像拉取界面

支持从以下镜像源拉取:

  • Docker Hub

  • GitHub 容器注册表

  • 要从 Docker Hub 拉取镜像,请使用:jellyfin/jellyfin

  • GHCR 镜像地址:ghcr.io/jellyfin/jellyfin

  • 关于 GHCR 的详细信息可参考此博客:

    "Docker 用户注意:除 Docker Hub 外,我们现新增 GitHub 容器注册表(GHCR)作为镜像源。您可通过 ghcr.io/jellyfin/jellyfin:latest 等 URI 拉取镜像。请放心,我们不会停用 Docker Hub 服务,双注册表方案将为用户提供更灵活的选择。"

  • 也可查看此论坛帖了解如何使用 Docker 镜像标签。

若容器使用 latest 标签或其他非固定版本标签,当镜像更新时 SCALE 界面将自动显示更新通知。

SCALE 系统上的 NVIDIA GPU 支持 (v24.10+)

  • 对于拥有 NVIDIA GPU 的用户,请阅读 v24.10 Electric Eel 版本说明中关于 GPU 的部分
    • "Starting in 24.10, TrueNAS does not include a default NVIDIA GPU driver and instead provides a simple NVIDIA driver download option in the web interface. This allows for driver updates between TrueNAS release versions."
    • "Users can enable driver installation from the Installed applications screen. Click Configure > Settings and select Install NVIDIA Drivers. This option is only available for users with a compatible NVIDIA GPU and no drivers installed or for users who have previously enabled the setting."