容器项目&媒体类
摘要
采用 Docker 搭建个人媒体服务
媒体服务
说起个人媒体服务,大家肯定都熟悉群晖的 NAS 媒体功能,但好不好用因人而异。当然,免费的飞牛 NAS 媒体功能也不错。容器类媒体项目现在主要有三个:第三方客户端做得比较好的 Emby、官方和第三方都不太愿意开发客户端的 Jellyfin,以及好用但分享门槛较高的 Plex。Emby 是付费软件,也有社区维护版本;Jellyfin 是免费软件。我先把我的 Docker 目录结构放出来,方便你修改路径。
root(根目录)
├── docker(分支层级:docker目录)
│ ├── apps(具体目录:docker app目录)
│ │ ├── Jellyfin路径
│ │ ├── Emby路径
│ │ └── Plex路径
│ └── docker-compose(具体目录:docker-compose.yaml目录)
│ │ ├── Jellyfin
│ │ │ └── docker-compose.yaml
│ │ ├── Emby
│ │ │ └── docker-compose.yaml
│ │ ├── Plex
│ │ └──── docker-compose.yaml
│ ├── media
│ │ ├── Tv
│ │ └── Movie
...
- 随着移动智能设备的普及,移动端流媒体需求越来越常见。如果想更主动地管理自己的媒体文件,可以本地自建一个私人媒体平台。
- 除了在局域网使用各种设备观看,也可以使用反向代理工具,让本地自建的私人媒体平台在公网环境中远程访问。
- 搭建媒体服务器,很多人需要转码,如果你是 intel 6代以上的处理器带核显的话基本上解码 4K 码率视频是没问题的,想检验有没有正确安装核显驱动的话可以在 ssh 输入以下代码,通常安装 debian 12 这样的系统是自带驱动的不用担心。如果没有正确安装驱动的话,请自行解决。
- 如果输出了 card0 和 renderD128,说明显卡驱动安装正常,可以进行硬件解码。
ls /dev/dri
1 Jellyfin
Jellyfin 是一个相对知名的媒体服务器,在 NAS 平台上比较受欢迎。笔者没有 NAS 这样的专业设备,只有一台淘汰下来的台式机,好在这台台式机配置不算太低,并且 Jellyfin 有 Windows、Linux 和 Docker 版本的服务端,可以比较简单地搭建 Jellyfin 服务器。
如果是 x86 处理器解码有核显基本没问题的,如果是 arm 搭建的 docker,解码目前只有 rk3566,rk3588(可以10bit SDR)以上能够解码。并且只有 Jellyfin 有驱动,Emby 是没有驱动的。折腾 ARM 不如直流用第三方 APP,最后我会介绍第三方的 APP。
# 官方文档
# https://hub.docker.com/r/nyanmisaka/jellyfin
# 媒体库规范化命名手册
# https://emby.media/support/articles/Home.html
# ---
name: jellyfin
# 最后编辑时间:2025-02-12
services:
jellyfin:
# 镜像地址
image: nyanmisaka/jellyfin:latest
# 容器名
container_name: jellyfin
# 主机名
hostname: jellyfin
# 特权模式,赋予容器几乎与主机相同的权限,给 root 即可
privileged: true
environment:
# 时区
- TZ=Asia/Shanghai
# 最高权限,和上面特权模式重复,开一个就行
#- UID=0
#- GID=0
#- GIDLIST=0
# 更换为自己的http代理
# - ALL_PROXY=http://【IP:PORT】
# 更换为自己的http代理
# - HTTP_PROXY=http://【IP:PORT】
volumes:
# 媒体库路径
- /mnt/media:/mnt/media
# amilys-emby配置文件
- /docker/apps/jellyfin:/config
# 驱动
devices:
# 开启硬件转码
- /dev/dri:/dev/dri
# 网络模式
network_mode: bridge
# 端口
ports:
# http webUI端口:8096,https webUI端口:8920
- 8096:8096
- 8920:8920
# 重启策略,总是重启
restart: always
2 Emby
Emby 是一个功能强大的媒体服务器软件,主要用于组织、管理和共享个人的音乐、电影、电视节目和其他媒体文件。Emby 能够将个人视频、音乐和照片整合在一起,并通过服务器自动转换和流式传输,使得这些媒体可以在任何设备上播放。
- 主要功能
- 媒体转换和流式传输:Emby 服务器会自动转换媒体格式,确保在任何设备上都能流畅播放。
- 多设备访问:用户可以通过 Emby Connect 轻松访问个人媒体,无论是在家还是在外。
- 直播电视和 DVR 管理:支持直播电视的流式传输和管理 DVR 功能。
- 家长控制:提供丰富的家长控制功能,可以轻松管理家庭成员对媒体内容的访问权限。
- 云同步:支持云同步功能,用户可以流式传输云同步的媒体内容。
- 用户评价和使用场景
- Emby 的用户评价普遍较好,用户认为其功能全面且易于使用。用户可以将视频、音乐和图片等各种媒体整合在一起,随时进行数据传输,并且提供了电视直播功能。Emby 适合需要在家中或外出时访问个人媒体的用户,特别是那些希望在一个平台上管理所有媒体类型的用户。
- 说了这么多,Emby 其实就是 Jeffyfin 的付费版本,优点就是 APP 有人发开,前提你得是 Android 用户,苹果 iOS 我建议你付费软件。Emby 小秘就是开发非常好的 Android 版本。
# 官方文档
# https://hub.docker.com/r/amilys/embyerver
# 媒体库规范化命名手册
# https://emby.media/support/articles/Home.html
# ---
name: amilys-emby
# 最后编辑时间:2025-02-12
services:
amilys-emby:
# 镜像地址,如需测试版追新,latest更改为beta
# arm64v8设备使用 amilys/embyserver_arm64v8
image: amilys/embyserver:beta
# 容器名
container_name: amilys-emby
# 主机名
hostname: amilys-emby
# 特权模式,赋予容器几乎与主机相同的权限,给root即可,使用
privileged: true
environment:
# 时区
- TZ=Asia/Shanghai
# 最高权限,和上面特权模式重复,开一个就行
#- UID=0
#- GID=0
#- GIDLIST=0
# 更换为自己的http代理
# - ALL_PROXY=http://【IP:PORT】
# 更换为自己的http代理
# - HTTP_PROXY=http://【IP:PORT】
volumes:
# 媒体库路径
- /mnt/Media:/mnt/Media
# amilys-emby配置文件
- /docker/apps/amilys-emby:/config
# 驱动
devices:
# 开启硬件转码
- /dev/dri:/dev/dri
# 网络模式
network_mode: bridge
# 端口
ports:
# http webUI端口:8096,https webUI端口:8920
- 8096:8096
- 8920:8920
# 重启策略,总是重启
restart: always
3 Plex
最后来介绍一款经典的 Plex 软件,是收费的,主要是解码收费。需要注意以下三点:
- 网络选择 host 模式,不然要写很多端口,web 端口是 32400
- Plex 访问地址是
http://IP:32400/manage - Plex 配置文件必须填写令牌,
https://plex.tv/claim 获取令牌,4分钟令牌失效
# 官方文档
# https://plex.tv
# ---
name: plex
# 最后编辑时间:2025-02-12
services:
plex:
# 镜像地址
image: jaymoulin/plex
# 容器名
container_name: plex
# 主机名
hostname: plex
# 特权模式,赋予容器几乎与主机相同的权限,给root即可,使用
privileged: true
environment:
# 时区
- TZ=Asia/Shanghai
# 最高权限,和上面特权模式重复,开一个就行
#- UID=0
#- GID=0
#- GIDLIST=0
# https://plex.tv/claim 获取令牌,4分钟令牌失效
- PLEX_CLAIM=替换我,请在线获取令牌
# 版本docker
- VERSION=docker
volumes:
# 媒体库路径
- /mnt/media:/mnt/media
# amilys-emby配置文件
- /docker/apps/plex:/config
# 转码缓存
- /docker/apps/plex/transcode:/transcode
# 驱动
devices:
# 开启硬件转码
- /dev/dri:/dev/dri
# 网络模式
# 32400是webUI访问端口 访问地址 http://IP:32400/manage
network_mode: host
# 重启策略,总是重启
restart: always
分享文章
生成精美分享图或复制链接,与更多人分享本文。