Docker搭建Plex流媒体服务并播放自己本地视频
Docker搭建Plex流媒体服务
- 安装Docker
- 创建存储配置文件的目录
- 创建Plex容器
- 配置Plex
- 设置媒体库
- 访问Plex
1 介绍
Plex是一个流媒体服务器,可以轻松地将你的媒体文件库(如电影、电视节目和音乐)通过网络流式传输到各种设备上。
- Plex 是一套媒体播放器及媒体服务器软件,提供了一整套完整的解决方案(Server + Client),支持众多平台和设备,对移动设备性能几乎没有要求,凡是能打开 web 看视频的设备,基本都能使用。 Plex支持远程访问,云同步及好友共享库功能,尤其适合家庭影音库、异地恋情侣观影。
其他类似软件:
- emby(收费)
- Jellyfin(收费)
- elfilm(免费非开源)
- infuse(收费)
刮削器在plex里叫做代理(agent)
2 安装部署过程
2.1 安装Docker
如果是windows或者mac可以直接安装docker desktop这个软件
官网地址:https://www.docker.com/products/docker-desktop/
如果是Linux(Ubuntu或者CentOS):
前提条件:
-
Docker可以运行在Windows、Mac、CentOS、Ubuntu等操作系统上
-
Docker支持以下的CentOS版本:
-
- CentOS 7 (64-bit)
- CentOS 6.5 (64-bit) 或更高的版本
-
目前,CentOS 仅发行版本中的内核支持 Docker
-
- Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
- Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
- 查看系统内核
uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
uname -r
- 查看已安装的CentOS版本信息
cat /etc/redhat-release
满足上面可以安装docker的条件即可安装。
docker官网:
官网:http://www.docker.com
安装手册:https://docs.docker.com/install/linux/docker-ce/centos(CE-社区版)
① 安装需要的软件包
yy -utils提供了yy-config-manager相关功能,device-mapper-persistent-data和lvm2是设备映射器驱动程序所需要的。
yum install -y yum-utils \device-mapper-persistent-data \lvm2
如果有以下报错信息:
报错:Another app is currently holding the yum lock; waiting for it to exit… 另一个应用程序是:PackageKit 内存:146 M RSS (497 MB VSZ) 已启动: Wed Oct 26 20:20:11 2022 - 00:07之前 状态 :运行中,进程ID:2874 Another app is currently holding the yum lock; waiting for
执行下面命令即可:
rm -f /var/run/yum.pid
② 设置docker镜像为阿里云、更新yum索引
①设置docker镜像为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
②我们在更新或配置yum源之后,通常都会使用yum makecache 生成缓存,这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度
yum makecache fast
③ docker安装即后续配置
①安装docker ce
yum install -y docker-ce
②启动docker
systemctl start docker
③查看docker版本
docker version
④设置docker是否开启自起
#查看服务是否自动启动(是:enabled | 否:disabled)
systemctl list-unit-files|grep docker.service #设置开机启动:如不是enabled可以运行如下命令设置自启动
systemctl enable docker
#重新加载服务配置
systemctl daemon-reload #如果希望不进行自启动,运行如下命令设置
systemctl disable docker
#重新加载服务配置
systemctl daemon-reload
⑤如果我们想卸载docker,执行以下命令
systemctl stop docker
yum remove -y docker-ce
rm -rf /var/lib/docker
拓展:有时候,我们需要不同的服务器部署相同的镜像,这个时候我们可以使用docker export / import来对镜像进行导入导出
导出:
docker export f299f501774c > rabbit.tar
导入:
docker import - myrabbit < rabbit.tar
2.2 创建配置文件目录
在你的系统上创建一个目录,用于存储Plex的配置文件。你可以使用以下命令创建目录:
# 创建plex配置文件
mkdir -p /Users/ziyi/plex-config
# 创建自己本地存放媒体的文件夹
mkdir -p /Users/ziyi/media
2.3 docker创建plex
docker run -d \--name plex \--restart=unless-stopped \-p 32400:32400 \-v /Users/ziyi/plex-config:/config \-v /Users/ziyi/media:/data \plexinc/pms-docker
-d:在后台运行容器;
–name plex:为容器指定名称为"plex";
–restart=unless-stopped:在容器停止或重启后自动重新启动;
-p 32400:32400:将主机的32400端口映射到容器的32400端口,这是Plex的默认端口;
-v /Users/ziyi/plex-config:/config:将主机上的"plex-config"目录挂载到容器的"/config"目录,用于存储Plex的配置文件;
-v /Users/ziyi/media:/data:将主机上的"media"目录挂载到容器的"/data"目录,用于存储媒体文件。
请将上述命令中的/Users/ziyi/plex-config和/Users/ziyi/media替换为实际的目录路径。
# 查看plex是否启动成功,出现Up表明成功,否则表明失败
docker ps | grep plex

