From 17fb0ff46b9eee7f348965ed3dc4d61510e9f3bf Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Wed, 24 Jun 2026 08:28:51 +0800 Subject: [PATCH] Add more LinuxServer media app adapters --- .../11.1.4/.env.sample | 10 ++ .../11.1.4/data.yml | 147 ++++++++++++++++++ .../11.1.4/data/.gitkeep | 0 .../11.1.4/docker-compose.yml | 26 ++++ .../11.1.4/scripts/init.sh | 4 + .../11.1.4/scripts/uninstall.sh | 2 + .../11.1.4/scripts/upgrade.sh | 3 + apps/airsonic-advanced-linuxserver/README.md | 32 ++++ apps/airsonic-advanced-linuxserver/data.yml | 30 ++++ .../latest/.env.sample | 10 ++ .../latest/data.yml | 147 ++++++++++++++++++ .../latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 26 ++++ .../latest/scripts/init.sh | 4 + .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 3 + apps/airsonic-advanced-linuxserver/logo.png | Bin 0 -> 1635 bytes apps/lidarr-linuxserver/3.1.0/.env.sample | 6 + apps/lidarr-linuxserver/3.1.0/data.yml | 83 ++++++++++ apps/lidarr-linuxserver/3.1.0/data/.gitkeep | 0 .../3.1.0/docker-compose.yml | 22 +++ apps/lidarr-linuxserver/3.1.0/scripts/init.sh | 4 + .../3.1.0/scripts/uninstall.sh | 2 + .../3.1.0/scripts/upgrade.sh | 3 + apps/lidarr-linuxserver/README.md | 32 ++++ apps/lidarr-linuxserver/data.yml | 30 ++++ apps/lidarr-linuxserver/latest/.env.sample | 6 + apps/lidarr-linuxserver/latest/data.yml | 83 ++++++++++ apps/lidarr-linuxserver/latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 22 +++ .../lidarr-linuxserver/latest/scripts/init.sh | 4 + .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 3 + apps/lidarr-linuxserver/logo.png | Bin 0 -> 9563 bytes apps/medusa-linuxserver/1.0.25/.env.sample | 6 + apps/medusa-linuxserver/1.0.25/data.yml | 83 ++++++++++ apps/medusa-linuxserver/1.0.25/data/.gitkeep | 0 .../1.0.25/docker-compose.yml | 22 +++ .../medusa-linuxserver/1.0.25/scripts/init.sh | 4 + .../1.0.25/scripts/uninstall.sh | 2 + .../1.0.25/scripts/upgrade.sh | 3 + apps/medusa-linuxserver/README.md | 32 ++++ apps/medusa-linuxserver/data.yml | 30 ++++ apps/medusa-linuxserver/latest/.env.sample | 6 + apps/medusa-linuxserver/latest/data.yml | 83 ++++++++++ apps/medusa-linuxserver/latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 22 +++ .../medusa-linuxserver/latest/scripts/init.sh | 4 + .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 3 + apps/medusa-linuxserver/logo.png | Bin 0 -> 2931 bytes apps/overseerr-linuxserver/1.35.0/.env.sample | 4 + apps/overseerr-linuxserver/1.35.0/data.yml | 51 ++++++ .../1.35.0/data/.gitkeep | 0 .../1.35.0/docker-compose.yml | 20 +++ .../1.35.0/scripts/init.sh | 4 + .../1.35.0/scripts/uninstall.sh | 2 + .../1.35.0/scripts/upgrade.sh | 3 + apps/overseerr-linuxserver/README.md | 32 ++++ apps/overseerr-linuxserver/data.yml | 30 ++++ apps/overseerr-linuxserver/latest/.env.sample | 4 + apps/overseerr-linuxserver/latest/data.yml | 51 ++++++ .../latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 20 +++ .../latest/scripts/init.sh | 4 + .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 3 + apps/overseerr-linuxserver/logo.png | Bin 0 -> 6654 bytes apps/prowlarr-linuxserver/2.4.0/.env.sample | 4 + apps/prowlarr-linuxserver/2.4.0/data.yml | 51 ++++++ apps/prowlarr-linuxserver/2.4.0/data/.gitkeep | 0 .../2.4.0/docker-compose.yml | 20 +++ .../2.4.0/scripts/init.sh | 4 + .../2.4.0/scripts/uninstall.sh | 2 + .../2.4.0/scripts/upgrade.sh | 3 + apps/prowlarr-linuxserver/README.md | 32 ++++ apps/prowlarr-linuxserver/data.yml | 30 ++++ apps/prowlarr-linuxserver/latest/.env.sample | 4 + apps/prowlarr-linuxserver/latest/data.yml | 51 ++++++ .../prowlarr-linuxserver/latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 20 +++ .../latest/scripts/init.sh | 4 + .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 3 + apps/prowlarr-linuxserver/logo.png | Bin 0 -> 8444 bytes apps/sickgear-linuxserver/3.35.7/.env.sample | 6 + apps/sickgear-linuxserver/3.35.7/data.yml | 83 ++++++++++ .../sickgear-linuxserver/3.35.7/data/.gitkeep | 0 .../3.35.7/docker-compose.yml | 22 +++ .../3.35.7/scripts/init.sh | 4 + .../3.35.7/scripts/uninstall.sh | 2 + .../3.35.7/scripts/upgrade.sh | 3 + apps/sickgear-linuxserver/README.md | 32 ++++ apps/sickgear-linuxserver/data.yml | 30 ++++ apps/sickgear-linuxserver/latest/.env.sample | 6 + apps/sickgear-linuxserver/latest/data.yml | 83 ++++++++++ .../sickgear-linuxserver/latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 22 +++ .../latest/scripts/init.sh | 4 + .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 3 + apps/sickgear-linuxserver/logo.png | Bin 0 -> 8783 bytes 102 files changed, 1812 insertions(+) create mode 100644 apps/airsonic-advanced-linuxserver/11.1.4/.env.sample create mode 100644 apps/airsonic-advanced-linuxserver/11.1.4/data.yml create mode 100644 apps/airsonic-advanced-linuxserver/11.1.4/data/.gitkeep create mode 100644 apps/airsonic-advanced-linuxserver/11.1.4/docker-compose.yml create mode 100755 apps/airsonic-advanced-linuxserver/11.1.4/scripts/init.sh create mode 100755 apps/airsonic-advanced-linuxserver/11.1.4/scripts/uninstall.sh create mode 100755 apps/airsonic-advanced-linuxserver/11.1.4/scripts/upgrade.sh create mode 100644 apps/airsonic-advanced-linuxserver/README.md create mode 100644 apps/airsonic-advanced-linuxserver/data.yml create mode 100644 apps/airsonic-advanced-linuxserver/latest/.env.sample create mode 100644 apps/airsonic-advanced-linuxserver/latest/data.yml create mode 100644 apps/airsonic-advanced-linuxserver/latest/data/.gitkeep create mode 100644 apps/airsonic-advanced-linuxserver/latest/docker-compose.yml create mode 100755 apps/airsonic-advanced-linuxserver/latest/scripts/init.sh create mode 100755 apps/airsonic-advanced-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/airsonic-advanced-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/airsonic-advanced-linuxserver/logo.png create mode 100644 apps/lidarr-linuxserver/3.1.0/.env.sample create mode 100644 apps/lidarr-linuxserver/3.1.0/data.yml create mode 100644 apps/lidarr-linuxserver/3.1.0/data/.gitkeep create mode 100644 apps/lidarr-linuxserver/3.1.0/docker-compose.yml create mode 100755 apps/lidarr-linuxserver/3.1.0/scripts/init.sh create mode 100755 apps/lidarr-linuxserver/3.1.0/scripts/uninstall.sh create mode 100755 apps/lidarr-linuxserver/3.1.0/scripts/upgrade.sh create mode 100644 apps/lidarr-linuxserver/README.md create mode 100644 apps/lidarr-linuxserver/data.yml create mode 100644 apps/lidarr-linuxserver/latest/.env.sample create mode 100644 apps/lidarr-linuxserver/latest/data.yml create mode 100644 apps/lidarr-linuxserver/latest/data/.gitkeep create mode 100644 apps/lidarr-linuxserver/latest/docker-compose.yml create mode 100755 apps/lidarr-linuxserver/latest/scripts/init.sh create mode 100755 apps/lidarr-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/lidarr-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/lidarr-linuxserver/logo.png create mode 100644 apps/medusa-linuxserver/1.0.25/.env.sample create mode 100644 apps/medusa-linuxserver/1.0.25/data.yml create mode 100644 apps/medusa-linuxserver/1.0.25/data/.gitkeep create mode 100644 apps/medusa-linuxserver/1.0.25/docker-compose.yml create mode 100755 apps/medusa-linuxserver/1.0.25/scripts/init.sh create mode 100755 apps/medusa-linuxserver/1.0.25/scripts/uninstall.sh create mode 100755 apps/medusa-linuxserver/1.0.25/scripts/upgrade.sh create mode 100644 apps/medusa-linuxserver/README.md create mode 100644 apps/medusa-linuxserver/data.yml create mode 100644 apps/medusa-linuxserver/latest/.env.sample create mode 100644 apps/medusa-linuxserver/latest/data.yml create mode 100644 apps/medusa-linuxserver/latest/data/.gitkeep create mode 100644 apps/medusa-linuxserver/latest/docker-compose.yml create mode 100755 apps/medusa-linuxserver/latest/scripts/init.sh create mode 100755 apps/medusa-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/medusa-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/medusa-linuxserver/logo.png create mode 100644 apps/overseerr-linuxserver/1.35.0/.env.sample create mode 100644 apps/overseerr-linuxserver/1.35.0/data.yml create mode 100644 apps/overseerr-linuxserver/1.35.0/data/.gitkeep create mode 100644 apps/overseerr-linuxserver/1.35.0/docker-compose.yml create mode 100755 apps/overseerr-linuxserver/1.35.0/scripts/init.sh create mode 100755 apps/overseerr-linuxserver/1.35.0/scripts/uninstall.sh create mode 100755 apps/overseerr-linuxserver/1.35.0/scripts/upgrade.sh create mode 100644 apps/overseerr-linuxserver/README.md create mode 100644 apps/overseerr-linuxserver/data.yml create mode 100644 apps/overseerr-linuxserver/latest/.env.sample create mode 100644 apps/overseerr-linuxserver/latest/data.yml create mode 100644 apps/overseerr-linuxserver/latest/data/.gitkeep create mode 100644 apps/overseerr-linuxserver/latest/docker-compose.yml create mode 100755 apps/overseerr-linuxserver/latest/scripts/init.sh create mode 100755 apps/overseerr-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/overseerr-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/overseerr-linuxserver/logo.png create mode 100644 apps/prowlarr-linuxserver/2.4.0/.env.sample create mode 100644 apps/prowlarr-linuxserver/2.4.0/data.yml create mode 100644 apps/prowlarr-linuxserver/2.4.0/data/.gitkeep create mode 100644 apps/prowlarr-linuxserver/2.4.0/docker-compose.yml create mode 100755 apps/prowlarr-linuxserver/2.4.0/scripts/init.sh create mode 100755 apps/prowlarr-linuxserver/2.4.0/scripts/uninstall.sh create mode 100755 apps/prowlarr-linuxserver/2.4.0/scripts/upgrade.sh create mode 100644 apps/prowlarr-linuxserver/README.md create mode 100644 apps/prowlarr-linuxserver/data.yml create mode 100644 apps/prowlarr-linuxserver/latest/.env.sample create mode 100644 apps/prowlarr-linuxserver/latest/data.yml create mode 100644 apps/prowlarr-linuxserver/latest/data/.gitkeep create mode 100644 apps/prowlarr-linuxserver/latest/docker-compose.yml create mode 100755 apps/prowlarr-linuxserver/latest/scripts/init.sh create mode 100755 apps/prowlarr-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/prowlarr-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/prowlarr-linuxserver/logo.png create mode 100644 apps/sickgear-linuxserver/3.35.7/.env.sample create mode 100644 apps/sickgear-linuxserver/3.35.7/data.yml create mode 100644 apps/sickgear-linuxserver/3.35.7/data/.gitkeep create mode 100644 apps/sickgear-linuxserver/3.35.7/docker-compose.yml create mode 100755 apps/sickgear-linuxserver/3.35.7/scripts/init.sh create mode 100755 apps/sickgear-linuxserver/3.35.7/scripts/uninstall.sh create mode 100755 apps/sickgear-linuxserver/3.35.7/scripts/upgrade.sh create mode 100644 apps/sickgear-linuxserver/README.md create mode 100644 apps/sickgear-linuxserver/data.yml create mode 100644 apps/sickgear-linuxserver/latest/.env.sample create mode 100644 apps/sickgear-linuxserver/latest/data.yml create mode 100644 apps/sickgear-linuxserver/latest/data/.gitkeep create mode 100644 apps/sickgear-linuxserver/latest/docker-compose.yml create mode 100755 apps/sickgear-linuxserver/latest/scripts/init.sh create mode 100755 apps/sickgear-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/sickgear-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/sickgear-linuxserver/logo.png diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/.env.sample b/apps/airsonic-advanced-linuxserver/11.1.4/.env.sample new file mode 100644 index 000000000..332b60243 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/11.1.4/.env.sample @@ -0,0 +1,10 @@ +PANEL_APP_PORT_HTTP=4040 +CONFIG_PATH=./data/config +MUSIC_PATH=./data/music +PLAYLISTS_PATH=./data/playlists +PODCASTS_PATH=./data/podcasts +MEDIA_PATH=./data/media +CONTEXT_PATH= +JAVA_OPTS= +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="airsonic-advanced-linuxserver" diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/data.yml b/apps/airsonic-advanced-linuxserver/11.1.4/data.yml new file mode 100644 index 000000000..23c6fb046 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/11.1.4/data.yml @@ -0,0 +1,147 @@ +additionalProperties: + formFields: + - default: 4040 + 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/music + edit: true + envKey: MUSIC_PATH + labelEn: Music path + labelZh: 音乐目录 + label: + en: Music path + zh: 音乐目录 + zh-Hant: 音樂目錄 + ja: 音楽ディレクトリ + ko: 음악 디렉터리 + ru: Каталог музыки + ms: Laluan muzik + pt-br: Caminho de musicas + required: true + type: text + - default: ./data/playlists + edit: true + envKey: PLAYLISTS_PATH + labelEn: Playlists path + labelZh: 播放列表目录 + label: + en: Playlists path + zh: 播放列表目录 + zh-Hant: 播放清單目錄 + ja: プレイリストディレクトリ + ko: 재생목록 디렉터리 + ru: Каталог плейлистов + ms: Laluan senarai main + pt-br: Caminho de playlists + required: true + type: text + - default: ./data/podcasts + edit: true + envKey: PODCASTS_PATH + labelEn: Podcasts path + labelZh: 播客目录 + label: + en: Podcasts path + zh: 播客目录 + zh-Hant: Podcast 目錄 + ja: ポッドキャストディレクトリ + ko: 팟캐스트 디렉터리 + ru: Каталог подкастов + ms: Laluan podcast + pt-br: Caminho de podcasts + required: true + type: text + - default: ./data/media + edit: true + envKey: MEDIA_PATH + labelEn: Extra media path + labelZh: 额外媒体目录 + label: + en: Extra media path + zh: 额外媒体目录 + zh-Hant: 額外媒體目錄 + ja: 追加メディアディレクトリ + ko: 추가 미디어 디렉터리 + ru: Дополнительный каталог медиа + ms: Laluan media tambahan + pt-br: Caminho de midia extra + required: true + type: text + - default: '' + edit: true + envKey: CONTEXT_PATH + labelEn: Context path + labelZh: 上下文路径 + label: + en: Context path + zh: 上下文路径 + zh-Hant: 上下文路徑 + ja: コンテキストパス + ko: 컨텍스트 경로 + ru: Контекстный путь + ms: Laluan konteks + pt-br: Caminho de contexto + required: false + type: text + - default: '' + edit: true + envKey: JAVA_OPTS + labelEn: Java options + labelZh: Java 参数 + label: + en: Java options + zh: Java 参数 + zh-Hant: Java 參數 + ja: Java オプション + ko: Java 옵션 + ru: Параметры Java + ms: Pilihan Java + pt-br: Opcoes Java + required: false + 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 diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/data/.gitkeep b/apps/airsonic-advanced-linuxserver/11.1.4/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/docker-compose.yml b/apps/airsonic-advanced-linuxserver/11.1.4/docker-compose.yml new file mode 100644 index 000000000..f27f231a2 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/11.1.4/docker-compose.yml @@ -0,0 +1,26 @@ +networks: + 1panel-network: + external: true +services: + airsonic-advanced: + image: "linuxserver/airsonic-advanced:11.1.4" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4040" + volumes: + - "${CONFIG_PATH}:/config" + - "${MUSIC_PATH}:/music" + - "${PLAYLISTS_PATH}:/playlists" + - "${PODCASTS_PATH}:/podcasts" + - "${MEDIA_PATH}:/media" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + - CONTEXT_PATH=${CONTEXT_PATH:-} + - JAVA_OPTS=${JAVA_OPTS:-} + labels: + createdBy: "Apps" diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/scripts/init.sh b/apps/airsonic-advanced-linuxserver/11.1.4/scripts/init.sh new file mode 100755 index 000000000..f2d5c7f53 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/11.1.4/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config ./data/music ./data/playlists ./data/podcasts ./data/media +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/scripts/uninstall.sh b/apps/airsonic-advanced-linuxserver/11.1.4/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/11.1.4/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/airsonic-advanced-linuxserver/11.1.4/scripts/upgrade.sh b/apps/airsonic-advanced-linuxserver/11.1.4/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/11.1.4/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/airsonic-advanced-linuxserver/README.md b/apps/airsonic-advanced-linuxserver/README.md new file mode 100644 index 000000000..2dd2916c1 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/README.md @@ -0,0 +1,32 @@ +# Airsonic Advanced LinuxServer + +## 产品介绍 + +Airsonic Advanced 是一个自托管音乐流媒体服务器,可在浏览器和兼容客户端中访问音乐库。本应用使用 LinuxServer.io 维护的 `linuxserver/airsonic-advanced` 镜像。 + +## 主要功能 + +- 通过 Web UI 管理和播放音乐库 +- 持久化保存配置、音乐、播放列表和播客目录 +- 使用 4040 端口提供 Web 界面 +- 支持上下文路径、Java 参数和时区配置 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 `http://服务器地址:HTTP端口` 访问 Web 界面。首次启动后请按应用页面提示完成媒体服务、索引器或资料库配置。 + +## Introduction + +Airsonic Advanced is a self-hosted music streaming server for accessing a music library from browsers and compatible clients. This app uses the LinuxServer.io maintained `linuxserver/airsonic-advanced` image. + +## Features + +- Manage and play a music library from the Web UI +- Persist configuration, music, playlists, and podcasts +- Expose the Web interface on port 4040 +- Configure context path, Java options, and time zone + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/airsonic-advanced-linuxserver/data.yml b/apps/airsonic-advanced-linuxserver/data.yml new file mode 100644 index 000000000..12b4f25c0 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: Airsonic Advanced LinuxServer +tags: +- Media +title: Airsonic Advanced 音乐服务器 +description: Airsonic Advanced 音乐服务器 +additionalProperties: + key: airsonic-advanced-linuxserver + name: Airsonic Advanced LinuxServer + tags: + - Media + shortDescZh: Airsonic Advanced 音乐服务器 + shortDescEn: Music streaming server maintained by LinuxServer.io + description: + en: Music streaming server maintained by LinuxServer.io + zh: Airsonic Advanced 音乐服务器 + zh-Hant: Airsonic Advanced 音樂伺服器 + ja: LinuxServer.io が保守する音楽ストリーミングサーバー + ko: LinuxServer.io에서 유지 관리하는 음악 스트리밍 서버 + ru: Сервер потоковой музыки, поддерживаемый LinuxServer.io + ms: Pelayan penstriman muzik yang diselenggara oleh LinuxServer.io + pt-br: Servidor de streaming de musica mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://github.com/airsonic-advanced/airsonic-advanced + github: https://github.com/linuxserver/docker-airsonic-advanced + document: https://docs.linuxserver.io/images/docker-airsonic-advanced/ + architectures: + - amd64 + - arm64 diff --git a/apps/airsonic-advanced-linuxserver/latest/.env.sample b/apps/airsonic-advanced-linuxserver/latest/.env.sample new file mode 100644 index 000000000..332b60243 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/latest/.env.sample @@ -0,0 +1,10 @@ +PANEL_APP_PORT_HTTP=4040 +CONFIG_PATH=./data/config +MUSIC_PATH=./data/music +PLAYLISTS_PATH=./data/playlists +PODCASTS_PATH=./data/podcasts +MEDIA_PATH=./data/media +CONTEXT_PATH= +JAVA_OPTS= +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="airsonic-advanced-linuxserver" diff --git a/apps/airsonic-advanced-linuxserver/latest/data.yml b/apps/airsonic-advanced-linuxserver/latest/data.yml new file mode 100644 index 000000000..23c6fb046 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/latest/data.yml @@ -0,0 +1,147 @@ +additionalProperties: + formFields: + - default: 4040 + 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/music + edit: true + envKey: MUSIC_PATH + labelEn: Music path + labelZh: 音乐目录 + label: + en: Music path + zh: 音乐目录 + zh-Hant: 音樂目錄 + ja: 音楽ディレクトリ + ko: 음악 디렉터리 + ru: Каталог музыки + ms: Laluan muzik + pt-br: Caminho de musicas + required: true + type: text + - default: ./data/playlists + edit: true + envKey: PLAYLISTS_PATH + labelEn: Playlists path + labelZh: 播放列表目录 + label: + en: Playlists path + zh: 播放列表目录 + zh-Hant: 播放清單目錄 + ja: プレイリストディレクトリ + ko: 재생목록 디렉터리 + ru: Каталог плейлистов + ms: Laluan senarai main + pt-br: Caminho de playlists + required: true + type: text + - default: ./data/podcasts + edit: true + envKey: PODCASTS_PATH + labelEn: Podcasts path + labelZh: 播客目录 + label: + en: Podcasts path + zh: 播客目录 + zh-Hant: Podcast 目錄 + ja: ポッドキャストディレクトリ + ko: 팟캐스트 디렉터리 + ru: Каталог подкастов + ms: Laluan podcast + pt-br: Caminho de podcasts + required: true + type: text + - default: ./data/media + edit: true + envKey: MEDIA_PATH + labelEn: Extra media path + labelZh: 额外媒体目录 + label: + en: Extra media path + zh: 额外媒体目录 + zh-Hant: 額外媒體目錄 + ja: 追加メディアディレクトリ + ko: 추가 미디어 디렉터리 + ru: Дополнительный каталог медиа + ms: Laluan media tambahan + pt-br: Caminho de midia extra + required: true + type: text + - default: '' + edit: true + envKey: CONTEXT_PATH + labelEn: Context path + labelZh: 上下文路径 + label: + en: Context path + zh: 上下文路径 + zh-Hant: 上下文路徑 + ja: コンテキストパス + ko: 컨텍스트 경로 + ru: Контекстный путь + ms: Laluan konteks + pt-br: Caminho de contexto + required: false + type: text + - default: '' + edit: true + envKey: JAVA_OPTS + labelEn: Java options + labelZh: Java 参数 + label: + en: Java options + zh: Java 参数 + zh-Hant: Java 參數 + ja: Java オプション + ko: Java 옵션 + ru: Параметры Java + ms: Pilihan Java + pt-br: Opcoes Java + required: false + 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 diff --git a/apps/airsonic-advanced-linuxserver/latest/data/.gitkeep b/apps/airsonic-advanced-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/airsonic-advanced-linuxserver/latest/docker-compose.yml b/apps/airsonic-advanced-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..c50969a54 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/latest/docker-compose.yml @@ -0,0 +1,26 @@ +networks: + 1panel-network: + external: true +services: + airsonic-advanced: + image: "linuxserver/airsonic-advanced:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4040" + volumes: + - "${CONFIG_PATH}:/config" + - "${MUSIC_PATH}:/music" + - "${PLAYLISTS_PATH}:/playlists" + - "${PODCASTS_PATH}:/podcasts" + - "${MEDIA_PATH}:/media" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + - CONTEXT_PATH=${CONTEXT_PATH:-} + - JAVA_OPTS=${JAVA_OPTS:-} + labels: + createdBy: "Apps" diff --git a/apps/airsonic-advanced-linuxserver/latest/scripts/init.sh b/apps/airsonic-advanced-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..f2d5c7f53 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config ./data/music ./data/playlists ./data/podcasts ./data/media +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/airsonic-advanced-linuxserver/latest/scripts/uninstall.sh b/apps/airsonic-advanced-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/airsonic-advanced-linuxserver/latest/scripts/upgrade.sh b/apps/airsonic-advanced-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/airsonic-advanced-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/airsonic-advanced-linuxserver/logo.png b/apps/airsonic-advanced-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9a960c6bfaee4e7adae31bf41b2bb2f4e01898 GIT binary patch literal 1635 zcmZutdpOg382{~bbD2=NgoTkyYi3c8Yf^I^6D5r^w`6I#X4FLToHQxqwjnw(lg7$5 zv$i`K42Ai zgW(=;q>3k{&aYE27^fM&I6k}9{z)!E?(@oY(;j4~PGE(6?Hjs@(RyZ#p3PH@GmfyW zc2>5#0;F451#?3=?mxl(P(ny5w^2zo*2^!^|7}dEx_XXH>Te#7Buq#ob+h`ZT;9Iw z^W8gVQ~0I@6mvHtbC8}~+W%op(_?V^0iAg8tTUm#;jk@}j}`2iZM(cs{xSv+7a_q0 zS8J4XRqGIA;b`S_GI>%P42V^s(6N}2BNJ{pdeBf4OJK6ay?A)gD50}`0$a^S8Lv(q zF0z?S;=F1q>(?r;(RMVynT576z5I;VuG(Mvm)CsfK(<@MnG(I3M)?=TugT}_qA2@_8mwauqv{(=vX|4|9KGqu0)xGpNZfdyCJ-`rG z)JQ9&XSuTdFz>~Ii$oVYGe~q8K6>+xS{upxlLju}LVQ!aOMJ55+kI_D9Se6H3T&!$ zkUGUe@YJY@BdScWrBW$0gV-xt)K0rjppYJ>C*`b^0Llk+M!Oip|LETn)fhCmW z?V_9So(WUp2G~lJk2SeG{(>O{7dZc5y+hg4zycnuA&m9CtFo(LJlPcP=Y2&2?uWSl z(H1=Bf4GMao}xI_Yb!l{O=%0B6!_)rn7OBQ%hl#S=650!o=h{qtfh^giC52@+~LVR z+9jsaV0l@RxT&eyM0|dKBmYU?e7d+doV6z+{I=>B2)6&5HIWzJ&2+%%xp9(?DtR9XPu?J(n0=tQ0dQkSl!rR0qr#o z*f-X|{+v!^`O{`K772$CH;>9?=h2c^00(>J2YUm!OjH|JBq}k2d?6uW2DmvZI2vtH z)E2b`n?YrgoVOzEshi0mUs^%z%AOt{!YC^vz_8RI_iB4iWBXkz+`*0mY_=L&o9ODr zHG%jc>?12I2@fZ|eMmf$h$LJD+UqDK%ERSYrMUN;9p`e^P|Zk%a55w)#5tc56|tbu zdhXag%c$-31}~sX+`bXM{b_i@V0o;+_F)E+;bZ|FX^{^db3c-2nWT}qMjy+dff@t7 z*S*Nqzj0UDDY}5jnqhluS9(31!GN_gtk}g$*v%c<{|MZld-Q_!%qPppT8T|Fu zcZ?;Uw@}CskXm@lhtz^A0GXFew+aPS+kqh++6E`ws18tgUF)}#F=gUyzFqui5HOmL z{Td7cPGILkMGJkeW1Caa#G%N(i*^72gUu(r0s*T9>bddqKupy~;@8-4)rkapisfp6 zdMz~RRX6~YI@L4U9Y)e1jC(sR>opZsk=Sdwx@w0maf3E8oQoo#YnltrkyFgA6MM*S z;yzY+VH-2`CoB+*I}lsKCi^hOvdY#jPKWWS{@e7zWD*W_>O/dev/null || true diff --git a/apps/lidarr-linuxserver/3.1.0/scripts/uninstall.sh b/apps/lidarr-linuxserver/3.1.0/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/lidarr-linuxserver/3.1.0/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/lidarr-linuxserver/3.1.0/scripts/upgrade.sh b/apps/lidarr-linuxserver/3.1.0/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/lidarr-linuxserver/3.1.0/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/lidarr-linuxserver/README.md b/apps/lidarr-linuxserver/README.md new file mode 100644 index 000000000..3e548d9a0 --- /dev/null +++ b/apps/lidarr-linuxserver/README.md @@ -0,0 +1,32 @@ +# Lidarr LinuxServer + +## 产品介绍 + +Lidarr 是一个音乐库管理和自动化工具,可与下载器和索引器配合使用。本应用使用 LinuxServer.io 维护的 `linuxserver/lidarr` 镜像。 + +## 主要功能 + +- 通过 Web UI 管理艺术家、专辑和下载任务 +- 持久化保存配置、音乐目录和下载目录 +- 使用 8686 端口提供 Web 管理界面 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 `http://服务器地址:HTTP端口` 访问 Web 界面。首次启动后请按应用页面提示完成媒体服务、索引器或资料库配置。 + +## Introduction + +Lidarr is a music library management and automation tool that works with download clients and indexers. This app uses the LinuxServer.io maintained `linuxserver/lidarr` image. + +## Features + +- Manage artists, albums, and downloads from the Web UI +- Persist configuration, music, and downloads +- Expose the Web interface on port 8686 +- Configure the container time zone + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/lidarr-linuxserver/data.yml b/apps/lidarr-linuxserver/data.yml new file mode 100644 index 000000000..d2b5f6f3a --- /dev/null +++ b/apps/lidarr-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: Lidarr LinuxServer +tags: +- Media +title: Lidarr 音乐库管理器 +description: Lidarr 音乐库管理器 +additionalProperties: + key: lidarr-linuxserver + name: Lidarr LinuxServer + tags: + - Media + shortDescZh: Lidarr 音乐库管理器 + shortDescEn: Music library manager maintained by LinuxServer.io + description: + en: Music library manager maintained by LinuxServer.io + zh: Lidarr 音乐库管理器 + zh-Hant: Lidarr 音樂庫管理器 + ja: LinuxServer.io が保守する音楽ライブラリ管理ツール + ko: LinuxServer.io에서 유지 관리하는 음악 라이브러리 관리자 + ru: Менеджер музыкальной библиотеки, поддерживаемый LinuxServer.io + ms: Pengurus pustaka muzik yang diselenggara oleh LinuxServer.io + pt-br: Gerenciador de biblioteca musical mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://lidarr.audio/ + github: https://github.com/linuxserver/docker-lidarr + document: https://docs.linuxserver.io/images/docker-lidarr/ + architectures: + - amd64 + - arm64 diff --git a/apps/lidarr-linuxserver/latest/.env.sample b/apps/lidarr-linuxserver/latest/.env.sample new file mode 100644 index 000000000..ba7413ae8 --- /dev/null +++ b/apps/lidarr-linuxserver/latest/.env.sample @@ -0,0 +1,6 @@ +PANEL_APP_PORT_HTTP=8686 +CONFIG_PATH=./data/config +MUSIC_PATH=./data/music +DOWNLOAD_PATH=./data/downloads +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="lidarr-linuxserver" diff --git a/apps/lidarr-linuxserver/latest/data.yml b/apps/lidarr-linuxserver/latest/data.yml new file mode 100644 index 000000000..d8e17a9fe --- /dev/null +++ b/apps/lidarr-linuxserver/latest/data.yml @@ -0,0 +1,83 @@ +additionalProperties: + formFields: + - default: 8686 + 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/music + edit: true + envKey: MUSIC_PATH + labelEn: Music path + labelZh: 音乐目录 + label: + en: Music path + zh: 音乐目录 + zh-Hant: 音樂目錄 + ja: 音楽ディレクトリ + ko: 음악 디렉터리 + ru: Каталог музыки + ms: Laluan muzik + pt-br: Caminho de musicas + required: true + type: text + - default: ./data/downloads + edit: true + envKey: DOWNLOAD_PATH + labelEn: Downloads path + labelZh: 下载目录 + label: + en: Downloads path + zh: 下载目录 + zh-Hant: 下載目錄 + ja: ダウンロードディレクトリ + ko: 다운로드 디렉터리 + ru: Каталог загрузок + ms: Laluan muat turun + pt-br: Caminho de downloads + 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 diff --git a/apps/lidarr-linuxserver/latest/data/.gitkeep b/apps/lidarr-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/lidarr-linuxserver/latest/docker-compose.yml b/apps/lidarr-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..291d51b50 --- /dev/null +++ b/apps/lidarr-linuxserver/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + lidarr: + image: "linuxserver/lidarr:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8686" + volumes: + - "${CONFIG_PATH}:/config" + - "${MUSIC_PATH}:/music" + - "${DOWNLOAD_PATH}:/downloads" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" diff --git a/apps/lidarr-linuxserver/latest/scripts/init.sh b/apps/lidarr-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..ae44e2755 --- /dev/null +++ b/apps/lidarr-linuxserver/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config ./data/music ./data/downloads +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/lidarr-linuxserver/latest/scripts/uninstall.sh b/apps/lidarr-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/lidarr-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/lidarr-linuxserver/latest/scripts/upgrade.sh b/apps/lidarr-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/lidarr-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/lidarr-linuxserver/logo.png b/apps/lidarr-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c67989188716d4cfedbfa68c5257c9ffb01909 GIT binary patch literal 9563 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 FV1fz+s^9/dev/null || true diff --git a/apps/medusa-linuxserver/1.0.25/scripts/uninstall.sh b/apps/medusa-linuxserver/1.0.25/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/medusa-linuxserver/1.0.25/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/medusa-linuxserver/1.0.25/scripts/upgrade.sh b/apps/medusa-linuxserver/1.0.25/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/medusa-linuxserver/1.0.25/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/medusa-linuxserver/README.md b/apps/medusa-linuxserver/README.md new file mode 100644 index 000000000..d97813630 --- /dev/null +++ b/apps/medusa-linuxserver/README.md @@ -0,0 +1,32 @@ +# Medusa LinuxServer + +## 产品介绍 + +Medusa 是一个剧集库和下载自动化工具,可管理剧集、字幕和下载任务。本应用使用 LinuxServer.io 维护的 `linuxserver/medusa` 镜像。 + +## 主要功能 + +- 通过 Web UI 管理剧集库和下载任务 +- 持久化保存配置、剧集目录和下载目录 +- 容器使用 8081 端口,默认宿主端口为 8082 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 `http://服务器地址:HTTP端口` 访问 Web 界面。首次启动后请按应用页面提示完成媒体服务、索引器或资料库配置。 + +## Introduction + +Medusa is a TV library and download automation tool for managing shows, subtitles, and downloads. This app uses the LinuxServer.io maintained `linuxserver/medusa` image. + +## Features + +- Manage TV libraries and download tasks from the Web UI +- Persist configuration, TV folders, and downloads +- Use container port 8081 with host default 8082 +- Configure the container time zone + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/medusa-linuxserver/data.yml b/apps/medusa-linuxserver/data.yml new file mode 100644 index 000000000..c097f9d68 --- /dev/null +++ b/apps/medusa-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: Medusa LinuxServer +tags: +- Media +title: Medusa 剧集管理器 +description: Medusa 剧集管理器 +additionalProperties: + key: medusa-linuxserver + name: Medusa LinuxServer + tags: + - Media + shortDescZh: Medusa 剧集管理器 + shortDescEn: TV library manager maintained by LinuxServer.io + description: + en: TV library manager maintained by LinuxServer.io + zh: Medusa 剧集管理器 + zh-Hant: Medusa 劇集管理器 + ja: LinuxServer.io が保守するテレビ番組管理ツール + ko: LinuxServer.io에서 유지 관리하는 TV 라이브러리 관리자 + ru: Менеджер сериалов, поддерживаемый LinuxServer.io + ms: Pengurus siri TV yang diselenggara oleh LinuxServer.io + pt-br: Gerenciador de series mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://pymedusa.com/ + github: https://github.com/linuxserver/docker-medusa + document: https://docs.linuxserver.io/images/docker-medusa/ + architectures: + - amd64 + - arm64 diff --git a/apps/medusa-linuxserver/latest/.env.sample b/apps/medusa-linuxserver/latest/.env.sample new file mode 100644 index 000000000..ce5e383e8 --- /dev/null +++ b/apps/medusa-linuxserver/latest/.env.sample @@ -0,0 +1,6 @@ +PANEL_APP_PORT_HTTP=8082 +CONFIG_PATH=./data/config +TV_PATH=./data/tv +DOWNLOAD_PATH=./data/downloads +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="medusa-linuxserver" diff --git a/apps/medusa-linuxserver/latest/data.yml b/apps/medusa-linuxserver/latest/data.yml new file mode 100644 index 000000000..ee0df23b3 --- /dev/null +++ b/apps/medusa-linuxserver/latest/data.yml @@ -0,0 +1,83 @@ +additionalProperties: + formFields: + - default: 8082 + 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/tv + edit: true + envKey: TV_PATH + labelEn: TV path + labelZh: 剧集目录 + label: + en: TV path + zh: 剧集目录 + zh-Hant: 劇集目錄 + ja: テレビ番組ディレクトリ + ko: TV 디렉터리 + ru: Каталог сериалов + ms: Laluan rancangan TV + pt-br: Caminho de series + required: true + type: text + - default: ./data/downloads + edit: true + envKey: DOWNLOAD_PATH + labelEn: Downloads path + labelZh: 下载目录 + label: + en: Downloads path + zh: 下载目录 + zh-Hant: 下載目錄 + ja: ダウンロードディレクトリ + ko: 다운로드 디렉터리 + ru: Каталог загрузок + ms: Laluan muat turun + pt-br: Caminho de downloads + 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 diff --git a/apps/medusa-linuxserver/latest/data/.gitkeep b/apps/medusa-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/medusa-linuxserver/latest/docker-compose.yml b/apps/medusa-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..5cf649a2d --- /dev/null +++ b/apps/medusa-linuxserver/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + medusa: + image: "linuxserver/medusa:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8081" + volumes: + - "${CONFIG_PATH}:/config" + - "${DOWNLOAD_PATH}:/downloads" + - "${TV_PATH}:/tv" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" diff --git a/apps/medusa-linuxserver/latest/scripts/init.sh b/apps/medusa-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..3c30b7ec6 --- /dev/null +++ b/apps/medusa-linuxserver/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config ./data/tv ./data/downloads +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/medusa-linuxserver/latest/scripts/uninstall.sh b/apps/medusa-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/medusa-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/medusa-linuxserver/latest/scripts/upgrade.sh b/apps/medusa-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/medusa-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/medusa-linuxserver/logo.png b/apps/medusa-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1a98280317602afc9e717e0f2c939a946fef75a4 GIT binary patch literal 2931 zcmX|D2{aVk7ax*c*=g*CQI^5XV9;b{3?f@uhwN(;63X_;k~L-P8)9seb;!hNd>+&(Qi8{PurH4a9%TV}Q{5E!NQdkJLO)Kj!}x|6log zx8LNy`1q7xxqk$Ia#f*lxwGFIraeIyde)z$6k(`T|( z7};73C{tS$4&t(a0pj#egkywtRrK{QHZ?V2FuFWAgaBHpySpbQ=B}Wiu$R|0d;6<4 zHnwCk`N|cGva)hcoI2=%CMZ;$^(N}%O`U>*LQ%-s&d$!@;EmtbGPy{WYucu!=3*$YfPfHCP()b;x)Yd4JbsvSL03#I0GtMKUB#BdOmp?D z^wGcd`P9ahrnlVWVH9rkkY1qViVPP}ca36Oo{`8q`%F>c8x0l9Gu}EVA1(( z1x1UfI7{%_XWcITSniGvMf+Zs)Li8{V+IVXOU2@6wN}Zu_Y$oDJmym39EK?9xt6YI-P?H`jPl70KMn!a;{mlCovaiTDrNd z^aH0MG2~f$qOEItZZ|&s1$YRTzOgZj4EaIh07_| zek(PU0J|_bm&D9#^TP(-StyuVs+| zDT9`+p*c6P8(Y_4<0gKH1-1M+n{}RSqMx|lnR#-DqK?J`ZeszQeu6_!3CyD5HuB-% z()pr}+Uuhm)McnWbC?eWL5P)ca^LDH?1z}aep)xj*)asJW_TsPyz~ergy)$0d-Nne zr7RGY+UmIdWzsSt0E0I4fP6z za<=HVJeRYw>&|GNWYm$sB88MU=$2xcxCMfVTKZd%(3QVb#X0nE{v=-OBG^NkzdK7s*UXBlYz~;7(BaDa`chQ$blF951&BCeaq@9iU zw)$vJrzi72cK^D?MI1n9JAhBVbFCs}eAY~vg$FgpuDj2K<`%9MJkzYgUtm_+ONi0PP9Par^^(8*qjWpBGll_OQH*FQ&LW;n zGmpkyUp}wF!Ir7kL=Q*QxkBgDay%5=b!}{a1W_qWY&Q4-rh)N`3DxVRJ1q=J_TS_dBF1CzXzgcR0e+S(+{(Sn| z&s$z>lQ%9b-wuW^r$+9zkoKBVwgM>C(qv;`K(LSW7{mILMUsup5(E21KANL;fFx^aoE#%uwjSJ)?9A7?$pT4D8 zXtj*43Nb9aJiEL8zDyf$<;QWbvGw7@*VeYfHwE&J`{CshhYbRXaJ=K!3nEWsCNN*e zU*!LTW+heG(8(=)DsbMWql7@lgIR3>yX5qO1AYX2VKz4vOGU38BnIo%t+)19Vo1h*JvoKMT`%n_)%$_Iy1cBpdFWT-ImCF;oQKTPn|3W znpE$4#O9^V8Q1@60-jFef)+aX4o1hWoW*0hY24hkB0N&#B7;5t_~C)K7cj<3vm(}F zJ~py1D%X*J&ypCJ9;7{$>E+6OH|*z0V}GMtEa*=qoqhL^}R#fEs4x2vcZjGKP3zEv9D9**jYVMs9Xj9p9{+6MO)b z@*EkPRi|2(TP~)&d*J8XQNg;&ucWPKAS^eUW~W9>aG5zVyM7qmjFLi|calX(Nc8JEZO6_($B!1M3oEZx-RAS>pRSKmUPnV79Bmzvi?8H%h6RO+ahB4|i zd^ZU9-4)M56XI*kZ+P11QK*Nu ze;S|V7f#%e1a!nXtJX2FGNB(~E{dA>O^z~|OxGF4aQHv!4=MCBf@WZS{P?hj`WX|9 zd~xfl&E1yLnt-a(b1saSQQZ!HBRu;PAzoveD#XB?$GJJf+%RYI!yw-W{&yQC6j*Vv z9`m*2Z8llqdXkqC-K@Kwh~3t!_8qist4?xfA=j!a6YWeUsW(CHa}xsZ^Y_?RkQT+| sX+_P1%QYIGGRTZBMzRmq&L0W9(N>o@X/dev/null || true diff --git a/apps/overseerr-linuxserver/1.35.0/scripts/uninstall.sh b/apps/overseerr-linuxserver/1.35.0/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/overseerr-linuxserver/1.35.0/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/overseerr-linuxserver/1.35.0/scripts/upgrade.sh b/apps/overseerr-linuxserver/1.35.0/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/overseerr-linuxserver/1.35.0/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/overseerr-linuxserver/README.md b/apps/overseerr-linuxserver/README.md new file mode 100644 index 000000000..dd1553eb6 --- /dev/null +++ b/apps/overseerr-linuxserver/README.md @@ -0,0 +1,32 @@ +# Overseerr LinuxServer + +## 产品介绍 + +Overseerr 是一个面向 Plex 的媒体请求和发现平台,可与 Sonarr、Radarr 集成。本应用使用 LinuxServer.io 维护的 `linuxserver/overseerr` 镜像。 + +## 主要功能 + +- 通过 Web UI 发现和请求媒体内容 +- 持久化保存配置和请求数据 +- 使用 5055 端口提供 Web 管理界面 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 `http://服务器地址:HTTP端口` 访问 Web 界面。首次启动后请按应用页面提示完成媒体服务、索引器或资料库配置。 + +## Introduction + +Overseerr is a media request and discovery platform for Plex that integrates with Sonarr and Radarr. This app uses the LinuxServer.io maintained `linuxserver/overseerr` image. + +## Features + +- Discover and request media from the Web UI +- Persist configuration and request data +- Expose the Web interface on port 5055 +- Configure the container time zone + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/overseerr-linuxserver/data.yml b/apps/overseerr-linuxserver/data.yml new file mode 100644 index 000000000..0a4cfdf38 --- /dev/null +++ b/apps/overseerr-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: Overseerr LinuxServer +tags: +- Media +title: Overseerr 媒体请求平台 +description: Overseerr 媒体请求平台 +additionalProperties: + key: overseerr-linuxserver + name: Overseerr LinuxServer + tags: + - Media + shortDescZh: Overseerr 媒体请求平台 + shortDescEn: Media request platform maintained by LinuxServer.io + description: + en: Media request platform maintained by LinuxServer.io + zh: Overseerr 媒体请求平台 + zh-Hant: Overseerr 媒體請求平台 + ja: LinuxServer.io が保守するメディアリクエストプラットフォーム + ko: LinuxServer.io에서 유지 관리하는 미디어 요청 플랫폼 + ru: Платформа запросов медиа, поддерживаемая LinuxServer.io + ms: Platform permintaan media yang diselenggara oleh LinuxServer.io + pt-br: Plataforma de solicitacoes de midia mantida pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://overseerr.dev/ + github: https://github.com/linuxserver/docker-overseerr + document: https://docs.linuxserver.io/images/docker-overseerr/ + architectures: + - amd64 + - arm64 diff --git a/apps/overseerr-linuxserver/latest/.env.sample b/apps/overseerr-linuxserver/latest/.env.sample new file mode 100644 index 000000000..73d033253 --- /dev/null +++ b/apps/overseerr-linuxserver/latest/.env.sample @@ -0,0 +1,4 @@ +PANEL_APP_PORT_HTTP=5055 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="overseerr-linuxserver" diff --git a/apps/overseerr-linuxserver/latest/data.yml b/apps/overseerr-linuxserver/latest/data.yml new file mode 100644 index 000000000..fe6b35e3a --- /dev/null +++ b/apps/overseerr-linuxserver/latest/data.yml @@ -0,0 +1,51 @@ +additionalProperties: + formFields: + - default: 5055 + 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: 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 diff --git a/apps/overseerr-linuxserver/latest/data/.gitkeep b/apps/overseerr-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/overseerr-linuxserver/latest/docker-compose.yml b/apps/overseerr-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..c4a9cd327 --- /dev/null +++ b/apps/overseerr-linuxserver/latest/docker-compose.yml @@ -0,0 +1,20 @@ +networks: + 1panel-network: + external: true +services: + overseerr: + image: "linuxserver/overseerr:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:5055" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" diff --git a/apps/overseerr-linuxserver/latest/scripts/init.sh b/apps/overseerr-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/overseerr-linuxserver/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/overseerr-linuxserver/latest/scripts/uninstall.sh b/apps/overseerr-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/overseerr-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/overseerr-linuxserver/latest/scripts/upgrade.sh b/apps/overseerr-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/overseerr-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/overseerr-linuxserver/logo.png b/apps/overseerr-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0a541f30ea0e2978ce358fe98e50a91def99e4 GIT binary patch literal 6654 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 literal 0 HcmV?d00001 diff --git a/apps/prowlarr-linuxserver/2.4.0/.env.sample b/apps/prowlarr-linuxserver/2.4.0/.env.sample new file mode 100644 index 000000000..8ef14203e --- /dev/null +++ b/apps/prowlarr-linuxserver/2.4.0/.env.sample @@ -0,0 +1,4 @@ +PANEL_APP_PORT_HTTP=9696 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="prowlarr-linuxserver" diff --git a/apps/prowlarr-linuxserver/2.4.0/data.yml b/apps/prowlarr-linuxserver/2.4.0/data.yml new file mode 100644 index 000000000..2eb5d2f40 --- /dev/null +++ b/apps/prowlarr-linuxserver/2.4.0/data.yml @@ -0,0 +1,51 @@ +additionalProperties: + formFields: + - default: 9696 + 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: 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 diff --git a/apps/prowlarr-linuxserver/2.4.0/data/.gitkeep b/apps/prowlarr-linuxserver/2.4.0/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/prowlarr-linuxserver/2.4.0/docker-compose.yml b/apps/prowlarr-linuxserver/2.4.0/docker-compose.yml new file mode 100644 index 000000000..970f569d2 --- /dev/null +++ b/apps/prowlarr-linuxserver/2.4.0/docker-compose.yml @@ -0,0 +1,20 @@ +networks: + 1panel-network: + external: true +services: + prowlarr: + image: "linuxserver/prowlarr:2.4.0" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:9696" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" diff --git a/apps/prowlarr-linuxserver/2.4.0/scripts/init.sh b/apps/prowlarr-linuxserver/2.4.0/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/prowlarr-linuxserver/2.4.0/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/prowlarr-linuxserver/2.4.0/scripts/uninstall.sh b/apps/prowlarr-linuxserver/2.4.0/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/prowlarr-linuxserver/2.4.0/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/prowlarr-linuxserver/2.4.0/scripts/upgrade.sh b/apps/prowlarr-linuxserver/2.4.0/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/prowlarr-linuxserver/2.4.0/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/prowlarr-linuxserver/README.md b/apps/prowlarr-linuxserver/README.md new file mode 100644 index 000000000..5df5a61b3 --- /dev/null +++ b/apps/prowlarr-linuxserver/README.md @@ -0,0 +1,32 @@ +# Prowlarr LinuxServer + +## 产品介绍 + +Prowlarr 是面向 Sonarr、Radarr、Lidarr 等应用的索引器管理工具。本应用使用 LinuxServer.io 维护的 `linuxserver/prowlarr` 镜像。 + +## 主要功能 + +- 通过 Web UI 管理索引器和应用连接 +- 持久化保存配置和数据库 +- 使用 9696 端口提供 Web 管理界面 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 `http://服务器地址:HTTP端口` 访问 Web 界面。首次启动后请按应用页面提示完成媒体服务、索引器或资料库配置。 + +## Introduction + +Prowlarr is an indexer manager for applications such as Sonarr, Radarr, and Lidarr. This app uses the LinuxServer.io maintained `linuxserver/prowlarr` image. + +## Features + +- Manage indexers and app connections from the Web UI +- Persist configuration and database files +- Expose the Web interface on port 9696 +- Configure the container time zone + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/prowlarr-linuxserver/data.yml b/apps/prowlarr-linuxserver/data.yml new file mode 100644 index 000000000..a69536f23 --- /dev/null +++ b/apps/prowlarr-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: Prowlarr LinuxServer +tags: +- Media +title: Prowlarr 索引器管理器 +description: Prowlarr 索引器管理器 +additionalProperties: + key: prowlarr-linuxserver + name: Prowlarr LinuxServer + tags: + - Media + shortDescZh: Prowlarr 索引器管理器 + shortDescEn: Indexer manager maintained by LinuxServer.io + description: + en: Indexer manager maintained by LinuxServer.io + zh: Prowlarr 索引器管理器 + zh-Hant: Prowlarr 索引器管理器 + ja: LinuxServer.io が保守するインデクサー管理ツール + ko: LinuxServer.io에서 유지 관리하는 인덱서 관리자 + ru: Менеджер индексаторов, поддерживаемый LinuxServer.io + ms: Pengurus pengindeks yang diselenggara oleh LinuxServer.io + pt-br: Gerenciador de indexadores mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://prowlarr.com/ + github: https://github.com/linuxserver/docker-prowlarr + document: https://docs.linuxserver.io/images/docker-prowlarr/ + architectures: + - amd64 + - arm64 diff --git a/apps/prowlarr-linuxserver/latest/.env.sample b/apps/prowlarr-linuxserver/latest/.env.sample new file mode 100644 index 000000000..8ef14203e --- /dev/null +++ b/apps/prowlarr-linuxserver/latest/.env.sample @@ -0,0 +1,4 @@ +PANEL_APP_PORT_HTTP=9696 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="prowlarr-linuxserver" diff --git a/apps/prowlarr-linuxserver/latest/data.yml b/apps/prowlarr-linuxserver/latest/data.yml new file mode 100644 index 000000000..2eb5d2f40 --- /dev/null +++ b/apps/prowlarr-linuxserver/latest/data.yml @@ -0,0 +1,51 @@ +additionalProperties: + formFields: + - default: 9696 + 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: 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 diff --git a/apps/prowlarr-linuxserver/latest/data/.gitkeep b/apps/prowlarr-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/prowlarr-linuxserver/latest/docker-compose.yml b/apps/prowlarr-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..8bb3c7b89 --- /dev/null +++ b/apps/prowlarr-linuxserver/latest/docker-compose.yml @@ -0,0 +1,20 @@ +networks: + 1panel-network: + external: true +services: + prowlarr: + image: "linuxserver/prowlarr:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:9696" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" diff --git a/apps/prowlarr-linuxserver/latest/scripts/init.sh b/apps/prowlarr-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/prowlarr-linuxserver/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/prowlarr-linuxserver/latest/scripts/uninstall.sh b/apps/prowlarr-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/prowlarr-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/prowlarr-linuxserver/latest/scripts/upgrade.sh b/apps/prowlarr-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/prowlarr-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/prowlarr-linuxserver/logo.png b/apps/prowlarr-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d34afe925b532d0b01e5b74bf2119f2842bc74e1 GIT binary patch literal 8444 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/dev/null || true diff --git a/apps/sickgear-linuxserver/3.35.7/scripts/uninstall.sh b/apps/sickgear-linuxserver/3.35.7/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/sickgear-linuxserver/3.35.7/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/sickgear-linuxserver/3.35.7/scripts/upgrade.sh b/apps/sickgear-linuxserver/3.35.7/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/sickgear-linuxserver/3.35.7/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/sickgear-linuxserver/README.md b/apps/sickgear-linuxserver/README.md new file mode 100644 index 000000000..9f44820db --- /dev/null +++ b/apps/sickgear-linuxserver/README.md @@ -0,0 +1,32 @@ +# SickGear LinuxServer + +## 产品介绍 + +SickGear 是一个剧集库和下载自动化工具,可管理剧集、下载器和媒体目录。本应用使用 LinuxServer.io 维护的 `linuxserver/sickgear` 镜像。 + +## 主要功能 + +- 通过 Web UI 管理剧集库和下载任务 +- 持久化保存配置、剧集目录和下载目录 +- 使用 8081 端口提供 Web 管理界面 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 `http://服务器地址:HTTP端口` 访问 Web 界面。首次启动后请按应用页面提示完成媒体服务、索引器或资料库配置。 + +## Introduction + +SickGear is a TV library and download automation tool for managing shows, downloaders, and media folders. This app uses the LinuxServer.io maintained `linuxserver/sickgear` image. + +## Features + +- Manage TV libraries and download tasks from the Web UI +- Persist configuration, TV folders, and downloads +- Expose the Web interface on port 8081 +- Configure the container time zone + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/sickgear-linuxserver/data.yml b/apps/sickgear-linuxserver/data.yml new file mode 100644 index 000000000..ad1fc365a --- /dev/null +++ b/apps/sickgear-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: SickGear LinuxServer +tags: +- Media +title: SickGear 剧集管理器 +description: SickGear 剧集管理器 +additionalProperties: + key: sickgear-linuxserver + name: SickGear LinuxServer + tags: + - Media + shortDescZh: SickGear 剧集管理器 + shortDescEn: TV library manager maintained by LinuxServer.io + description: + en: TV library manager maintained by LinuxServer.io + zh: SickGear 剧集管理器 + zh-Hant: SickGear 劇集管理器 + ja: LinuxServer.io が保守するテレビ番組管理ツール + ko: LinuxServer.io에서 유지 관리하는 TV 라이브러리 관리자 + ru: Менеджер сериалов, поддерживаемый LinuxServer.io + ms: Pengurus siri TV yang diselenggara oleh LinuxServer.io + pt-br: Gerenciador de series mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://github.com/SickGear/SickGear + github: https://github.com/linuxserver/docker-sickgear + document: https://docs.linuxserver.io/images/docker-sickgear/ + architectures: + - amd64 + - arm64 diff --git a/apps/sickgear-linuxserver/latest/.env.sample b/apps/sickgear-linuxserver/latest/.env.sample new file mode 100644 index 000000000..306a97452 --- /dev/null +++ b/apps/sickgear-linuxserver/latest/.env.sample @@ -0,0 +1,6 @@ +PANEL_APP_PORT_HTTP=8081 +CONFIG_PATH=./data/config +TV_PATH=./data/tv +DOWNLOAD_PATH=./data/downloads +TIME_ZONE=Asia/Shanghai +CONTAINER_NAME="sickgear-linuxserver" diff --git a/apps/sickgear-linuxserver/latest/data.yml b/apps/sickgear-linuxserver/latest/data.yml new file mode 100644 index 000000000..0a1921ae4 --- /dev/null +++ b/apps/sickgear-linuxserver/latest/data.yml @@ -0,0 +1,83 @@ +additionalProperties: + formFields: + - default: 8081 + 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/tv + edit: true + envKey: TV_PATH + labelEn: TV path + labelZh: 剧集目录 + label: + en: TV path + zh: 剧集目录 + zh-Hant: 劇集目錄 + ja: テレビ番組ディレクトリ + ko: TV 디렉터리 + ru: Каталог сериалов + ms: Laluan rancangan TV + pt-br: Caminho de series + required: true + type: text + - default: ./data/downloads + edit: true + envKey: DOWNLOAD_PATH + labelEn: Downloads path + labelZh: 下载目录 + label: + en: Downloads path + zh: 下载目录 + zh-Hant: 下載目錄 + ja: ダウンロードディレクトリ + ko: 다운로드 디렉터리 + ru: Каталог загрузок + ms: Laluan muat turun + pt-br: Caminho de downloads + 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 diff --git a/apps/sickgear-linuxserver/latest/data/.gitkeep b/apps/sickgear-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/sickgear-linuxserver/latest/docker-compose.yml b/apps/sickgear-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..59fefa2f1 --- /dev/null +++ b/apps/sickgear-linuxserver/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + sickgear: + image: "linuxserver/sickgear:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8081" + volumes: + - "${CONFIG_PATH}:/config" + - "${TV_PATH}:/tv" + - "${DOWNLOAD_PATH}:/downloads" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" diff --git a/apps/sickgear-linuxserver/latest/scripts/init.sh b/apps/sickgear-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..3c30b7ec6 --- /dev/null +++ b/apps/sickgear-linuxserver/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +mkdir -p ./data/config ./data/tv ./data/downloads +chown -R 1000:1000 ./data 2>/dev/null || true diff --git a/apps/sickgear-linuxserver/latest/scripts/uninstall.sh b/apps/sickgear-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/sickgear-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/sickgear-linuxserver/latest/scripts/upgrade.sh b/apps/sickgear-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/sickgear-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/sickgear-linuxserver/logo.png b/apps/sickgear-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5f8c3afe16a02f984625e3d051069baa78397a GIT binary patch literal 8783 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