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),表示样例的个…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

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