2.4 配置并访问
①注册或登录plex账号
现在,你可以通过访问 http://localhost:32400/web 来访问Plex的Web界面。首次访问时,你需要登录或创建一个Plex账号。
- 如果没有账号,可以通过邮箱注册

登录后,按照界面上的指引,完成Plex的初始设置。你可以设置服务器名称、语言、媒体库等。
一旦Plex配置完成,你可以通过"添加媒体库"选项来添加你的媒体文件夹。点击"添加媒体库"按钮,选择媒体类型(如电影、电视节目、音乐等),然后选择对应的媒体文件夹。
Plex将扫描并索引所选文件夹中的媒体文件,并在Web界面上显示它们。
✈️Plex工作原理:

你可以在Plex的Web界面上浏览和播放你的媒体文件,也可以使用Plex客户端应用程序在各种设备上观看。
②访问
现在,你可以通过浏览器或Plex客户端访问Plex服务器。在浏览器中访问 http://localhost:32400/web ,或使用Plex客户端应用程序。
- 主页会有Plex自己推荐的视频


③添加自己本地资料库(可选)
如果我们想要将自己本地的视频放在plex上播放,那么我们可以通过添加资料库实现
- 添加资料库
点击头像 - 选择账户 - 选择管理模块下的媒体库 - 点击添加资料库

2. 选择对应的媒体类型和语言

3. 添加文件夹
指明该资料库扫描哪个文件夹下的媒体视频
- 我本地的媒体视频等都在/Users/ziyi/media下,在开始创建docker时,我已经将/Users/ziyi/media目录绑定到了plex容器内部的/data目录,所以这里我直接选择/data
- 创建容器时候的挂载卷参数:
-v /Users/ziyi/media:/data

我已经添加了我本地资料库,可以点击扫描资料库,将本地视频扫描到plex中。

4. 回到主页,播放自己媒体库的视频

播放:

