From b486d8697fb033a73b9acf97c8dc08d0ba0bf4a4 Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Wed, 24 Jun 2026 16:40:13 +0800 Subject: [PATCH] Add LinuxServer desktop adapters --- apps/citron-linuxserver/2026.02.1/.env.sample | 5 ++ apps/citron-linuxserver/2026.02.1/data.yml | 68 ++++++++++++++++++ .../2026.02.1/data/.gitkeep | 0 .../2026.02.1/docker-compose.yml | 22 ++++++ .../2026.02.1/scripts/init.sh | 4 ++ .../2026.02.1/scripts/uninstall.sh | 2 + .../2026.02.1/scripts/upgrade.sh | 2 + apps/citron-linuxserver/README.md | 36 ++++++++++ apps/citron-linuxserver/data.yml | 29 ++++++++ apps/citron-linuxserver/latest/.env.sample | 5 ++ apps/citron-linuxserver/latest/data.yml | 68 ++++++++++++++++++ apps/citron-linuxserver/latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 22 ++++++ .../citron-linuxserver/latest/scripts/init.sh | 4 ++ .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 2 + apps/citron-linuxserver/logo.png | Bin 0 -> 3534 bytes apps/eden-linuxserver/0.2.1/.env.sample | 5 ++ apps/eden-linuxserver/0.2.1/data.yml | 68 ++++++++++++++++++ apps/eden-linuxserver/0.2.1/data/.gitkeep | 0 .../eden-linuxserver/0.2.1/docker-compose.yml | 22 ++++++ apps/eden-linuxserver/0.2.1/scripts/init.sh | 4 ++ .../0.2.1/scripts/uninstall.sh | 2 + .../eden-linuxserver/0.2.1/scripts/upgrade.sh | 2 + apps/eden-linuxserver/README.md | 36 ++++++++++ apps/eden-linuxserver/data.yml | 29 ++++++++ apps/eden-linuxserver/latest/.env.sample | 5 ++ apps/eden-linuxserver/latest/data.yml | 68 ++++++++++++++++++ apps/eden-linuxserver/latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 22 ++++++ apps/eden-linuxserver/latest/scripts/init.sh | 4 ++ .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 2 + apps/eden-linuxserver/logo.png | Bin 0 -> 9710 bytes .../0.5.1/.env.sample | 5 ++ .../series-troxide-linuxserver/0.5.1/data.yml | 68 ++++++++++++++++++ .../0.5.1/data/.gitkeep | 0 .../0.5.1/docker-compose.yml | 22 ++++++ .../0.5.1/scripts/init.sh | 4 ++ .../0.5.1/scripts/uninstall.sh | 2 + .../0.5.1/scripts/upgrade.sh | 2 + apps/series-troxide-linuxserver/README.md | 36 ++++++++++ apps/series-troxide-linuxserver/data.yml | 30 ++++++++ .../latest/.env.sample | 5 ++ .../latest/data.yml | 68 ++++++++++++++++++ .../latest/data/.gitkeep | 0 .../latest/docker-compose.yml | 22 ++++++ .../latest/scripts/init.sh | 4 ++ .../latest/scripts/uninstall.sh | 2 + .../latest/scripts/upgrade.sh | 2 + apps/series-troxide-linuxserver/logo.png | Bin 0 -> 4550 bytes 51 files changed, 814 insertions(+) create mode 100644 apps/citron-linuxserver/2026.02.1/.env.sample create mode 100644 apps/citron-linuxserver/2026.02.1/data.yml create mode 100644 apps/citron-linuxserver/2026.02.1/data/.gitkeep create mode 100644 apps/citron-linuxserver/2026.02.1/docker-compose.yml create mode 100755 apps/citron-linuxserver/2026.02.1/scripts/init.sh create mode 100755 apps/citron-linuxserver/2026.02.1/scripts/uninstall.sh create mode 100755 apps/citron-linuxserver/2026.02.1/scripts/upgrade.sh create mode 100644 apps/citron-linuxserver/README.md create mode 100644 apps/citron-linuxserver/data.yml create mode 100644 apps/citron-linuxserver/latest/.env.sample create mode 100644 apps/citron-linuxserver/latest/data.yml create mode 100644 apps/citron-linuxserver/latest/data/.gitkeep create mode 100644 apps/citron-linuxserver/latest/docker-compose.yml create mode 100755 apps/citron-linuxserver/latest/scripts/init.sh create mode 100755 apps/citron-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/citron-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/citron-linuxserver/logo.png create mode 100644 apps/eden-linuxserver/0.2.1/.env.sample create mode 100644 apps/eden-linuxserver/0.2.1/data.yml create mode 100644 apps/eden-linuxserver/0.2.1/data/.gitkeep create mode 100644 apps/eden-linuxserver/0.2.1/docker-compose.yml create mode 100755 apps/eden-linuxserver/0.2.1/scripts/init.sh create mode 100755 apps/eden-linuxserver/0.2.1/scripts/uninstall.sh create mode 100755 apps/eden-linuxserver/0.2.1/scripts/upgrade.sh create mode 100644 apps/eden-linuxserver/README.md create mode 100644 apps/eden-linuxserver/data.yml create mode 100644 apps/eden-linuxserver/latest/.env.sample create mode 100644 apps/eden-linuxserver/latest/data.yml create mode 100644 apps/eden-linuxserver/latest/data/.gitkeep create mode 100644 apps/eden-linuxserver/latest/docker-compose.yml create mode 100755 apps/eden-linuxserver/latest/scripts/init.sh create mode 100755 apps/eden-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/eden-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/eden-linuxserver/logo.png create mode 100644 apps/series-troxide-linuxserver/0.5.1/.env.sample create mode 100644 apps/series-troxide-linuxserver/0.5.1/data.yml create mode 100644 apps/series-troxide-linuxserver/0.5.1/data/.gitkeep create mode 100644 apps/series-troxide-linuxserver/0.5.1/docker-compose.yml create mode 100755 apps/series-troxide-linuxserver/0.5.1/scripts/init.sh create mode 100755 apps/series-troxide-linuxserver/0.5.1/scripts/uninstall.sh create mode 100755 apps/series-troxide-linuxserver/0.5.1/scripts/upgrade.sh create mode 100644 apps/series-troxide-linuxserver/README.md create mode 100644 apps/series-troxide-linuxserver/data.yml create mode 100644 apps/series-troxide-linuxserver/latest/.env.sample create mode 100644 apps/series-troxide-linuxserver/latest/data.yml create mode 100644 apps/series-troxide-linuxserver/latest/data/.gitkeep create mode 100644 apps/series-troxide-linuxserver/latest/docker-compose.yml create mode 100755 apps/series-troxide-linuxserver/latest/scripts/init.sh create mode 100755 apps/series-troxide-linuxserver/latest/scripts/uninstall.sh create mode 100755 apps/series-troxide-linuxserver/latest/scripts/upgrade.sh create mode 100644 apps/series-troxide-linuxserver/logo.png diff --git a/apps/citron-linuxserver/2026.02.1/.env.sample b/apps/citron-linuxserver/2026.02.1/.env.sample new file mode 100644 index 000000000..688946eae --- /dev/null +++ b/apps/citron-linuxserver/2026.02.1/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=3000 +PANEL_APP_PORT_HTTPS=3001 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai diff --git a/apps/citron-linuxserver/2026.02.1/data.yml b/apps/citron-linuxserver/2026.02.1/data.yml new file mode 100644 index 000000000..a59985549 --- /dev/null +++ b/apps/citron-linuxserver/2026.02.1/data.yml @@ -0,0 +1,68 @@ +additionalProperties: + formFields: + - default: 3000 + 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: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + 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/citron-linuxserver/2026.02.1/data/.gitkeep b/apps/citron-linuxserver/2026.02.1/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/citron-linuxserver/2026.02.1/docker-compose.yml b/apps/citron-linuxserver/2026.02.1/docker-compose.yml new file mode 100644 index 000000000..4168dcdc1 --- /dev/null +++ b/apps/citron-linuxserver/2026.02.1/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + citron: + image: "linuxserver/citron:2026.02.1" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + shm_size: "1gb" + labels: + createdBy: "Apps" diff --git a/apps/citron-linuxserver/2026.02.1/scripts/init.sh b/apps/citron-linuxserver/2026.02.1/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/citron-linuxserver/2026.02.1/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/citron-linuxserver/2026.02.1/scripts/uninstall.sh b/apps/citron-linuxserver/2026.02.1/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/citron-linuxserver/2026.02.1/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/citron-linuxserver/2026.02.1/scripts/upgrade.sh b/apps/citron-linuxserver/2026.02.1/scripts/upgrade.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/citron-linuxserver/2026.02.1/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/citron-linuxserver/README.md b/apps/citron-linuxserver/README.md new file mode 100644 index 000000000..bed04cd82 --- /dev/null +++ b/apps/citron-linuxserver/README.md @@ -0,0 +1,36 @@ +# Citron LinuxServer + +## 产品介绍 + +Citron LinuxServer 使用 LinuxServer.io 维护的 `linuxserver/citron` 镜像,提供 Citron Switch 模拟器桌面 能力。 + +## 主要功能 + +- 通过浏览器访问桌面应用 +- 持久化保存配置和应用数据 +- 使用 HTTP/HTTPS 端口提供 KasmVNC 桌面入口 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 HTTP 端口访问桌面界面;HTTPS 端口可用于加密访问。 + +## Introduction + +Citron LinuxServer uses the LinuxServer.io maintained `linuxserver/citron` image for a browser-accessible desktop application. + +## Features + +- Access the desktop application from a browser +- Persist configuration and application data +- Expose KasmVNC desktop access through HTTP and HTTPS ports +- Configure the container time zone + +## Access + +After installation, open the desktop from the 1Panel app entry or the HTTP port; the HTTPS port can be used for encrypted access. + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/citron-linuxserver/data.yml b/apps/citron-linuxserver/data.yml new file mode 100644 index 000000000..b039f9ed0 --- /dev/null +++ b/apps/citron-linuxserver/data.yml @@ -0,0 +1,29 @@ +name: Citron LinuxServer +tags: +- Game +title: Citron Switch 模拟器桌面 +description: Citron Switch 模拟器桌面 +additionalProperties: + key: citron-linuxserver + name: Citron LinuxServer + tags: + - Game + shortDescZh: Citron Switch 模拟器桌面 + shortDescEn: Switch emulator desktop maintained by LinuxServer.io + description: + en: Switch emulator desktop maintained by LinuxServer.io + zh: Citron Switch 模拟器桌面 + zh-Hant: Citron Switch 模擬器桌面 + ja: LinuxServer.io が保守する Switch エミュレーターデスクトップ + ko: LinuxServer.io에서 유지 관리하는 Switch 에뮬레이터 데스크톱 + ru: Рабочий стол эмулятора Switch, поддерживаемый LinuxServer.io + ms: Desktop emulator Switch yang diselenggara oleh LinuxServer.io + pt-br: Desktop de emulador Switch mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://citron-emu.org/ + github: https://github.com/linuxserver/docker-citron + document: https://docs.linuxserver.io/deprecated_images/docker-citron/ + architectures: + - amd64 diff --git a/apps/citron-linuxserver/latest/.env.sample b/apps/citron-linuxserver/latest/.env.sample new file mode 100644 index 000000000..688946eae --- /dev/null +++ b/apps/citron-linuxserver/latest/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=3000 +PANEL_APP_PORT_HTTPS=3001 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai diff --git a/apps/citron-linuxserver/latest/data.yml b/apps/citron-linuxserver/latest/data.yml new file mode 100644 index 000000000..a59985549 --- /dev/null +++ b/apps/citron-linuxserver/latest/data.yml @@ -0,0 +1,68 @@ +additionalProperties: + formFields: + - default: 3000 + 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: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + 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/citron-linuxserver/latest/data/.gitkeep b/apps/citron-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/citron-linuxserver/latest/docker-compose.yml b/apps/citron-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..0866d9a80 --- /dev/null +++ b/apps/citron-linuxserver/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + citron: + image: "linuxserver/citron:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + shm_size: "1gb" + labels: + createdBy: "Apps" diff --git a/apps/citron-linuxserver/latest/scripts/init.sh b/apps/citron-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/citron-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/citron-linuxserver/latest/scripts/uninstall.sh b/apps/citron-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/citron-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/citron-linuxserver/latest/scripts/upgrade.sh b/apps/citron-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/citron-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/citron-linuxserver/logo.png b/apps/citron-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8b898de83988b87363ffd00793074c8ab008bc84 GIT binary patch literal 3534 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 Y;Bnlca|m(v>K6deRyROY!fnF-3;x69bpQYW literal 0 HcmV?d00001 diff --git a/apps/eden-linuxserver/0.2.1/.env.sample b/apps/eden-linuxserver/0.2.1/.env.sample new file mode 100644 index 000000000..688946eae --- /dev/null +++ b/apps/eden-linuxserver/0.2.1/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=3000 +PANEL_APP_PORT_HTTPS=3001 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai diff --git a/apps/eden-linuxserver/0.2.1/data.yml b/apps/eden-linuxserver/0.2.1/data.yml new file mode 100644 index 000000000..a59985549 --- /dev/null +++ b/apps/eden-linuxserver/0.2.1/data.yml @@ -0,0 +1,68 @@ +additionalProperties: + formFields: + - default: 3000 + 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: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + 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/eden-linuxserver/0.2.1/data/.gitkeep b/apps/eden-linuxserver/0.2.1/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/eden-linuxserver/0.2.1/docker-compose.yml b/apps/eden-linuxserver/0.2.1/docker-compose.yml new file mode 100644 index 000000000..89fa13e07 --- /dev/null +++ b/apps/eden-linuxserver/0.2.1/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + eden: + image: "linuxserver/eden:0.2.1" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + shm_size: "1gb" + labels: + createdBy: "Apps" diff --git a/apps/eden-linuxserver/0.2.1/scripts/init.sh b/apps/eden-linuxserver/0.2.1/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/eden-linuxserver/0.2.1/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/eden-linuxserver/0.2.1/scripts/uninstall.sh b/apps/eden-linuxserver/0.2.1/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/eden-linuxserver/0.2.1/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/eden-linuxserver/0.2.1/scripts/upgrade.sh b/apps/eden-linuxserver/0.2.1/scripts/upgrade.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/eden-linuxserver/0.2.1/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/eden-linuxserver/README.md b/apps/eden-linuxserver/README.md new file mode 100644 index 000000000..95fbfce9b --- /dev/null +++ b/apps/eden-linuxserver/README.md @@ -0,0 +1,36 @@ +# Eden LinuxServer + +## 产品介绍 + +Eden LinuxServer 使用 LinuxServer.io 维护的 `linuxserver/eden` 镜像,提供 Eden Switch 模拟器桌面 能力。 + +## 主要功能 + +- 通过浏览器访问桌面应用 +- 持久化保存配置和应用数据 +- 使用 HTTP/HTTPS 端口提供 KasmVNC 桌面入口 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 HTTP 端口访问桌面界面;HTTPS 端口可用于加密访问。 + +## Introduction + +Eden LinuxServer uses the LinuxServer.io maintained `linuxserver/eden` image for a browser-accessible desktop application. + +## Features + +- Access the desktop application from a browser +- Persist configuration and application data +- Expose KasmVNC desktop access through HTTP and HTTPS ports +- Configure the container time zone + +## Access + +After installation, open the desktop from the 1Panel app entry or the HTTP port; the HTTPS port can be used for encrypted access. + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/eden-linuxserver/data.yml b/apps/eden-linuxserver/data.yml new file mode 100644 index 000000000..2d2084a1c --- /dev/null +++ b/apps/eden-linuxserver/data.yml @@ -0,0 +1,29 @@ +name: Eden LinuxServer +tags: +- Game +title: Eden Switch 模拟器桌面 +description: Eden Switch 模拟器桌面 +additionalProperties: + key: eden-linuxserver + name: Eden LinuxServer + tags: + - Game + shortDescZh: Eden Switch 模拟器桌面 + shortDescEn: Nintendo Switch emulator desktop maintained by LinuxServer.io + description: + en: Nintendo Switch emulator desktop maintained by LinuxServer.io + zh: Eden Switch 模拟器桌面 + zh-Hant: Eden Switch 模擬器桌面 + ja: LinuxServer.io が保守する Nintendo Switch エミュレーターデスクトップ + ko: LinuxServer.io에서 유지 관리하는 Nintendo Switch 에뮬레이터 데스크톱 + ru: Рабочий стол эмулятора Nintendo Switch, поддерживаемый LinuxServer.io + ms: Desktop emulator Nintendo Switch yang diselenggara oleh LinuxServer.io + pt-br: Desktop de emulador Nintendo Switch mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://eden-emu.dev/ + github: https://github.com/linuxserver/docker-eden + document: https://docs.linuxserver.io/images/docker-eden/ + architectures: + - amd64 diff --git a/apps/eden-linuxserver/latest/.env.sample b/apps/eden-linuxserver/latest/.env.sample new file mode 100644 index 000000000..688946eae --- /dev/null +++ b/apps/eden-linuxserver/latest/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=3000 +PANEL_APP_PORT_HTTPS=3001 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai diff --git a/apps/eden-linuxserver/latest/data.yml b/apps/eden-linuxserver/latest/data.yml new file mode 100644 index 000000000..a59985549 --- /dev/null +++ b/apps/eden-linuxserver/latest/data.yml @@ -0,0 +1,68 @@ +additionalProperties: + formFields: + - default: 3000 + 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: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + 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/eden-linuxserver/latest/data/.gitkeep b/apps/eden-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/eden-linuxserver/latest/docker-compose.yml b/apps/eden-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..43debef27 --- /dev/null +++ b/apps/eden-linuxserver/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + eden: + image: "linuxserver/eden:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + shm_size: "1gb" + labels: + createdBy: "Apps" diff --git a/apps/eden-linuxserver/latest/scripts/init.sh b/apps/eden-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/eden-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/eden-linuxserver/latest/scripts/uninstall.sh b/apps/eden-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/eden-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/eden-linuxserver/latest/scripts/upgrade.sh b/apps/eden-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/eden-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/eden-linuxserver/logo.png b/apps/eden-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..043f10d0dcae4bfa5c0df98a05c2a1d3aa8e3667 GIT binary patch literal 9710 zcmWk!cR1T$7mrmjirSl~S!(YsR>htbTh%I|_Esb42wDxbXRTPZTYFXP@Uv>Gm{rs+ zDc-#2dA|4lai4qcxo6z-`JQ{B8aCub!G008&(o@klj`=HEpV+taAIsytp03j10 z1K&N?C$w^=6lQLWPrZe_--riP%A{ZnzwAHxx?}kLTpN9*+@B+pS!7g_Xb^a%+_CH4 zCQSetmnomtAKUX8*->oTRm3DvhWnDibO^1E5VIFw_72f2*Hh>Jwy%%N7E`I&|De$T0N|b1)6%dAU7XE}c!m0U@n`7;n(-k4(dIqx5$yq|FWR277h!i|`ZqA9v$7sPK8EBT1>jnKn{=4*r}D3 zJK&co-5evXI(6ZbYtR2x;{PjTV%NoL=|#z-FH!DUAaw4_qH?fr4CK;=kKtG3xM1m9ugPUmkK=|SN1bl2yL}!1rD^}WmJppN$s=@^C-utZ`bpVc zOG`w{vfLbc&*Z1dE;<8O|H`uyGrbphJs)~@#L_r-A|REQFMNZF%~i?@F2EhHbU$ag zbl+CES^m)_wNDXIv4X(8>eoR^P|sffxFcdF${KfTgdQEC(O&acbqlY}PQTkK=qn{xvVZ$etZpg;YxQ%dhaHDb0jh<-sO~URQ_tR!B_Wkuz4Ck zqj{jr)28MAcEILW8+LdM49f9uOuT1S)3AIRr?%B}Gx{oC$i4FqueB8CqcOZMqenx7jH|(kDt*It4rA8C2*8{xBHt_TKYR9apoRH zkEn^2f7W$fw||`)6b$vsW=YX9NE8{E!b}DD5d;Cj`}oDFBU3(WRRj#d@7Gx z8(`cH_~550z4n7rq}c>ZZwd(rp5Y28WT3kvvR_NVWlXut#_9?tpM?qW!D%3#q{cV9 zgwg^48v->A-3O()52!O~`m)Xyz_(qszUb+%?yP?7#sq*lgDPl2Cj3VL2inh$Itd;q zy9&PaAv_n67eG|m;}sSKc?fB4aA(3^`-XQ-IZn?hZpf!t(lv3zxw#EiY&O18eW_XS zmX$J`zBgp*mwQ6dH$-ehfX$UqJHe@mZx9^dR2R-2v1^EUKliC=`Fz4c$>s%KAR$76 zYWZ7KzS2@as!7JW{>DV%4TVcC&0&BJ5VT_4J7BgK<6L1;r>krtj^>;?I#iPJYAv!UyuS?u!M6*?rPSgH z+HV!I{bGMsF=L; z6*eKkAzMS!zDs+_-l*|xT{i!+qNIt%o|cj%PEhR%?K4{LqzdkuEGgys1F_W4 zY(ZZuLBF_#` z{Fh;Hk7K%4)U%@2BP@r=jvj0m`c`6E%(4cR{xRR3A6|wV#o7Fc3zz`*GGBJx$m|6* zZjRWMd`<;~;C()#*0DvRWZ5x7s`^YZ5+mJbZN|IFSP?EM6#+y{bq=C6lKhAvsA?fo1jiJYP=JK|%G zUpvSX@l}`yVVU}%oO=pK`IGB$D9npYQ#EE)WdL0t+0VDex{9-~CqbXA#cFn)U~B-2Y^l)(k$!Oi zz==GD%#eZ`P4RL`6RSW62%izKTZ9Y@X$gFv_F}(K<0!QUdfyg>ES7YRQd^n^##olDY#>+?3YAZx z3k>$L`J{7E^CmvmL0(AwC$UlsS!}#$E^uKnHdp#)vXR=A!;b={;nB8fhSCDMAmkb0 zlMOqZ{7Aoos+1t`pMUywFvGrE5E%#=0Qo|c`-Ls@P_|If*9_&eXLR9Ll~a^>j~@;& zXEkMw;w*F;XkMorvmcW;w|zOW7bhvn^_5n#k=<3aF19#ja7C;b2xy;hO=FfB+ilb z$M5rZHbz6tmH|`-N&ai8%xoquzo<#y)#|e`L|m{5?@sjt7Gr4O<-0Xt1+JL{3(|nH za7972S$Kv%a|u$45#SMaU=;OB;pfz|5C1-&3V7V;Vj|N`Q*o2jPWOsb{Bn)8-|dIz z?>JP`c{&A-Ilq<|%%q)caMR-wB~9lQ{wl(C#qTK7vXXqNmZ8K z>K?HLqsyRBpQRR(IDzHpBykFFV3DRcxE%JN4Egm1_yanVbbF0sr6qQx*$t3e__Ty# zvSQYNInkM!*jZSkP4w6@=8PzNnGIsduhJRQnTJgoLO2jQE5+-;hO0a>0=Xk*&<)E^3J@ zSLZwL^e@d+-$6|eifqo)x;FB)o!qLi@cKd#^WyLk<9e{AL`JqkMN;O;^5w&cN=SzQ zJfG{lW66Y?qDl40%R_j5CmwXuT`c%EwCQzd#vA{~c+{T3V@|{lGw5kyW&ice{?ZY( z{Ule@vA}Z4N^DKtC0JDt*7I9;D(-nPvLQ`CNZT0th&Sf_Ie)S#O80R-A&&K|bT1Od zeWbCrwp^gO^f!F_fwn3A;|f7nOTBLo7N*TJT*3I68_zigVo?$8?xrGG>64q+{=YKI zG>i2U(P}pf8t5pGGwAeF`XnPyU-kxmacgQO9=K=$I^Hj9w(z3{iC-RnsK z9xG#P`QMQ+G@zchJo%DD##eiwV)_rZ?vMYwIQ!SCdiIMwJUD#SWsYiN%&l=@j8N2Q zXj;e0O9KcZyI`k}K$^9EXc+T2L2Ls6aD}IIg6v=#z>q$pacT8j`dAttA<&$WXDpKx zARke@0km^UTHDu(Gd5J>eGC& zxU!NnjQ_;VeO8I|Z>)vr#Bo!`HPyx+$lj0pbTkkoaEOt<-?!qfH;tUCMp|BJ1!VZN z{?f;*#*7?t3M-L|f(5^@NwuACSKJa2E~N)UG)@CsmpWw)JH4{YYD3gM&_q(hG+ds_ zMTJE~cxA)#8>_277k(&c?cU5a164_ugmuAIgWKoJJXcp=R$$b?83%-lY7!xkTQx0v8L`1%r^%^#}QsU@@&KA1buI5!P$SHwV}!y+fA zAM*qFpYxGeI(BviO^PwXY2sc!ofpE3kum&2^QOZyyEO&pexhl}=6rKu6_Oq8^{Z_a zmD4eF+Tl5K-(<{HCv25c{Z}4D4ZBinH0^Dlj!gHz890GqHdYsn4NvDf&S7pZO%036V_C3&%Zr{!f5 zxe$r7=L)CqrFmsY`^Pd<-Kc=Nic6dd82FtL9uQLe`9Oj!O2ys?(r85HI>e>t{PFsj8J+GD8yRLpfX*;lP-R#57 z|N3b}lg+`UN9v$l$<3SaZW{vNRF7e|jNyb9pVXGT#m9*eJeyT%-+~g&n`i3NxeEj( z;M#;2y?gGuA^yC0^ZSlxEqP#8HPk$IZ#a{Eb@Egm!mWe>&UW*@|96k^eJ?hx5!CZ& zYQ-(@_7&Ojr6n)6`$qNOEoBtSph9xb?3?rd(S-y=lXNC8zWV`!aaPSn*A-rtNc zlL2t<3WlMo;??aAWHI%M^ioZV51wgV9W2INO;xFON6`VCVE69AU(7`A(|gjTj;=YS zN$?Tgj*Iwac6a-b6Ld4rSz|&80{+@QKZn;8?vY*BD7B>Y#lQSwn8vI366^_0cWw4L zfE-D#dtFc3X6#(GunYv`iD}SPPe#|xw70c?Yo8w=SCTC{Hlt3(gbI<2pTcrfW!&Xj zRP?8%$Afd;3xM(k$3NTYXO)IYjk#vKRefHvjB0h_ae-CLLl!!lPTw*};|015k!!`y z$qJI=`_5&Bb2eZa6b(Z00Jr2>>brS=A#5UWhW2eZ|L^?9Z(q{5yvm%*fLT z%@8r!Xm{%jlK1;R;clhBf(w6;^hg3;etg1!en*V2vz%z9mBy>f`HsGQnn#xE>*J%d zQUKgjSG_6)uYrJl;*_+O?&;v?&t;)Jwy200JFB(asoOFOfJu zF&j)kHqhe(>w`Ej4nW7LGK^X@S#uQe;D^Bb6y2d9t=RH#bQ+%%)K zZT9cyYLv{eLTZIzDY9YH)4u#*jCQhAmxL7$!Io2uC!c7<+uzJp!Lwl_*8Ey{5mBF= zPzjeEHRKwP{%&2xy+z?o$QWI_g7@~ElY9~3D%6;~I~!E8W%hgkY>__3h@3Wf@@*B* zdah7#|ytZh-F7wSom95F*t(-(^|>-T}tDV*KZ1$vB=iNqlgh5M!26fHEk?E2Fm|gL<+*9 zPkP+qnGI{>W`nv>bggVFxVl=_%vZQwL-FRZ0_v7dtT{984G!;5J?(28}eq(PDl4ZZDZtIqm%m2?gqfE%f zVhG|hXZEGGZ}A|wJ#hcjz>00eqXnPU<*}ajz5zy3P|G;8?DTYc#D4~mUh6ima)PtM zcfl{lL)A=VVkQw0B*rw}Ocp~g9t-mE0>ewwAJLxV`aH^#c>69!JR9#_f=P@W9UWf} z-|csG5bGT_8uArb^UwJ|W-cY8a)^WPEVQ8@ebS9b=Aiin95zn_DKh~9q+*Q!_rp>o9s`MBn2cR58#Y;DYaiAnh`xO`W7zR1{KC{Ah79B( z^X4PT(>#*BXKciWU%1J|i;!V~`viYX zj8aey$9eeb%Av6CMb!_<+7x))FrVAsJZ;6|q2$Mefy7FzzI}P_X*JScGay4YXnH2d zyZ}{%tgMv~62zP;@7UoT8Thy=?YIMLcZ#;kM?!+- zU`Q|XC<`7oh#0pE5ZZne4cwSo)SX%wi|*F#iPJHWGc+%Uk@B2l%L(2$d$4`|n zgUab#OX-omIXdn^%EF~0^JXR^nFXh1p4p1y3MFh%OSX}3?=6QCyiUC(u124nmMCU@nlcb(vGFY|1%EyHo#L@woO$}Pc+8qBQlcuQ#XG}pZ$Elz~7 z2^rVWvEY-VjA5ZOgMc1onI7(hnalYaeypPEL)oaAW>-=zC|`zIK{Qw%a)JYvq)8_| zW^%Y~=^;4n`ZXq!25w@FPL=cY?XcC3^R~YZj+ReAV55=Vc6kxb+yH9c8zeBU&eOWp}QG5>tovAVH3-Tnn#y6XhI#8PfzJdB)O#p z+L1yb1@)2EMsoNx+PH!OJgu!tlbDFy;*bQ38$A&svENj1L8_8j(!T`hPsp6gKFy2W z4{8SC12)UA%ko8<>oyMYJkE*Kn$_m&?Ud7hmz5w!5^xWkpWFh%PcjO@mrC)I=tEmdHyL1GtD(HZIronfA@fgc~Vwt~dw zeIqd>v8VqY{kLMYVsg7f?5zr6B3UdQFE8FAAGA+?Q|Z&s-%o=---nR%Y$}#~Ab01p z-}H>R&`;BYxUaWl}^n*|d2#D#}tgJpu(W-g)oS?7}JGJoe zp?19(@>0D=vgTWoj1;lM&uXN((6epnV0A5|9owE^KhBdb@Ejq8H7Dou#6vkQXKw;@|EADr z1EOAf*3&#&vWT=)_}l7p>7$b!i&85z7Kf{?HP29~i|GV`=fSPtvl4ddX#ZSwHrb{h^ z8l){7Z$mRA(#qObjJTp(tIXr-=M_8X&UTV;Iu#~yF|MB46eItIx8io+r=soiwiP+% z3|1)n16y%FI)yzvFdyhXw`KnOE8jAsOvf{7jY3l!wI8ZBbsPmNVf<*a_uW|(cc&6` zap99g`uPy3DxY4bQgmdbpj%XGR$FP49H;4gP}>s6EHsr)rJJ)^@%FELbYw*=&7k$7 zRF?gGKh7@=OYsG^f42M~vFl9h6v%+$BODDD53?CXtaB@KrWY?sn4~rDkyM>m&g`Wg zyh(+v_$HuTQniKK-6eH{9=G?padDBpynW6J#ywMO`}-A@g6(PGFh~$-EZQ&xfF@0%V{CohpT1lDA?Q&}-_Wq>Jj~ zimVK#n$UJG{pO5-<=nVm1P))z*1U-ny3eZ|0u>I+dCsBYH4WS%ufPg-o}8&GD^p ze@7)C1EPWqcV!D9^XwmPom{EJVli22t81wOXlKI7#NCZ>VdZA+=NbVH>+t8#@HL2U z4|qx}wCgV~eY4ioQj%K4*x4<_Z&Lo*JN~X_GO-eHI~%`NFDX{BVtFX?gi&cz*n{1Kle;bzfZJ;|2@7*14J5 zZd#FD5nv!s{go4&Kb4xS89_rVGA(^@WrrEp3~;iY+oZu)iyn1Mm;ZF%I#X@S0QRM( zx`djZ<*%TlxtnlfyQKOK$>i`D8L3&R?w*#QPs5b|ybm>%6-fL&I8;+UinSi9-k+~f zl3-GUq7Q=YxQRvUn4F0E0Zu03(HXPQ9<5iAsn)-8tCu~&fJ|yRI zuAAMG17MiG7qoDO#^G>>e zjbmZzFy(>9=svYC_s^8xsWWQFUK<@ns7}`1&7L3uR760K4Ro%%78_ zy+&8z(OvPULI!`b8`H4o%h=M%~`eYx3-$}YR zc+>U$z0Oleq{CJ-{x)j;2itb=Q{8M)8nwb-)TLBe1vYW#cG|_Ob`8XjkPlRpZx<+~ zsGgtDHebLq2D_q{noV%&y^xq0e#V4D@ww9%H2LVSX;d1u{Mz}bY+A8S` z`j5D{8_|3aFF&;-_ooU$`8xJ$B zFptmFpcXe*-%3@Xu#pRuySDUgEYca7i z&T7sfWWQ$_dJJROcOti*ce*{rWE3nqkvYo@Y7Q(g!ifIKIm(4z%3Neg z)>WKKopj$kLsymE$Za`FZLj@zaRj>4UAumBtEOr7AxinSe8@xjI<-6YvH(hUE!GkF z)aA}lO5^V5z!CfAI?XbwPXvkyc8;Zebn97PSnkoJm|O^`DPG%S8He| l!;qkA(q4AcSXXkV_T2%s6#p|S=l?Ib^t6q%YQau%{{w%B(_H`n literal 0 HcmV?d00001 diff --git a/apps/series-troxide-linuxserver/0.5.1/.env.sample b/apps/series-troxide-linuxserver/0.5.1/.env.sample new file mode 100644 index 000000000..688946eae --- /dev/null +++ b/apps/series-troxide-linuxserver/0.5.1/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=3000 +PANEL_APP_PORT_HTTPS=3001 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai diff --git a/apps/series-troxide-linuxserver/0.5.1/data.yml b/apps/series-troxide-linuxserver/0.5.1/data.yml new file mode 100644 index 000000000..a59985549 --- /dev/null +++ b/apps/series-troxide-linuxserver/0.5.1/data.yml @@ -0,0 +1,68 @@ +additionalProperties: + formFields: + - default: 3000 + 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: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + 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/series-troxide-linuxserver/0.5.1/data/.gitkeep b/apps/series-troxide-linuxserver/0.5.1/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/series-troxide-linuxserver/0.5.1/docker-compose.yml b/apps/series-troxide-linuxserver/0.5.1/docker-compose.yml new file mode 100644 index 000000000..83681d148 --- /dev/null +++ b/apps/series-troxide-linuxserver/0.5.1/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + series-troxide: + image: "linuxserver/series-troxide:0.5.1" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + shm_size: "1gb" + labels: + createdBy: "Apps" diff --git a/apps/series-troxide-linuxserver/0.5.1/scripts/init.sh b/apps/series-troxide-linuxserver/0.5.1/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/series-troxide-linuxserver/0.5.1/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/series-troxide-linuxserver/0.5.1/scripts/uninstall.sh b/apps/series-troxide-linuxserver/0.5.1/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/series-troxide-linuxserver/0.5.1/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/series-troxide-linuxserver/0.5.1/scripts/upgrade.sh b/apps/series-troxide-linuxserver/0.5.1/scripts/upgrade.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/series-troxide-linuxserver/0.5.1/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/series-troxide-linuxserver/README.md b/apps/series-troxide-linuxserver/README.md new file mode 100644 index 000000000..73ed12984 --- /dev/null +++ b/apps/series-troxide-linuxserver/README.md @@ -0,0 +1,36 @@ +# Series Troxide LinuxServer + +## 产品介绍 + +Series Troxide LinuxServer 使用 LinuxServer.io 维护的 `linuxserver/series-troxide` 镜像,提供 Series Troxide 剧集追踪桌面 能力。 + +## 主要功能 + +- 通过浏览器访问桌面应用 +- 持久化保存配置和应用数据 +- 使用 HTTP/HTTPS 端口提供 KasmVNC 桌面入口 +- 支持自定义时区 + +## 访问说明 + +安装完成后,通过 1Panel 应用入口或 HTTP 端口访问桌面界面;HTTPS 端口可用于加密访问。 + +## Introduction + +Series Troxide LinuxServer uses the LinuxServer.io maintained `linuxserver/series-troxide` image for a browser-accessible desktop application. + +## Features + +- Access the desktop application from a browser +- Persist configuration and application data +- Expose KasmVNC desktop access through HTTP and HTTPS ports +- Configure the container time zone + +## Access + +After installation, open the desktop from the 1Panel app entry or the HTTP port; the HTTPS port can be used for encrypted access. + +## Links + +- LinuxServer image documentation: +- Project website: diff --git a/apps/series-troxide-linuxserver/data.yml b/apps/series-troxide-linuxserver/data.yml new file mode 100644 index 000000000..0f35d62e4 --- /dev/null +++ b/apps/series-troxide-linuxserver/data.yml @@ -0,0 +1,30 @@ +name: Series Troxide LinuxServer +tags: +- Media +title: Series Troxide 剧集追踪桌面 +description: Series Troxide 剧集追踪桌面 +additionalProperties: + key: series-troxide-linuxserver + name: Series Troxide LinuxServer + tags: + - Media + shortDescZh: Series Troxide 剧集追踪桌面 + shortDescEn: Series tracker desktop maintained by LinuxServer.io + description: + en: Series tracker desktop maintained by LinuxServer.io + zh: Series Troxide 剧集追踪桌面 + zh-Hant: Series Troxide 劇集追蹤桌面 + ja: LinuxServer.io が保守するシリーズ追跡デスクトップ + ko: LinuxServer.io에서 유지 관리하는 시리즈 추적 데스크톱 + ru: Рабочий стол трекера сериалов, поддерживаемый LinuxServer.io + ms: Desktop penjejak siri yang diselenggara oleh LinuxServer.io + pt-br: Desktop de rastreamento de series mantido pela LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + website: https://github.com/MaarifaMaarifa/series-troxide + github: https://github.com/linuxserver/docker-series-troxide + document: https://docs.linuxserver.io/images/docker-series-troxide/ + architectures: + - amd64 + - arm64 diff --git a/apps/series-troxide-linuxserver/latest/.env.sample b/apps/series-troxide-linuxserver/latest/.env.sample new file mode 100644 index 000000000..688946eae --- /dev/null +++ b/apps/series-troxide-linuxserver/latest/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME= +PANEL_APP_PORT_HTTP=3000 +PANEL_APP_PORT_HTTPS=3001 +CONFIG_PATH=./data/config +TIME_ZONE=Asia/Shanghai diff --git a/apps/series-troxide-linuxserver/latest/data.yml b/apps/series-troxide-linuxserver/latest/data.yml new file mode 100644 index 000000000..a59985549 --- /dev/null +++ b/apps/series-troxide-linuxserver/latest/data.yml @@ -0,0 +1,68 @@ +additionalProperties: + formFields: + - default: 3000 + 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: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + 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/series-troxide-linuxserver/latest/data/.gitkeep b/apps/series-troxide-linuxserver/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/series-troxide-linuxserver/latest/docker-compose.yml b/apps/series-troxide-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000..273cb5a18 --- /dev/null +++ b/apps/series-troxide-linuxserver/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true +services: + series-troxide: + image: "linuxserver/series-troxide:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - "${CONFIG_PATH}:/config" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TIME_ZONE} + shm_size: "1gb" + labels: + createdBy: "Apps" diff --git a/apps/series-troxide-linuxserver/latest/scripts/init.sh b/apps/series-troxide-linuxserver/latest/scripts/init.sh new file mode 100755 index 000000000..71fd851bd --- /dev/null +++ b/apps/series-troxide-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/series-troxide-linuxserver/latest/scripts/uninstall.sh b/apps/series-troxide-linuxserver/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/series-troxide-linuxserver/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/series-troxide-linuxserver/latest/scripts/upgrade.sh b/apps/series-troxide-linuxserver/latest/scripts/upgrade.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/series-troxide-linuxserver/latest/scripts/upgrade.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/series-troxide-linuxserver/logo.png b/apps/series-troxide-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad81fff89c5b3d2ccfe97c7435a7dc87b8384e3 GIT binary patch literal 4550 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 literal 0 HcmV?d00001