From 5803df27206ffc9405cbdacf8a1d387e4893741d Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Fri, 6 Dec 2024 12:08:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=20Plex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- apps/plex/1.41.2/data.yml | 54 ++++++++++++++++++++++++++ apps/plex/1.41.2/docker-compose.yml | 31 +++++++++++++++ apps/plex/1.41.2/envs/default.env | 2 + apps/plex/1.41.2/envs/global.env | 2 + apps/plex/1.41.2/scripts/init.sh | 17 ++++++++ apps/plex/1.41.2/scripts/uninstall.sh | 10 +++++ apps/plex/1.41.2/scripts/upgrade.sh | 17 ++++++++ apps/plex/README.md | 15 +++++++ apps/plex/data.yml | 15 +++++++ apps/plex/logo.png | Bin 0 -> 20258 bytes 10 files changed, 163 insertions(+) create mode 100644 apps/plex/1.41.2/data.yml create mode 100644 apps/plex/1.41.2/docker-compose.yml create mode 100644 apps/plex/1.41.2/envs/default.env create mode 100644 apps/plex/1.41.2/envs/global.env create mode 100644 apps/plex/1.41.2/scripts/init.sh create mode 100644 apps/plex/1.41.2/scripts/uninstall.sh create mode 100644 apps/plex/1.41.2/scripts/upgrade.sh create mode 100644 apps/plex/README.md create mode 100644 apps/plex/data.yml create mode 100644 apps/plex/logo.png diff --git a/apps/plex/1.41.2/data.yml b/apps/plex/1.41.2/data.yml new file mode 100644 index 00000000..2ccd756d --- /dev/null +++ b/apps/plex/1.41.2/data.yml @@ -0,0 +1,54 @@ +additionalProperties: + formFields: + - default: "/home/plex" + edit: true + envKey: PLEX_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: "host" + edit: true + envKey: NETWORK_MODE + labelEn: Drive path + labelZh: 网络模式 + required: true + type: select + values: + - label: 主机网络模式 + value: "host" + - label: 桥接网络模式 + value: "bridge" + - label: 无网络模式 + value: "none" + - label: 1panel-network + value: "1panel-network" + - default: 32400 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: CUSTOM_MOUNT_DIRECTORY_1 + labelEn: Custom mount directory 1 + labelZh: 自定义挂载目录 1 + required: false + type: text + - default: "" + edit: true + envKey: CUSTOM_MOUNT_DIRECTORY_2 + labelEn: Custom mount directory 2 + labelZh: 自定义挂载目录 2 + required: false + type: text + - default: "" + edit: true + envKey: CUSTOM_MOUNT_DIRECTORY_3 + labelEn: Custom mount directory 3 + labelZh: 自定义挂载目录 3 + required: false + type: text diff --git a/apps/plex/1.41.2/docker-compose.yml b/apps/plex/1.41.2/docker-compose.yml new file mode 100644 index 00000000..1edb451f --- /dev/null +++ b/apps/plex/1.41.2/docker-compose.yml @@ -0,0 +1,31 @@ +networks: + 1panel-network: + external: true + +services: + plex: + image: linuxserver/plex:1.41.2 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + network_mode: ${NETWORK_MODE} + ports: + - ${PANEL_APP_PORT_HTTP}:32400 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${PLEX_ROOT_PATH}/config:/config + - ${PLEX_ROOT_PATH}/tv:/tv + - ${PLEX_ROOT_PATH}/movies:/movies + - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1} + - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2} + - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3} + environment: + - NVIDIA_VISIBLE_DEVICES=all + - PUID=1000 + - PGID=1000 + - UMASK=022 + - TZ=Asia/Shanghai + - VERSION=docker diff --git a/apps/plex/1.41.2/envs/default.env b/apps/plex/1.41.2/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/apps/plex/1.41.2/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/plex/1.41.2/envs/global.env b/apps/plex/1.41.2/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/apps/plex/1.41.2/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/plex/1.41.2/scripts/init.sh b/apps/plex/1.41.2/scripts/init.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/plex/1.41.2/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/plex/1.41.2/scripts/uninstall.sh b/apps/plex/1.41.2/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/plex/1.41.2/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/plex/1.41.2/scripts/upgrade.sh b/apps/plex/1.41.2/scripts/upgrade.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/plex/1.41.2/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/plex/README.md b/apps/plex/README.md new file mode 100644 index 00000000..454da2a9 --- /dev/null +++ b/apps/plex/README.md @@ -0,0 +1,15 @@ +# plex + +媒体播放器及媒体服务器软件 + +![plex](https://file.lifebus.top/imgs/plex_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +Plex是一套媒体播放器及媒体服务器软件,让用户整理在设备上的有声书、音乐、播客、图片和影片文件,以供流至移动设备、智能电视和电子媒体播放器上。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/plex/data.yml b/apps/plex/data.yml new file mode 100644 index 00000000..4fa8e63e --- /dev/null +++ b/apps/plex/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: plex + name: plex + tags: + - WebSite + - Media + - Local + shortDescZh: 媒体播放器及媒体服务器软件 + shortDescEn: Media player and media server software + type: website + crossVersionUpdate: true + limit: 0 + website: https://www.plex.tv/ + github: https://github.com/plexinc/pms-docker/ + document: https://www.plex.tv/ diff --git a/apps/plex/logo.png b/apps/plex/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3f243253731902d9004b871f620340db2d212505 GIT binary patch literal 20258 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 literal 0 KcmV+b0RR6000031