Plex直连镜像使用教程

一、运行命令生成 constant.js 和 constant-mount.js

注意:为防止冲突,默认镜像名称是 nginx-plex-rm ,一般不用修改会自动删除。生成的 constant.js 和 constant-mount.js ,文件会在运行此命令的路径下。

docker run -d --name nginx-plex-rm mnookey/nginx-plex && docker cp nginx-plex-rm:/etc/nginx/conf.d/constant.js constant.js && docker cp nginx-plex-rm:/etc/nginx/conf.d/config/constant-mount.js constant-mount.js && docker rm -f nginx-plex-rm

二、使用 docker 或 docker-compose 运行Plex直连镜像

Docker命令

docker run -d --net=host --name=nginx-plex --restart=always -v /root/docker/nginx/constant.js:/etc/nginx/conf.d/constant.js -v /root/docker/nginx/constant-mount.js:/etc/nginx/conf.d/config/constant-mount.js -v /root/docker/nginx-plex/log:/var/log/nginx mnookey/nginx-plex:latest

Docker-compose命令

version: '3.5'

services:
    nginx-plex:
      image: mnookey/nginx-plex:latest
      container_name: nginx-plex
      restart: always
      # 更改为默认host网络,纠正流量标识,直接占用宿主机端口,docker层会禁用端口映射
      network_mode: host
      # 如果需要使用bridge(桥接)网络,请取消ports(端口映射)注释,并注释network_mode
      # 端口映射规则为,宿主机端口:容器内部端口
      # ports:
      #   - 8091:8091
      volumes:
        # 上面命令拷贝生成,修改完成后将constant.js和constant-mount.js挂载(必须!!!)
        - ./nginx/constant.js:/etc/nginx/conf.d/constant.js
        - ./nginx/constant-mount.js:/etc/nginx/conf.d/config/constant-mount.js
        # 日志路径,可以不要
        - ./nginx-plex/log:/var/log/nginx
        # plex配置端口默认http:8091,如需修改运行命令导出后删除 # 号来挂载http.conf配置文件
        #- ./nginx/http.conf:/etc/nginx/conf.d/includes/http.conf

三、配置 constant.js 和 constant-mount.js

因为需要导出 constant.jsconstant-mount.js 并进行修改配置,所以可以写一个自动化脚本来自动执行导出替换命令

脚本代码:

#!/bin/bash
#!/bin/bash

# 获取用户输入
read -p '请输入导出路径,即nginx-plex的映射路径(群晖需要先创建文件夹): ' exportPath
read -p '请输入plex地址,按括号格式内格式输入(http://127.0.0.1:32400): ' plexHost
read -p '请输入CloudDrive2挂载目录,按括号格式内格式输入("/CloudDrive/CloudDrive"): ' plexMountPath
read -p '请输入alist地址,按括号格式内格式输入(http://127.0.0.1:5244): ' alistAddr
read -p '请输入alist Token,按括号格式内格式输入(alist-Token): ' alistToken
read -p '请输入alist外网地址,按括号格式内格式输入(https://abc.com:443): ' alistPublicAddr
# 询问是否更改端口
read -p '是否更改端口? (y/n): ' changePort

if [[ "$changePort" =~ ^[Yy]$ ]]; then
    read -p '请输入新的端口号: ' newPort
fi
# 创建导出路径目录(如果不存在)
mkdir -p "$exportPath"

# 启动Docker容器并导出文件
docker pull mnookey/nginx-plex:latest
docker run -d --name nginx-plex-rm mnookey/nginx-plex:latest
docker cp nginx-plex-rm:/etc/nginx/conf.d/constant.js "$exportPath/constant.js"
docker cp nginx-plex-rm:/etc/nginx/conf.d/config/constant-mount.js "$exportPath/constant-mount.js"
# 根据用户输入决定是否导出ponstant.js
if [[ "$changePort" =~ ^[Yy]$ ]]; then
    docker cp nginx-plex-rm:/etc/nginx/conf.d/includes/http.conf "$exportPath/http.conf"
    echo "http.conf 文件已导出"
    # 如果更改端口,还需要在 http.conf 中替换端口
    if [ -f "$exportPath/http.conf" ]; then
        sed -i "s|8091|$newPort|g" "$exportPath/http.conf"
        echo "http.conf 文件中的端口已更新"
    fi
else
    echo "http.conf 文件未导出"
fi

# 检查 constant.js 文件是否存在
if [ -f "$exportPath/constant.js" ]; then
    # 替换 constant.js 文件中的内容
    sed -i "s|http://172.17.0.1:32400|$plexHost|g" "$exportPath/constant.js"
    sed -i "s|\"/mnt\"|$plexMountPath|g" "$exportPath/constant.js"
    echo "constant.js 文件已更新"
else
    echo "constant.js 文件不存在"
fi

# 检查 constant-mount.js 文件是否存在
if [ -f "$exportPath/constant-mount.js" ]; then
    # 替换 constant-mount.js 文件中的内容
    sed -i "s|http://172.17.0.1:5244|$alistAddr|g" "$exportPath/constant-mount.js"
    sed -i "s|alsit-123456|$alistToken|g" "$exportPath/constant-mount.js"
    sed -i "s|http://youralist.com:5244|$alistPublicAddr|g" "$exportPath/constant-mount.js"
    echo "constant-mount.js 文件已更新"
else
    echo "constant-mount.js 文件不存在"
fi
docker rm -f nginx-plex-rm

四、脚本使用方式

直接在GitHub拉取使用

bash <(curl -sL https://raw.githubusercontent.com/democrat0/impulse4792/main/plex.sh)

拷贝代码本地运行

新建bash文件,命名为plex.sh

拷贝命令到plex.sh并保存

在包含plex.sh的文件夹内输入命令运行

# 新建 plex.sh 文件
vim plex.sh

# 运行 
bash plex.sh

执行完成后得到 constant.jsconstant-mount.js 文件,并完成修改

五、运行nginx-plex容器

任选docker或者docker-compose执行命令运行nginx-plex

访问nginx-plex容器,默认端口为8091,例如 http://127.0.0.1:8091

如无意外,此时已经打开了plex页面

注意:plex app客户端需要https,请自行设置https反向代理