diff --git a/apps/jellyfin-linuxserver/10.11.11/.env.sample b/apps/jellyfin-linuxserver/10.11.11/.env.sample new file mode 100644 index 000000000..e73fe0be4 --- /dev/null +++ b/apps/jellyfin-linuxserver/10.11.11/.env.sample @@ -0,0 +1,8 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=8096 +CONFIG_PATH=./data/config +TVSHOWS_PATH=./data/tvshows +MOVIES_PATH=./data/movies +TIME_ZONE=Asia/Shanghai +PUBLISHED_SERVER_URL= + diff --git a/apps/jellyfin-linuxserver/10.11.11/data.yml b/apps/jellyfin-linuxserver/10.11.11/data.yml new file mode 100644 index 000000000..4a9a53a23 --- /dev/null +++ b/apps/jellyfin-linuxserver/10.11.11/data.yml @@ -0,0 +1,100 @@ +additionalProperties: + formFields: + - default: 8096 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + label: + en: HTTP Port + zh: HTTP 端口 + zh-Hant: HTTP 連接埠 + ja: HTTP ポート + ko: HTTP 포트 + ru: HTTP-порт + ms: Port HTTP + pt-br: Porta HTTP + required: true + type: number + rule: paramPort + - default: ./data/config + edit: true + envKey: CONFIG_PATH + labelEn: Config folder path + labelZh: 配置文件路径 + label: + en: Config folder path + zh: 配置文件路径 + zh-Hant: 設定檔資料夾路徑 + ja: 設定フォルダーのパス + ko: 설정 폴더 경로 + ru: Путь к папке конфигурации + ms: Laluan folder konfigurasi + pt-br: Caminho da pasta de configuração + required: true + type: text + - default: ./data/tvshows + edit: true + envKey: TVSHOWS_PATH + labelEn: TV shows folder path + labelZh: 电视剧媒体目录路径 + label: + en: TV shows folder path + zh: 电视剧媒体目录路径 + zh-Hant: 電視劇媒體資料夾路徑 + ja: テレビ番組フォルダーのパス + ko: TV 프로그램 폴더 경로 + ru: Путь к папке сериалов + ms: Laluan folder rancangan TV + pt-br: Caminho da pasta de series + required: true + type: text + - default: ./data/movies + edit: true + envKey: MOVIES_PATH + labelEn: Movies folder path + labelZh: 电影媒体目录路径 + label: + en: Movies folder path + zh: 电影媒体目录路径 + zh-Hant: 電影媒體資料夾路徑 + ja: 映画フォルダーのパス + ko: 영화 폴더 경로 + ru: Путь к папке фильмов + ms: Laluan folder filem + pt-br: Caminho da pasta de filmes + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + label: + en: Time zone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon waktu + pt-br: Fuso horário + required: true + type: text + - default: "" + edit: true + envKey: PUBLISHED_SERVER_URL + labelEn: Published server URL + labelZh: 对外服务地址 + label: + en: Published server URL + zh: 对外服务地址 + zh-Hant: 對外服務位址 + ja: 公開サーバー URL + ko: 공개 서버 URL + ru: Публичный URL сервера + ms: URL pelayan diterbitkan + pt-br: URL publica do servidor + required: false + type: text + diff --git a/apps/jellyfin-linuxserver/10.11.11/docker-compose.yml b/apps/jellyfin-linuxserver/10.11.11/docker-compose.yml new file mode 100644 index 000000000..61a525e56 --- /dev/null +++ b/apps/jellyfin-linuxserver/10.11.11/docker-compose.yml @@ -0,0 +1,24 @@ +networks: + 1panel-network: + external: true +services: + jellyfin: + image: "linuxserver/jellyfin:10.11.11" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8096" + volumes: + - "${CONFIG_PATH}:/config" + - "${TVSHOWS_PATH}:/data/tvshows" + - "${MOVIES_PATH}:/data/movies" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + - JELLYFIN_PublishedServerUrl=${PUBLISHED_SERVER_URL:-} + labels: + createdBy: "Apps" + diff --git a/apps/jellyfin-linuxserver/10.11.11/scripts/init.sh b/apps/jellyfin-linuxserver/10.11.11/scripts/init.sh new file mode 100755 index 000000000..c57a92f8d --- /dev/null +++ b/apps/jellyfin-linuxserver/10.11.11/scripts/init.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail + +paths=( + "${CONFIG_PATH:-./data/config}" + "${TVSHOWS_PATH:-./data/tvshows}" + "${MOVIES_PATH:-./data/movies}" +) + +mkdir -p "${paths[@]}" +for path in "${paths[@]}"; do + case "$path" in + ./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;; + esac +done + diff --git a/apps/jellyfin-linuxserver/10.11.11/scripts/uninstall.sh b/apps/jellyfin-linuxserver/10.11.11/scripts/uninstall.sh new file mode 100755 index 000000000..accdccd70 --- /dev/null +++ b/apps/jellyfin-linuxserver/10.11.11/scripts/uninstall.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker-compose down --volumes + diff --git a/apps/jellyfin-linuxserver/10.11.11/scripts/upgrade.sh b/apps/jellyfin-linuxserver/10.11.11/scripts/upgrade.sh new file mode 100755 index 000000000..a6eb46bac --- /dev/null +++ b/apps/jellyfin-linuxserver/10.11.11/scripts/upgrade.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail + +: + diff --git a/apps/jellyfin-linuxserver/README.md b/apps/jellyfin-linuxserver/README.md new file mode 100644 index 000000000..ffc6dd327 --- /dev/null +++ b/apps/jellyfin-linuxserver/README.md @@ -0,0 +1,61 @@ +# Jellyfin + +## 产品介绍 +Jellyfin 是一个自托管媒体服务器,本应用使用 LinuxServer.io 镜像部署。 + +## 主要功能 +- 通过浏览器和 Jellyfin 客户端管理、播放媒体库。 +- 使用 `/config` 持久化服务器配置和元数据。 +- 默认映射电视剧和电影两个媒体目录。 + +## 访问说明 +安装完成后,通过应用表单中的 HTTP 端口访问 Web UI,并按 Jellyfin 初始化向导完成配置。 + +## Introduction +Jellyfin is a self-hosted media server. This app deploys the LinuxServer.io image. + +## Features +- Manage and stream media libraries from browsers and Jellyfin clients. +- Persist server settings and metadata under `/config`. +- Map separate TV shows and movies media folders by default. + +## 应用简介 +Jellyfin 媒体服务器。 + +英文说明:Media server maintained by LinuxServer.io. + +## 部署说明 +- 本应用使用 Docker Compose 在 1Panel 中部署。 +- 应用分类:多媒体。 +- 支持架构:amd64、arm64。 +- 可选版本:`latest`、`10.11.11`。 + +## 端口 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| PANEL_APP_PORT_HTTP | HTTP 端口 | 8096 | 是 | + +## 数据持久化 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| CONFIG_PATH | 配置文件路径 | ./data/config | 是 | +| TVSHOWS_PATH | 电视剧媒体目录 | ./data/tvshows | 是 | +| MOVIES_PATH | 电影媒体目录 | ./data/movies | 是 | + +升级或迁移前,请在 1Panel 中备份上述数据目录。 + +## 配置项 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| TIME_ZONE | 时区 | Asia/Shanghai | 是 | +| PUBLISHED_SERVER_URL | 自动发现返回地址 | 空 | 否 | + +## 使用说明 +- 默认仅开放 HTTP Web 端口;HTTPS、DLNA/发现 UDP 端口和硬件加速设备未默认映射。 +- 如需对外开放访问,请同步检查防火墙、安全组和反向代理配置。 + +## 参考资料 +- 官网: +- 文档: +- 源码: + diff --git a/apps/jellyfin-linuxserver/data.yml b/apps/jellyfin-linuxserver/data.yml new file mode 100644 index 000000000..7bb4a8905 --- /dev/null +++ b/apps/jellyfin-linuxserver/data.yml @@ -0,0 +1,31 @@ +name: Jellyfin +tags: +- Media +title: Jellyfin 媒体服务器 +description: Jellyfin 媒体服务器 +additionalProperties: + key: jellyfin-linuxserver + name: Jellyfin + tags: + - Media + shortDescZh: Jellyfin 媒体服务器 + shortDescEn: Media server maintained by LinuxServer.io + description: + en: Media server maintained by LinuxServer.io + zh: Jellyfin 媒体服务器 + zh-Hant: Jellyfin 媒體伺服器 + ja: LinuxServer.io が保守するメディアサーバー + ko: LinuxServer.io에서 유지 관리하는 미디어 서버 + ru: Медиасервер, поддерживаемый LinuxServer.io + ms: Pelayan media yang diselenggara oleh LinuxServer.io + pt-br: Servidor de midia mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://jellyfin.org/ + github: https://github.com/linuxserver/docker-jellyfin + document: https://docs.linuxserver.io/images/docker-jellyfin/ + architectures: + - amd64 + - arm64 + diff --git a/apps/jellyfin-linuxserver/latest/.env.sample b/apps/jellyfin-linuxserver/latest/.env.sample new file mode 100644 index 000000000..e73fe0be4 --- /dev/null +++ b/apps/jellyfin-linuxserver/latest/.env.sample @@ -0,0 +1,8 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=8096 +CONFIG_PATH=./data/config +TVSHOWS_PATH=./data/tvshows +MOVIES_PATH=./data/movies +TIME_ZONE=Asia/Shanghai +PUBLISHED_SERVER_URL= + diff --git a/apps/jellyfin-linuxserver/latest/data.yml b/apps/jellyfin-linuxserver/latest/data.yml new file mode 100644 index 000000000..4a9a53a23 --- /dev/null +++ b/apps/jellyfin-linuxserver/latest/data.yml @@ -0,0 +1,100 @@ +additionalProperties: + formFields: + - default: 8096 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + label: + en: HTTP Port + zh: HTTP 端口 + zh-Hant: HTTP 連接埠 + ja: HTTP ポート + ko: HTTP 포트 + ru: HTTP-порт + ms: Port HTTP + pt-br: Porta HTTP + required: true + type: number + rule: paramPort + - default: ./data/config + edit: true + envKey: CONFIG_PATH + labelEn: Config folder path + labelZh: 配置文件路径 + label: + en: Config folder path + zh: 配置文件路径 + zh-Hant: 設定檔資料夾路徑 + ja: 設定フォルダーのパス + ko: 설정 폴더 경로 + ru: Путь к папке конфигурации + ms: Laluan folder konfigurasi + pt-br: Caminho da pasta de configuração + required: true + type: text + - default: ./data/tvshows + edit: true + envKey: TVSHOWS_PATH + labelEn: TV shows folder path + labelZh: 电视剧媒体目录路径 + label: + en: TV shows folder path + zh: 电视剧媒体目录路径 + zh-Hant: 電視劇媒體資料夾路徑 + ja: テレビ番組フォルダーのパス + ko: TV 프로그램 폴더 경로 + ru: Путь к папке сериалов + ms: Laluan folder rancangan TV + pt-br: Caminho da pasta de series + required: true + type: text + - default: ./data/movies + edit: true + envKey: MOVIES_PATH + labelEn: Movies folder path + labelZh: 电影媒体目录路径 + label: + en: Movies folder path + zh: 电影媒体目录路径 + zh-Hant: 電影媒體資料夾路徑 + ja: 映画フォルダーのパス + ko: 영화 폴더 경로 + ru: Путь к папке фильмов + ms: Laluan folder filem + pt-br: Caminho da pasta de filmes + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + label: + en: Time zone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon waktu + pt-br: Fuso horário + required: true + type: text + - default: "" + edit: true + envKey: PUBLISHED_SERVER_URL + labelEn: Published server URL + labelZh: 对外服务地址 + label: + en: Published server URL + zh: 对外服务地址 + zh-Hant: 對外服務位址 + ja: 公開サーバー URL + ko: 공개 서버 URL + ru: Публичный URL сервера + ms: URL pelayan diterbitkan + pt-br: URL publica do servidor + required: false + type: text + diff --git a/apps/jellyfin-linuxserver/latest/docker-compose.yml b/apps/jellyfin-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..60428e628 --- /dev/null +++ b/apps/jellyfin-linuxserver/latest/docker-compose.yml @@ -0,0 +1,24 @@ +networks: + 1panel-network: + external: true +services: + jellyfin: + image: "linuxserver/jellyfin:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8096" + volumes: + - "${CONFIG_PATH}:/config" + - "${TVSHOWS_PATH}:/data/tvshows" + - "${MOVIES_PATH}:/data/movies" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + - JELLYFIN_PublishedServerUrl=${PUBLISHED_SERVER_URL:-} + labels: + createdBy: "Apps" + diff --git a/apps/jellyfin-linuxserver/latest/scripts/init.sh b/apps/jellyfin-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..c57a92f8d --- /dev/null +++ b/apps/jellyfin-linuxserver/latest/scripts/init.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail + +paths=( + "${CONFIG_PATH:-./data/config}" + "${TVSHOWS_PATH:-./data/tvshows}" + "${MOVIES_PATH:-./data/movies}" +) + +mkdir -p "${paths[@]}" +for path in "${paths[@]}"; do + case "$path" in + ./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;; + esac +done + diff --git a/apps/jellyfin-linuxserver/latest/scripts/uninstall.sh b/apps/jellyfin-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..accdccd70 --- /dev/null +++ b/apps/jellyfin-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker-compose down --volumes + diff --git a/apps/jellyfin-linuxserver/latest/scripts/upgrade.sh b/apps/jellyfin-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..a6eb46bac --- /dev/null +++ b/apps/jellyfin-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail + +: + diff --git a/apps/jellyfin-linuxserver/logo.png b/apps/jellyfin-linuxserver/logo.png new file mode 100644 index 000000000..1cbd0c3e5 Binary files /dev/null and b/apps/jellyfin-linuxserver/logo.png differ