❓tips:
- 主页上手动扫描文件
配置自动扫描本地媒体文件并更新
相关文章:
Docker搭建Plex流媒体服务并播放自己本地视频
Docker搭建Plex流媒体服务 安装Docker创建存储配置文件的目录创建Plex容器配置Plex设置媒体库访问Plex 1 介绍 Plex是一个流媒体服务器,可以轻松地将你的媒体文件库(如电影、电视节目和音乐)通过网络流式传输到各种设备上。 Plex 是一套媒体…...
idea + Docker-Compose 实现自动化打包部署(仅限测试环境)
一、修改docker.service文件,添加监听端口 vi /usr/lib/systemd/system/docker.service ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock重启docker服务 systemctl daemo…...
ubuntu 下载Python
目前为止,Python 3.11 是最新版本的 Python。要在 Ubuntu 中下载和安装 Python 3.11,可以按照以下步骤进行: 安装编译所需的依赖项: sudo apt update sudo apt install -y build-essential zlib1g-dev libffi-dev libssl-dev libl…...
python 使用json包在json格式字符串和python对象之间的变化
起因:使用python json包时,将键值对均为数字的字典存入txt文件后重新加载进字典后出现“字典key值不唯一”的神奇现象。 相关代码: 字典添加数据部分 def xuhao_chuti(self):rand random.randint(1, 908)if rand in self.memery.keys() an…...
【C++】继承 ⑫ ( 继承的二义性 | virtual 虚继承 )
文章目录 一、继承的二义性1、场景说明 - 继承的二义性2、继承中的二义性报错3、完整代码示例 二、virtual 虚继承1、虚继承引入2、虚继承语法3、代码示例 - 虚继承 一、继承的二义性 1、场景说明 - 继承的二义性 A 类 是 父类 , B 类 和 C 类 继承 A 类 , 是 子类 , D 类 多…...
Linux网络流量监控iftop
在 Linux 系统下即时监控服务器的网络带宽使用情况,有很多工具,比如 iptraf、nethogs 等等,但是推荐使用小巧但功能很强大的 iftop 工具【官网:http://www.ex-parrot.com/~pdw/iftop/】。iftop 是 Linux 系统一个免费的网卡实时流…...
【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)
UE4/UE5 基于2D屏幕坐标获取场景3D坐标 一、射线检测1)定义1)射线与3D场景中的物体交互的流程2)射线检测蓝图函数3)蓝图实现根据鼠标点击位置获取场景中的坐标值4)根据相机中心点获取场景中的坐标值5)射线检…...
【OpenHarmony】系统编译环境搭建笔记
0、安装WSL 一定要安装WSL 2否则编译慢到怀疑人生。 1、将WSL从C盘迁移到其他盘 2、安装编译依赖库 按照上述流程,安装会提示一些错误,直接使用如下命令: sudo apt-get update && sudo apt-get install binutils binutils-dev g…...
深入理解JVM虚拟机第十二篇:JVM中的线程说明
文章目录 一:线程说明 1:线程概述 2:后台虚拟机主要线程 (一):虚拟机线程...
synchronized 、ReentrantLock
synchronized 和 ReentrantLock 都是用于实现多线程同步的机制: 锁的获取方式: synchronized 是内置的 Java 关键字,它通过对象的内置监视器来获取锁。每个对象都有一个关联的监视器,只有一个线程可以获得对象的监视器,其他线程必须等待。ReentrantLock 是一个类,它提供了…...
用VSCODE启动Java项目
下载插件 推荐下载插件 启动 在vscode中打开项目或将项目拖进vscode,等进度条加载完成即成启动项目...
最简单的修改linux系统上Docker的镜像源
前言 是不是从docker上下载镜像总是很慢 我有两个物理服务器,两个都在本地不能访问国际网络,那只能使用国内网络,就是下载docker镜像太慢了,慢的我心情都不好了,所以就出了这篇文章用来解决docker下载慢的问题 正文 1.首先你得下载好docker,在Linux上,下载Docker的命令是下面这…...
layui移除(删除)table表格的一行
表格里添加删除按钮: , {field: wealth, width: 150, title: 操作, align: center, fixed: right,templet: function (item) {return <a style"margin:0px 5px; color:red; cursor: pointer;" lay-event"delete" id"DeleteTr" >…...
67 跳跃游戏 II
跳跃游戏 II 题解1 贪心1 正向题解2 贪心2 反向题解3 DP 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 &…...
客户中心模拟(Queue and A, ACM/ICPC World Finals 2000, UVa822)rust解法
你的任务是模拟一个客户中心运作情况。客服请求一共有n(1≤n≤20)种主题,每种主题用5个整数描述:tid, num, t0, t, dt,其中tid为主题的唯一标识符,num为该主题的请求个数,t0为第一个请求的时刻&…...
方案聚焦:高可用的F5分布式云DNS负载均衡
DNS是实现互联网的主要技术之一。它也是网络基础设施的重要组成部分,DNS管理一个分布式和冗余的架构,确保高可用性和高质量的用户响应时间,因此拥有一个可用的、智能的、安全和可扩展的DNS基础设施是至关重要的。然而DNS没有真正的能力来分配…...
大数据性能测试方案-V1.0
XXX大数据平台 性能测试方案 [V1-1.0] 拟 制 人: 审 核 人: 批 准 人: [xxxx年xx月xx日]...
Kafak - 单机/集群快速安装指北(3.x版本)
文章目录 官方下载地址上传安装包解压安装包到指定目录修改解压包名为kafka修改config目录下的配置文件server.propertie配置环境变量其他机器同上 - 修改配置文件中的brokerid启动集群停止Kraft 方式部署集群----(不使用zookeeper) 官方下载地址 http://kafka.apache.org/dow…...
互联网Java工程师面试题·Spring篇·第五弹
目录 1、什么是 spring? 2、使用 Spring 框架的好处是什么? 3、Spring 由哪些模块组成? 4、核心容器(应用上下文) 模块。 5、BeanFactory – BeanFactory 实现举例。 6、XMLBeanFactory 7、解释 AOP 模块 8、解释 JDBC 抽象和 DAO 模块。 9、…...
XTU-OJ 1221-Binary
题目描述 给你一个非负整数n(0≤n≤232-1),求其二进制里面最长连续1数码的长度。 比如,7的二进制为111,所以最长连续1数码的长度为3;13的二进制为1101,所以最长连续1数码的长度为2. 输入 第一行是一个整数K(K≤20000),表示样例的个…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

配置自动扫描本地媒体文件并更新