From 5cfceb9576120ff32da050c3d7645393240a6377 Mon Sep 17 00:00:00 2001 From: okxlin Date: Tue, 18 Jun 2024 00:45:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0plex=E5=88=B0=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/plex/1.40.3.8555-fef15d30c/.env.sample | 21 +++ apps/plex/1.40.3.8555-fef15d30c/data.yml | 157 ++++++++++++++++++ .../1.40.3.8555-fef15d30c/docker-compose.yml | 36 ++++ apps/plex/README.md | 3 + apps/plex/data.yml | 19 +++ apps/plex/latest/.env.sample | 21 +++ apps/plex/latest/data.yml | 157 ++++++++++++++++++ apps/plex/latest/docker-compose.yml | 36 ++++ apps/plex/logo.png | Bin 0 -> 4759 bytes 9 files changed, 450 insertions(+) create mode 100644 apps/plex/1.40.3.8555-fef15d30c/.env.sample create mode 100644 apps/plex/1.40.3.8555-fef15d30c/data.yml create mode 100644 apps/plex/1.40.3.8555-fef15d30c/docker-compose.yml create mode 100644 apps/plex/README.md create mode 100644 apps/plex/data.yml create mode 100644 apps/plex/latest/.env.sample create mode 100644 apps/plex/latest/data.yml create mode 100644 apps/plex/latest/docker-compose.yml create mode 100644 apps/plex/logo.png diff --git a/apps/plex/1.40.3.8555-fef15d30c/.env.sample b/apps/plex/1.40.3.8555-fef15d30c/.env.sample new file mode 100644 index 00000000..0a6aea20 --- /dev/null +++ b/apps/plex/1.40.3.8555-fef15d30c/.env.sample @@ -0,0 +1,21 @@ +ADVERTISE_IP="http://localhost:32400/" +ALLOWED_NETWORKS="192.168.1.0/24,172.18.0.0/16" +CHANGE_CONFIG_DIR_OWNERSHIP="true" +CLAIM_TOKEN="" +CONTAINER_NAME="plex" +DATABASE_PATH="./data/plex/database" +HOSTNAME="plex" +MEDIA_PATH="./data/media" +PANEL_APP_PORT_HTTP="32400" +PANEL_APP_PORT_TCP_3005="3005" +PANEL_APP_PORT_TCP_32469="32469" +PANEL_APP_PORT_TCP_8324="8324" +PANEL_APP_PORT_UDP_1900="1900" +PANEL_APP_PORT_UDP_32410="32410" +PANEL_APP_PORT_UDP_32412="32412" +PANEL_APP_PORT_UDP_32413="32413" +PANEL_APP_PORT_UDP_32414="32414" +PLEX_GID="" +PLEX_UID="" +TIMEZONE="Asia/Shanghai" +TRANSCODE_PATH="./data/transcode/temp" diff --git a/apps/plex/1.40.3.8555-fef15d30c/data.yml b/apps/plex/1.40.3.8555-fef15d30c/data.yml new file mode 100644 index 00000000..26ccf22b --- /dev/null +++ b/apps/plex/1.40.3.8555-fef15d30c/data.yml @@ -0,0 +1,157 @@ +additionalProperties: + formFields: + - default: "32400" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port 32400 (TCP) + labelZh: 端口 32400 (TCP) + required: true + rule: paramPort + type: number + - default: "3005" + edit: true + envKey: PANEL_APP_PORT_TCP_3005 + labelEn: Port 3005 (TCP) + labelZh: 端口 3005 (TCP) + required: true + rule: paramPort + type: number + - default: "8324" + edit: true + envKey: PANEL_APP_PORT_TCP_8324 + labelEn: Port 8324 (TCP) + labelZh: 端口 8324 (TCP) + required: true + rule: paramPort + type: number + - default: "32469" + edit: true + envKey: PANEL_APP_PORT_TCP_32469 + labelEn: Port 32469 (TCP) + labelZh: 端口 32469 (TCP) + required: true + rule: paramPort + type: number + - default: "1900" + edit: true + envKey: PANEL_APP_PORT_UDP_1900 + labelEn: Port 1900 (UDP) + labelZh: 端口 1900 (UDP) + required: true + rule: paramPort + type: number + - default: "32410" + edit: true + envKey: PANEL_APP_PORT_UDP_32410 + labelEn: Port 32410 (UDP) + labelZh: 端口 32410 (UDP) + required: true + rule: paramPort + type: number + - default: "32412" + edit: true + envKey: PANEL_APP_PORT_UDP_32412 + labelEn: Port 32412 (UDP) + labelZh: 端口 32412 (UDP) + required: true + rule: paramPort + type: number + - default: "32413" + edit: true + envKey: PANEL_APP_PORT_UDP_32413 + labelEn: Port 32413 (UDP) + labelZh: 端口 32413 (UDP) + required: true + rule: paramPort + type: number + - default: "32414" + edit: true + envKey: PANEL_APP_PORT_UDP_32414 + labelEn: Port 32414 (UDP) + labelZh: 端口 32414 (UDP) + required: true + rule: paramPort + type: number + - default: "Asia/Shanghai" + edit: true + envKey: TIMEZONE + labelEn: Timezone + labelZh: 时区 + required: true + type: text + - default: "" + edit: true + envKey: CLAIM_TOKEN + labelEn: Claim Token + labelZh: 声明令牌 + required: false + type: text + - default: "http://localhost:32400/" + edit: true + envKey: ADVERTISE_IP + labelEn: External URL + labelZh: 外部访问地址 + required: true + rule: paramExtUrl + type: text + - default: "plex" + edit: true + envKey: HOSTNAME + labelEn: Hostname + labelZh: 主机名 + required: true + type: text + - default: "./data/plex/database" + edit: true + envKey: DATABASE_PATH + labelEn: Database Path + labelZh: 数据库路径 + required: true + type: text + - default: "./data/transcode/temp" + edit: true + envKey: TRANSCODE_PATH + labelEn: Transcode Path + labelZh: 转码路径 + required: true + type: text + - default: "./data/media" + edit: true + envKey: MEDIA_PATH + labelEn: Media Path + labelZh: 媒体路径 + required: true + type: text + - default: "" + edit: true + envKey: PLEX_UID + labelEn: Plex UID + labelZh: Plex 用户 ID + required: false + type: text + - default: "" + edit: true + envKey: PLEX_GID + labelEn: Plex GID + labelZh: Plex 组 ID + required: false + type: text + - default: "true" + envKey: CHANGE_CONFIG_DIR_OWNERSHIP + labelEn: Change Config Dir Ownership + labelZh: 更改配置目录所有权 + required: true + type: select + edit: true + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "192.168.1.0/24,172.18.0.0/16" + edit: true + envKey: ALLOWED_NETWORKS + labelEn: Allowed Networks + labelZh: 允许的网络 + required: false + type: text \ No newline at end of file diff --git a/apps/plex/1.40.3.8555-fef15d30c/docker-compose.yml b/apps/plex/1.40.3.8555-fef15d30c/docker-compose.yml new file mode 100644 index 00000000..5b821931 --- /dev/null +++ b/apps/plex/1.40.3.8555-fef15d30c/docker-compose.yml @@ -0,0 +1,36 @@ +services: + plex: + image: "plexinc/pms-docker:1.40.3.8555-fef15d30c" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:32400/tcp" + - "${PANEL_APP_PORT_TCP_3005}:3005/tcp" + - "${PANEL_APP_PORT_TCP_8324}:8324/tcp" + - "${PANEL_APP_PORT_TCP_32469}:32469/tcp" + - "${PANEL_APP_PORT_UDP_1900}:1900/udp" + - "${PANEL_APP_PORT_UDP_32410}:32410/udp" + - "${PANEL_APP_PORT_UDP_32412}:32412/udp" + - "${PANEL_APP_PORT_UDP_32413}:32413/udp" + - "${PANEL_APP_PORT_UDP_32414}:32414/udp" + environment: + - TZ=${TIMEZONE} + - PLEX_CLAIM=${CLAIM_TOKEN} + - ADVERTISE_IP=${ADVERTISE_IP} + - HOSTNAME=${HOSTNAME} + - PLEX_UID=${PLEX_UID} + - PLEX_GID=${PLEX_GID} + - CHANGE_CONFIG_DIR_OWNERSHIP=${CHANGE_CONFIG_DIR_OWNERSHIP} + - ALLOWED_NETWORKS=${ALLOWED_NETWORKS} + volumes: + - ${DATABASE_PATH}:/config + - ${TRANSCODE_PATH}:/transcode + - ${MEDIA_PATH}:/data + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/plex/README.md b/apps/plex/README.md new file mode 100644 index 00000000..15901c16 --- /dev/null +++ b/apps/plex/README.md @@ -0,0 +1,3 @@ +# Plex Media Server + +Plex 是一种媒体播放系统,可让您轻松欣赏电影、电视节目、音乐、图片和基于互联网的内容。 \ No newline at end of file diff --git a/apps/plex/data.yml b/apps/plex/data.yml new file mode 100644 index 00000000..d95808d5 --- /dev/null +++ b/apps/plex/data.yml @@ -0,0 +1,19 @@ +name: Plex Media Server +tags: + - 多媒体 +title: Plex 媒体服务器 +description: Plex 媒体服务器 +additionalProperties: + key: plex + name: Plex Media Server + tags: + - Media + shortDescZh: Plex 媒体服务器 + shortDescEn: Plex Media Server + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.plex.tv + github: https://github.com/plexinc/pms-docker + document: https://support.plex.tv diff --git a/apps/plex/latest/.env.sample b/apps/plex/latest/.env.sample new file mode 100644 index 00000000..0a6aea20 --- /dev/null +++ b/apps/plex/latest/.env.sample @@ -0,0 +1,21 @@ +ADVERTISE_IP="http://localhost:32400/" +ALLOWED_NETWORKS="192.168.1.0/24,172.18.0.0/16" +CHANGE_CONFIG_DIR_OWNERSHIP="true" +CLAIM_TOKEN="" +CONTAINER_NAME="plex" +DATABASE_PATH="./data/plex/database" +HOSTNAME="plex" +MEDIA_PATH="./data/media" +PANEL_APP_PORT_HTTP="32400" +PANEL_APP_PORT_TCP_3005="3005" +PANEL_APP_PORT_TCP_32469="32469" +PANEL_APP_PORT_TCP_8324="8324" +PANEL_APP_PORT_UDP_1900="1900" +PANEL_APP_PORT_UDP_32410="32410" +PANEL_APP_PORT_UDP_32412="32412" +PANEL_APP_PORT_UDP_32413="32413" +PANEL_APP_PORT_UDP_32414="32414" +PLEX_GID="" +PLEX_UID="" +TIMEZONE="Asia/Shanghai" +TRANSCODE_PATH="./data/transcode/temp" diff --git a/apps/plex/latest/data.yml b/apps/plex/latest/data.yml new file mode 100644 index 00000000..26ccf22b --- /dev/null +++ b/apps/plex/latest/data.yml @@ -0,0 +1,157 @@ +additionalProperties: + formFields: + - default: "32400" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port 32400 (TCP) + labelZh: 端口 32400 (TCP) + required: true + rule: paramPort + type: number + - default: "3005" + edit: true + envKey: PANEL_APP_PORT_TCP_3005 + labelEn: Port 3005 (TCP) + labelZh: 端口 3005 (TCP) + required: true + rule: paramPort + type: number + - default: "8324" + edit: true + envKey: PANEL_APP_PORT_TCP_8324 + labelEn: Port 8324 (TCP) + labelZh: 端口 8324 (TCP) + required: true + rule: paramPort + type: number + - default: "32469" + edit: true + envKey: PANEL_APP_PORT_TCP_32469 + labelEn: Port 32469 (TCP) + labelZh: 端口 32469 (TCP) + required: true + rule: paramPort + type: number + - default: "1900" + edit: true + envKey: PANEL_APP_PORT_UDP_1900 + labelEn: Port 1900 (UDP) + labelZh: 端口 1900 (UDP) + required: true + rule: paramPort + type: number + - default: "32410" + edit: true + envKey: PANEL_APP_PORT_UDP_32410 + labelEn: Port 32410 (UDP) + labelZh: 端口 32410 (UDP) + required: true + rule: paramPort + type: number + - default: "32412" + edit: true + envKey: PANEL_APP_PORT_UDP_32412 + labelEn: Port 32412 (UDP) + labelZh: 端口 32412 (UDP) + required: true + rule: paramPort + type: number + - default: "32413" + edit: true + envKey: PANEL_APP_PORT_UDP_32413 + labelEn: Port 32413 (UDP) + labelZh: 端口 32413 (UDP) + required: true + rule: paramPort + type: number + - default: "32414" + edit: true + envKey: PANEL_APP_PORT_UDP_32414 + labelEn: Port 32414 (UDP) + labelZh: 端口 32414 (UDP) + required: true + rule: paramPort + type: number + - default: "Asia/Shanghai" + edit: true + envKey: TIMEZONE + labelEn: Timezone + labelZh: 时区 + required: true + type: text + - default: "" + edit: true + envKey: CLAIM_TOKEN + labelEn: Claim Token + labelZh: 声明令牌 + required: false + type: text + - default: "http://localhost:32400/" + edit: true + envKey: ADVERTISE_IP + labelEn: External URL + labelZh: 外部访问地址 + required: true + rule: paramExtUrl + type: text + - default: "plex" + edit: true + envKey: HOSTNAME + labelEn: Hostname + labelZh: 主机名 + required: true + type: text + - default: "./data/plex/database" + edit: true + envKey: DATABASE_PATH + labelEn: Database Path + labelZh: 数据库路径 + required: true + type: text + - default: "./data/transcode/temp" + edit: true + envKey: TRANSCODE_PATH + labelEn: Transcode Path + labelZh: 转码路径 + required: true + type: text + - default: "./data/media" + edit: true + envKey: MEDIA_PATH + labelEn: Media Path + labelZh: 媒体路径 + required: true + type: text + - default: "" + edit: true + envKey: PLEX_UID + labelEn: Plex UID + labelZh: Plex 用户 ID + required: false + type: text + - default: "" + edit: true + envKey: PLEX_GID + labelEn: Plex GID + labelZh: Plex 组 ID + required: false + type: text + - default: "true" + envKey: CHANGE_CONFIG_DIR_OWNERSHIP + labelEn: Change Config Dir Ownership + labelZh: 更改配置目录所有权 + required: true + type: select + edit: true + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + - default: "192.168.1.0/24,172.18.0.0/16" + edit: true + envKey: ALLOWED_NETWORKS + labelEn: Allowed Networks + labelZh: 允许的网络 + required: false + type: text \ No newline at end of file diff --git a/apps/plex/latest/docker-compose.yml b/apps/plex/latest/docker-compose.yml new file mode 100644 index 00000000..49af0ea0 --- /dev/null +++ b/apps/plex/latest/docker-compose.yml @@ -0,0 +1,36 @@ +services: + plex: + image: "plexinc/pms-docker:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:32400/tcp" + - "${PANEL_APP_PORT_TCP_3005}:3005/tcp" + - "${PANEL_APP_PORT_TCP_8324}:8324/tcp" + - "${PANEL_APP_PORT_TCP_32469}:32469/tcp" + - "${PANEL_APP_PORT_UDP_1900}:1900/udp" + - "${PANEL_APP_PORT_UDP_32410}:32410/udp" + - "${PANEL_APP_PORT_UDP_32412}:32412/udp" + - "${PANEL_APP_PORT_UDP_32413}:32413/udp" + - "${PANEL_APP_PORT_UDP_32414}:32414/udp" + environment: + - TZ=${TIMEZONE} + - PLEX_CLAIM=${CLAIM_TOKEN} + - ADVERTISE_IP=${ADVERTISE_IP} + - HOSTNAME=${HOSTNAME} + - PLEX_UID=${PLEX_UID} + - PLEX_GID=${PLEX_GID} + - CHANGE_CONFIG_DIR_OWNERSHIP=${CHANGE_CONFIG_DIR_OWNERSHIP} + - ALLOWED_NETWORKS=${ALLOWED_NETWORKS} + volumes: + - ${DATABASE_PATH}:/config + - ${TRANSCODE_PATH}:/transcode + - ${MEDIA_PATH}:/data + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/plex/logo.png b/apps/plex/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c1356540e0bf2534697f9e7a608b13936a3d25d1 GIT binary patch literal 4759 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 literal 0 HcmV?d00001