diff --git a/apps/archivebox/0.7.3/data.yml b/apps/archivebox/0.7.3/data.yml
new file mode 100644
index 000000000..8cb57dd82
--- /dev/null
+++ b/apps/archivebox/0.7.3/data.yml
@@ -0,0 +1,67 @@
+additionalProperties:
+ formFields:
+ - default: "/home/archivebox"
+ edit: true
+ envKey: ARCHIVEBOX_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "archivebox"
+ edit: true
+ envKey: ADMIN_USERNAME
+ labelZh: 管理员用户名
+ labelEn: Admin Username
+ required: true
+ type: text
+ - default: "archivebox"
+ edit: true
+ envKey: ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: Admin Password
+ required: true
+ type: password
+ - default: "True"
+ edit: true
+ envKey: PUBLIC_INDEX
+ labelZh: 是否公开快照列表
+ labelEn: Whether to make the snapshot list public
+ required: true
+ type: select
+ values:
+ - label: 公开
+ value: "True"
+ - label: 私密
+ value: "False"
+ - default: "True"
+ edit: true
+ envKey: PUBLIC_SNAPSHOTS
+ labelZh: 是否公开快照内容
+ labelEn: Whether to make snapshot content public
+ required: true
+ type: select
+ values:
+ - label: 公开
+ value: "True"
+ - label: 私密
+ value: "False"
+ - default: "False"
+ edit: true
+ envKey: PUBLIC_ADD_VIEW
+ labelZh: 是否允许匿名用户提交存档
+ labelEn: Whether to allow anonymous users to submit archives
+ required: true
+ type: select
+ values:
+ - label: 允许
+ value: "True"
+ - label: 禁止
+ value: "False"
diff --git a/apps/archivebox/0.7.3/docker-compose.yml b/apps/archivebox/0.7.3/docker-compose.yml
new file mode 100644
index 000000000..fce6b5115
--- /dev/null
+++ b/apps/archivebox/0.7.3/docker-compose.yml
@@ -0,0 +1,44 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ archivebox:
+ image: archivebox/archivebox:0.7.3
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${ARCHIVEBOX_ROOT_PATH}/data:/data
+ environment:
+ - TZ=Asia/Shanghai
+ - ALLOWED_HOSTS=*
+ - CSRF_TRUSTED_ORIGINS=http://localhost:8000
+ - SEARCH_BACKEND_ENGINE=sonic
+ - SEARCH_BACKEND_HOST_NAME=archivebox-sonic
+ - SEARCH_BACKEND_PASSWORD=${ADMIN_PASSWORD:-}
+
+ archivebox-sonic:
+ image: archivebox/sonic:latest
+ container_name: sonic-${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ expose:
+ - 1491
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${ARCHIVEBOX_ROOT_PATH}/sonic:/var/lib/sonic/store
+ environment:
+ - TZ=Asia/Shanghai
+ - SEARCH_BACKEND_PASSWORD=${ADMIN_PASSWORD:-}
diff --git a/apps/archivebox/0.7.3/envs/default.env b/apps/archivebox/0.7.3/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/archivebox/0.7.3/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/archivebox/0.7.3/envs/global.env b/apps/archivebox/0.7.3/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/archivebox/0.7.3/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/archivebox/0.7.3/scripts/init.sh b/apps/archivebox/0.7.3/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/archivebox/0.7.3/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/archivebox/0.7.3/scripts/uninstall.sh b/apps/archivebox/0.7.3/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/archivebox/0.7.3/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/archivebox/0.7.3/scripts/upgrade.sh b/apps/archivebox/0.7.3/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/archivebox/0.7.3/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/archivebox/0.8.5rc51/data.yml b/apps/archivebox/0.8.5rc51/data.yml
new file mode 100644
index 000000000..8cb57dd82
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/data.yml
@@ -0,0 +1,67 @@
+additionalProperties:
+ formFields:
+ - default: "/home/archivebox"
+ edit: true
+ envKey: ARCHIVEBOX_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "archivebox"
+ edit: true
+ envKey: ADMIN_USERNAME
+ labelZh: 管理员用户名
+ labelEn: Admin Username
+ required: true
+ type: text
+ - default: "archivebox"
+ edit: true
+ envKey: ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: Admin Password
+ required: true
+ type: password
+ - default: "True"
+ edit: true
+ envKey: PUBLIC_INDEX
+ labelZh: 是否公开快照列表
+ labelEn: Whether to make the snapshot list public
+ required: true
+ type: select
+ values:
+ - label: 公开
+ value: "True"
+ - label: 私密
+ value: "False"
+ - default: "True"
+ edit: true
+ envKey: PUBLIC_SNAPSHOTS
+ labelZh: 是否公开快照内容
+ labelEn: Whether to make snapshot content public
+ required: true
+ type: select
+ values:
+ - label: 公开
+ value: "True"
+ - label: 私密
+ value: "False"
+ - default: "False"
+ edit: true
+ envKey: PUBLIC_ADD_VIEW
+ labelZh: 是否允许匿名用户提交存档
+ labelEn: Whether to allow anonymous users to submit archives
+ required: true
+ type: select
+ values:
+ - label: 允许
+ value: "True"
+ - label: 禁止
+ value: "False"
diff --git a/apps/archivebox/0.8.5rc51/docker-compose.yml b/apps/archivebox/0.8.5rc51/docker-compose.yml
new file mode 100644
index 000000000..e547e2dbb
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/docker-compose.yml
@@ -0,0 +1,67 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ archivebox:
+ image: archivebox/archivebox:0.8.5rc51
+ depends_on:
+ - archivebox-init
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${ARCHIVEBOX_ROOT_PATH}/data:/data
+ environment:
+ - TZ=Asia/Shanghai
+ - ALLOWED_HOSTS=*
+ - CSRF_TRUSTED_ORIGINS=http://localhost:8000
+ - SEARCH_BACKEND_ENGINE=sonic
+ - SEARCH_BACKEND_HOST_NAME=archivebox-sonic
+ - SEARCH_BACKEND_PASSWORD=${ADMIN_PASSWORD:-}
+
+ archivebox-init:
+ image: archivebox/archivebox:0.8.5rc51
+ container_name: init-${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ networks:
+ - 1panel-network
+ command: archivebox init
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${ARCHIVEBOX_ROOT_PATH}/data:/data
+ environment:
+ - TZ=Asia/Shanghai
+ - ALLOWED_HOSTS=*
+ - CSRF_TRUSTED_ORIGINS=http://localhost:8000
+ - SEARCH_BACKEND_ENGINE=sonic
+ - SEARCH_BACKEND_HOST_NAME=archivebox-sonic
+ - SEARCH_BACKEND_PASSWORD=${ADMIN_PASSWORD:-}
+
+ archivebox-sonic:
+ image: archivebox/sonic:latest
+ container_name: sonic-${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ expose:
+ - 1491
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${ARCHIVEBOX_ROOT_PATH}/sonic:/var/lib/sonic/store
+ environment:
+ - TZ=Asia/Shanghai
+ - SEARCH_BACKEND_PASSWORD=${ADMIN_PASSWORD:-}
diff --git a/apps/archivebox/0.8.5rc51/envs/default.env b/apps/archivebox/0.8.5rc51/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/archivebox/0.8.5rc51/envs/global.env b/apps/archivebox/0.8.5rc51/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/archivebox/0.8.5rc51/scripts/init.sh b/apps/archivebox/0.8.5rc51/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/archivebox/0.8.5rc51/scripts/uninstall.sh b/apps/archivebox/0.8.5rc51/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/archivebox/0.8.5rc51/scripts/upgrade.sh b/apps/archivebox/0.8.5rc51/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/archivebox/0.8.5rc51/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/archivebox/README.md b/apps/archivebox/README.md
new file mode 100644
index 000000000..dd664b203
--- /dev/null
+++ b/apps/archivebox/README.md
@@ -0,0 +1,23 @@
+# ArchiveBox
+
+开源自托管网页存档。支持 URL、浏览器历史记录、书签、Pocket、Pinboard 等,保存 HTML、JS、PDF、媒体等
+
+
+
+
+
+## 简介
+
+ArchiveBox 是一款自托管应用程序,可让您以多种格式保存网站内容。
+
+我们的目标是让您的数据立即可用,并以其他程序可直接读取的格式保存。输出格式包括标准 HTML、PNG、PDF、TXT、JSON、WARC 和
+SQLite,保证在未来数十年内均可读取。ArchiveBox 还支持 CLI、REST API 和 Webhook,方便您与其他服务集成。
+
+如果不进行积极的保护,互联网上的一切最终都会消失或退化。
+
+ArchiveBox 是一款开源工具,可帮助组织和个人归档公共和私人网络内容,同时保留对数据的控制权。它可用于保存书签副本、保留法律案件证据、备份
+Facebook/Insta/Flickr 上的照片或 YouTube/Soundcloud 等媒体资源、保存研究论文等等。
+
+---
+
+
diff --git a/apps/archivebox/data.yml b/apps/archivebox/data.yml
new file mode 100644
index 000000000..acfed497c
--- /dev/null
+++ b/apps/archivebox/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: archivebox
+ name: ArchiveBox
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 开源自托管网页存档
+ shortDescEn: Self-hosted web page archiving
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://archivebox.io/
+ github: https://github.com/ArchiveBox/ArchiveBox/
+ document: https://github.com/ArchiveBox/ArchiveBox/
diff --git a/apps/archivebox/logo.png b/apps/archivebox/logo.png
new file mode 100644
index 000000000..04462b21c
Binary files /dev/null and b/apps/archivebox/logo.png differ
diff --git a/apps/astrbot-napcat/4.8.98/data.yml b/apps/astrbot-napcat/4.8.98/data.yml
new file mode 100644
index 000000000..1d39da663
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/data.yml
@@ -0,0 +1,78 @@
+additionalProperties:
+ formFields:
+ - default: "/home/astrbot-napcat"
+ edit: true
+ envKey: ASTRBOT_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 6185
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6195
+ edit: true
+ envKey: PANEL_APP_PORT_WECOM
+ labelZh: 企业微信 WebHook
+ labelEn: WeCom WebHook
+ required: true
+ rule: paramPort
+ type: number
+ - default: 11451
+ edit: true
+ envKey: PANEL_APP_PORT_WECHAT
+ labelZh: 个人微信 WebHook
+ labelEn: WeChat WebHook
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6199
+ edit: true
+ envKey: PANEL_APP_PORT_QQ_WH
+ labelZh: QQ WebHook
+ labelEn: QQ WebHook
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6196
+ edit: true
+ envKey: PANEL_APP_PORT_QQ_API
+ labelZh: QQ API
+ labelEn: QQ API
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6099
+ edit: true
+ envKey: PANEL_APP_PORT_NAPCAT
+ labelZh: NapCat 端口
+ labelEn: NapCat port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "02:42:ac:11:00:02"
+ edit: true
+ envKey: NAPCAT_MAC_ADDRESS
+ labelZh: NapCat 容器 MAC 地址
+ labelEn: NapCat container MAC address
+ required: true
+ type: text
+ - default: 1000
+ edit: true
+ envKey: NAPCAT_UID
+ labelZh: NapCat 容器 UID
+ labelEn: NapCat container UID
+ required: true
+ type: number
+ - default: 1000
+ edit: true
+ envKey: NAPCAT_GID
+ labelZh: NapCat 容器 GID
+ labelEn: NapCat container GID
+ required: true
+ type: number
diff --git a/apps/astrbot-napcat/4.8.98/docker-compose.yml b/apps/astrbot-napcat/4.8.98/docker-compose.yml
new file mode 100644
index 000000000..fc97ca918
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/docker-compose.yml
@@ -0,0 +1,49 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ napcat:
+ image: mlikiowa/napcat-docker:v4.8.98
+ container_name: napcat-${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_NAPCAT}:6099
+ mac_address: ${NAPCAT_MAC_ADDRESS:-02:42:ac:11:00:02}
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${ASTRBOT_ROOT_PATH}/data:/AstrBot/data
+ - ${ASTRBOT_ROOT_PATH}/ntqq:/app/.config/QQ
+ environment:
+ - TZ=Asia/Shanghai
+ - MODE=astrbot
+ - NAPCAT_UID=${NAPCAT_UID:-1000}
+ - NAPCAT_GID=${NAPCAT_GID:-1000}
+ astrbot:
+ image: soulter/astrbot:v3.5.25
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:6185
+ - ${PANEL_APP_PORT_QQ_WH}:6199
+ - ${PANEL_APP_PORT_QQ_API}:6196
+ - ${PANEL_APP_PORT_WECOM}:6195
+ - ${PANEL_APP_PORT_WECHAT}:11451
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - /etc/localtime:/etc/localtime:ro
+ - ${ASTRBOT_ROOT_PATH}/data:/AstrBot/data
+ - ${ASTRBOT_ROOT_PATH}/ntqq:/app/.config/QQ
+ - ${ASTRBOT_ROOT_PATH}/napcat/config:/app/napcat/config
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/astrbot-napcat/4.8.98/envs/default.env b/apps/astrbot-napcat/4.8.98/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/astrbot-napcat/4.8.98/envs/global.env b/apps/astrbot-napcat/4.8.98/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/astrbot-napcat/4.8.98/scripts/init.sh b/apps/astrbot-napcat/4.8.98/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/astrbot-napcat/4.8.98/scripts/uninstall.sh b/apps/astrbot-napcat/4.8.98/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/astrbot-napcat/4.8.98/scripts/upgrade.sh b/apps/astrbot-napcat/4.8.98/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/astrbot-napcat/4.8.98/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/astrbot-napcat/README.md b/apps/astrbot-napcat/README.md
new file mode 100644
index 000000000..63adbe549
--- /dev/null
+++ b/apps/astrbot-napcat/README.md
@@ -0,0 +1,46 @@
+# AstrBot (集成NapCat)
+
+AstrBot 是一个松耦合、异步、支持多消息平台部署、具有易用的插件系统和完善的大语言模型(LLM)接入功能的聊天机器人及开发框架。
+
+
+
+
+
+## 安装说明
+
+> 默认用户名: `astrbot`
+>
+> 默认密码: `astrbot`
+
+## 特性
+
+### 大语言模型对话
+
+支持各种大语言模型,包括 OpenAI API、Google Gemini、Llama、Deepseek、ChatGLM 等,支持接入本地部署的大模型,通过
+Ollama、LLMTuner。具有多轮对话、人格情境、多模态能力,支持图片理解、语音转文字(Whisper)。
+
+### 多消息平台接入
+
+支持接入 QQ(OneBot、QQ 官方机器人平台)、QQ
+频道、企业微信、微信公众号、飞书、Telegram、钉钉、Discord、KOOK、VoceChat。支持速率限制、白名单、关键词过滤、百度内容审核。
+
+### Agent
+
+原生支持部分 Agent 能力,如代码执行器、自然语言待办、网页搜索。对接 Dify 平台,便捷接入 Dify 智能助手、知识库和 Dify
+工作流。
+
+### 插件扩展
+
+深度优化的插件机制,支持开发插件扩展功能,极简开发。已支持安装多个插件。
+
+### 可视化管理面板
+
+支持可视化修改配置、插件管理、日志查看等功能,降低配置难度。集成 WebChat,可在面板上与大模型对话。
+
+### 高稳定性、高模块化
+
+基于事件总线和流水线的架构设计,高度模块化,低耦合。
+
+---
+
+
diff --git a/apps/astrbot-napcat/data.yml b/apps/astrbot-napcat/data.yml
new file mode 100644
index 000000000..21a3dc633
--- /dev/null
+++ b/apps/astrbot-napcat/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: astrbot-napcat
+ name: AstrBot (集成NapCat)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 多平台大模型机器人基础设施
+ shortDescEn: The Multi-Platform LLM Bot Infrastructure
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://astrbot.app/
+ github: https://github.com/AstrBotDevs/AstrBot/
+ document: https://astrbot.app/
diff --git a/apps/astrbot-napcat/logo.png b/apps/astrbot-napcat/logo.png
new file mode 100644
index 000000000..cf9392030
Binary files /dev/null and b/apps/astrbot-napcat/logo.png differ
diff --git a/apps/astrbot-napcat/logo.svg b/apps/astrbot-napcat/logo.svg
new file mode 100644
index 000000000..76f1e0e1d
--- /dev/null
+++ b/apps/astrbot-napcat/logo.svg
@@ -0,0 +1,13 @@
+
diff --git a/apps/astrbot/3.5.25/data.yml b/apps/astrbot/3.5.25/data.yml
new file mode 100644
index 000000000..ccf1e6995
--- /dev/null
+++ b/apps/astrbot/3.5.25/data.yml
@@ -0,0 +1,49 @@
+additionalProperties:
+ formFields:
+ - default: "/home/astrbot"
+ edit: true
+ envKey: ASTRBOT_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 6185
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6195
+ edit: true
+ envKey: PANEL_APP_PORT_WECOM
+ labelZh: 企业微信 WebHook
+ labelEn: WeCom WebHook
+ required: true
+ rule: paramPort
+ type: number
+ - default: 11451
+ edit: true
+ envKey: PANEL_APP_PORT_WECHAT
+ labelZh: 个人微信 WebHook
+ labelEn: WeChat WebHook
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6199
+ edit: true
+ envKey: PANEL_APP_PORT_QQ_WH
+ labelZh: QQ WebHook
+ labelEn: QQ WebHook
+ required: true
+ rule: paramPort
+ type: number
+ - default: 6196
+ edit: true
+ envKey: PANEL_APP_PORT_QQ_API
+ labelZh: QQ API
+ labelEn: QQ API
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/astrbot/3.5.25/docker-compose.yml b/apps/astrbot/3.5.25/docker-compose.yml
new file mode 100644
index 000000000..e5a861dd5
--- /dev/null
+++ b/apps/astrbot/3.5.25/docker-compose.yml
@@ -0,0 +1,27 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ astrbot:
+ image: soulter/astrbot:v3.5.25
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:6185
+ - ${PANEL_APP_PORT_QQ_WH}:6199
+ - ${PANEL_APP_PORT_QQ_API}:6196
+ - ${PANEL_APP_PORT_WECOM}:6195
+ - ${PANEL_APP_PORT_WECHAT}:11451
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - /etc/localtime:/etc/localtime:ro
+ - ${ASTRBOT_ROOT_PATH}/data:/AstrBot/data
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/astrbot/3.5.25/envs/default.env b/apps/astrbot/3.5.25/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/astrbot/3.5.25/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/astrbot/3.5.25/envs/global.env b/apps/astrbot/3.5.25/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/astrbot/3.5.25/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/astrbot/3.5.25/scripts/init.sh b/apps/astrbot/3.5.25/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/astrbot/3.5.25/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/astrbot/3.5.25/scripts/uninstall.sh b/apps/astrbot/3.5.25/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/astrbot/3.5.25/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/astrbot/3.5.25/scripts/upgrade.sh b/apps/astrbot/3.5.25/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/astrbot/3.5.25/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/astrbot/README.md b/apps/astrbot/README.md
new file mode 100644
index 000000000..5647b3111
--- /dev/null
+++ b/apps/astrbot/README.md
@@ -0,0 +1,46 @@
+# AstrBot
+
+AstrBot 是一个松耦合、异步、支持多消息平台部署、具有易用的插件系统和完善的大语言模型(LLM)接入功能的聊天机器人及开发框架。
+
+
+
+
+
+## 安装说明
+
+> 默认用户名: `astrbot`
+>
+> 默认密码: `astrbot`
+
+## 特性
+
+### 大语言模型对话
+
+支持各种大语言模型,包括 OpenAI API、Google Gemini、Llama、Deepseek、ChatGLM 等,支持接入本地部署的大模型,通过
+Ollama、LLMTuner。具有多轮对话、人格情境、多模态能力,支持图片理解、语音转文字(Whisper)。
+
+### 多消息平台接入
+
+支持接入 QQ(OneBot、QQ 官方机器人平台)、QQ
+频道、企业微信、微信公众号、飞书、Telegram、钉钉、Discord、KOOK、VoceChat。支持速率限制、白名单、关键词过滤、百度内容审核。
+
+### Agent
+
+原生支持部分 Agent 能力,如代码执行器、自然语言待办、网页搜索。对接 Dify 平台,便捷接入 Dify 智能助手、知识库和 Dify
+工作流。
+
+### 插件扩展
+
+深度优化的插件机制,支持开发插件扩展功能,极简开发。已支持安装多个插件。
+
+### 可视化管理面板
+
+支持可视化修改配置、插件管理、日志查看等功能,降低配置难度。集成 WebChat,可在面板上与大模型对话。
+
+### 高稳定性、高模块化
+
+基于事件总线和流水线的架构设计,高度模块化,低耦合。
+
+---
+
+
diff --git a/apps/astrbot/data.yml b/apps/astrbot/data.yml
new file mode 100644
index 000000000..d8c263e21
--- /dev/null
+++ b/apps/astrbot/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: astrbot
+ name: AstrBot
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 多平台大模型机器人基础设施
+ shortDescEn: The Multi-Platform LLM Bot Infrastructure
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://astrbot.app/
+ github: https://github.com/AstrBotDevs/AstrBot/
+ document: https://astrbot.app/
diff --git a/apps/astrbot/logo.png b/apps/astrbot/logo.png
new file mode 100644
index 000000000..cf9392030
Binary files /dev/null and b/apps/astrbot/logo.png differ
diff --git a/apps/astrbot/logo.svg b/apps/astrbot/logo.svg
new file mode 100644
index 000000000..76f1e0e1d
--- /dev/null
+++ b/apps/astrbot/logo.svg
@@ -0,0 +1,13 @@
+
diff --git a/apps/cloudsaver/0.6.1/config/env.example b/apps/cloudsaver/0.6.1/config/env.example
new file mode 100644
index 000000000..9310e9073
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/config/env.example
@@ -0,0 +1,8 @@
+# JWT配置
+JWT_SECRET=${JWT_SECRET}
+
+# Telegram配置
+TELEGRAM_BASE_URL=https://t.me/s
+
+# Telegram频道配置
+TELE_CHANNELS=[]
diff --git a/apps/cloudsaver/0.6.1/data.yml b/apps/cloudsaver/0.6.1/data.yml
new file mode 100644
index 000000000..9e5474fc4
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/data.yml
@@ -0,0 +1,24 @@
+additionalProperties:
+ formFields:
+ - default: "/home/cloudsaver"
+ edit: true
+ envKey: CLOUDSAVER_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8008
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: JWT_SECRET
+ labelZh: JWT 密钥
+ labelEn: JWT secret
+ required: true
+ type: text
diff --git a/apps/cloudsaver/0.6.1/docker-compose.yml b/apps/cloudsaver/0.6.1/docker-compose.yml
new file mode 100644
index 000000000..0c3156c4d
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/docker-compose.yml
@@ -0,0 +1,30 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ cloudsaver:
+ image: jiangrui1994/cloudsaver:0.6.1
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8008
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${CLOUDSAVER_ROOT_PATH}/data:/app/data
+ - ${CLOUDSAVER_ROOT_PATH}/config:/app/config
+ environment:
+ - TZ=Asia/Shanghai
+ healthcheck:
+ test: >
+ node -e "require('http').get('http://localhost:8008/health', res => { const allowed = [200, 204, 301, 302, 304]; process.exit(allowed.includes(res.statusCode) ? 0 : 1); }).on('error', () => process.exit(0));"
+ interval: 30s
+ timeout: 3s
+ start_period: 5s
+ retries: 3
diff --git a/apps/cloudsaver/0.6.1/envs/default.env b/apps/cloudsaver/0.6.1/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/cloudsaver/0.6.1/envs/global.env b/apps/cloudsaver/0.6.1/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/cloudsaver/0.6.1/scripts/init.sh b/apps/cloudsaver/0.6.1/scripts/init.sh
new file mode 100644
index 000000000..4e2de7a27
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/scripts/init.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ # setup-2 copy env file
+ CONFIG_DIR="$CLOUDSAVER_ROOT_PATH/config"
+ mkdir -p "$CONFIG_DIR"
+
+ CONFIG_FILE="$CONFIG_DIR/env"
+ cp ./config/env.example $CONFIG_FILE
+ sed -i "s/JWT_SECRET=.*/JWT_SECRET=$JWT_SECRET/" $CONFIG_FILE
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/cloudsaver/0.6.1/scripts/uninstall.sh b/apps/cloudsaver/0.6.1/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/cloudsaver/0.6.1/scripts/upgrade.sh b/apps/cloudsaver/0.6.1/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/cloudsaver/0.6.1/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/cloudsaver/README.md b/apps/cloudsaver/README.md
new file mode 100644
index 000000000..9de569f19
--- /dev/null
+++ b/apps/cloudsaver/README.md
@@ -0,0 +1,44 @@
+# CloudSaver
+
+网盘资源搜索与转存工具,支持响应式布局,移动端与PC完美适配。
+
+
+
+
+
+## 安装说明
+
+> 首次安装需要手动创建账户
+>
+> 默认注册码 (请及时修改默认注册码)
+>
+> 管理员:`230713`
+>
+> 普通用户:`9527`
+
+## 功能特性
+
+### 🔍 多源资源搜索
+
++ 支持多个资源订阅源搜索
++ 支持关键词搜索与资源链接解析
++ 支持豆瓣热门榜单展示
+
+### 💾 网盘资源转存
+
++ 支持115 网盘,夸克网盘,天翼网盘,123云盘一键转存
++ 支持转存文件夹展示与选择
+
+### 👥 多用户系统
+
++ 支持用户注册登录
++ 支持管理员与普通用户权限区分
+
+### 📱 响应式设计
+
++ 支持 PC 端与移动端自适应布局
++ 针对不同设备优化的交互体验
+
+---
+
+
diff --git a/apps/cloudsaver/data.yml b/apps/cloudsaver/data.yml
new file mode 100644
index 000000000..f1879907d
--- /dev/null
+++ b/apps/cloudsaver/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: cloudsaver
+ name: CloudSaver
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 网盘资源搜索与转存工具
+ shortDescEn: Network disk resource search and transfer tool
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/jiangrui1994/CloudSaver/
+ github: https://github.com/jiangrui1994/CloudSaver/
+ document: https://github.com/jiangrui1994/CloudSaver/
diff --git a/apps/cloudsaver/logo.png b/apps/cloudsaver/logo.png
new file mode 100644
index 000000000..e1b0f445a
Binary files /dev/null and b/apps/cloudsaver/logo.png differ
diff --git a/apps/cloudsaver/logo.svg b/apps/cloudsaver/logo.svg
new file mode 100644
index 000000000..07df98ce9
--- /dev/null
+++ b/apps/cloudsaver/logo.svg
@@ -0,0 +1,3753 @@
+
+
+
diff --git a/apps/excalidraw/README.md b/apps/excalidraw/README.md
new file mode 100644
index 000000000..cb0fcdadf
--- /dev/null
+++ b/apps/excalidraw/README.md
@@ -0,0 +1,41 @@
+# Excalidraw
+
+开源虚拟手绘风格白板。 协作和端到端加密。
+
+
+
+
+
+## 特性
+
+💯 免费且开源。
+
+🎨 无限的、基于画布的白板。
+
+✍️手绘风格。
+
+🌓 黑暗模式。
+
+🏗️可定制。
+
+📷 图像支持。
+
+😀 形状库支持。
+
+🌐 本地化(i18n)支持。
+
+🖼️ 导出为 PNG、SVG 和剪贴板。
+
+💾 开放格式 - 将图纸导出为 .excalidraw json 文件。
+
+⚒️ 多种工具 - 矩形、圆形、菱形、箭头、线条、自由绘制、橡皮擦......
+
+➡️ 箭头绑定和标记箭头。
+
+🔙 撤消/重做。
+
+🔍 支持缩放和平移。
+
+---
+
+
diff --git a/apps/excalidraw/data.yml b/apps/excalidraw/data.yml
new file mode 100644
index 000000000..da4f9a221
--- /dev/null
+++ b/apps/excalidraw/data.yml
@@ -0,0 +1,15 @@
+additionalProperties:
+ key: excalidraw
+ name: Excalidraw
+ tags:
+ - WebSite
+ - Tool
+ - Local
+ shortDescZh: 用于绘制手绘图表的虚拟白板
+ shortDescEn: Virtual whiteboard for sketching hand-drawn like diagrams
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://excalidraw.com/
+ github: https://github.com/excalidraw/excalidraw/
+ document: https://excalidraw.com/
diff --git a/apps/excalidraw/latest/data.yml b/apps/excalidraw/latest/data.yml
new file mode 100644
index 000000000..482f7b275
--- /dev/null
+++ b/apps/excalidraw/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/excalidraw/latest/docker-compose.yml b/apps/excalidraw/latest/docker-compose.yml
new file mode 100644
index 000000000..a1f8f81eb
--- /dev/null
+++ b/apps/excalidraw/latest/docker-compose.yml
@@ -0,0 +1,24 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ excalidraw:
+ image: excalidraw/excalidraw:latest
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ stdin_open: true
+ healthcheck:
+ disable: true
+ test: [ "CMD", "curl", "-f", "http://localhost" ]
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:80
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/excalidraw/latest/envs/default.env b/apps/excalidraw/latest/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/excalidraw/latest/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/excalidraw/latest/envs/global.env b/apps/excalidraw/latest/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/excalidraw/latest/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/excalidraw/latest/scripts/init.sh b/apps/excalidraw/latest/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/excalidraw/latest/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/excalidraw/latest/scripts/uninstall.sh b/apps/excalidraw/latest/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/excalidraw/latest/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/excalidraw/latest/scripts/upgrade.sh b/apps/excalidraw/latest/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/excalidraw/latest/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/excalidraw/logo.png b/apps/excalidraw/logo.png
new file mode 100644
index 000000000..24ea4de79
Binary files /dev/null and b/apps/excalidraw/logo.png differ
diff --git a/apps/excalidraw/logo.svg b/apps/excalidraw/logo.svg
new file mode 100644
index 000000000..65db66f66
--- /dev/null
+++ b/apps/excalidraw/logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/apps/garage-hq-web/2.0.0/data.yml b/apps/garage-hq-web/2.0.0/data.yml
new file mode 100644
index 000000000..73209afda
--- /dev/null
+++ b/apps/garage-hq-web/2.0.0/data.yml
@@ -0,0 +1,49 @@
+additionalProperties:
+ formFields:
+ - default: "/home/garage"
+ edit: true
+ envKey: GARAGE_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 3909
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3900
+ edit: true
+ envKey: PANEL_APP_PORT_S3_API
+ labelZh: S3 API 接口
+ labelEn: S3 API
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3901
+ edit: true
+ envKey: PANEL_APP_PORT_RPC
+ labelZh: RPC 通信
+ labelEn: RPC Communication
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3902
+ edit: true
+ envKey: PANEL_APP_PORT_S3_WEB
+ labelZh: S3 通讯端口
+ labelEn: S3 Communication
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3903
+ edit: true
+ envKey: PANEL_APP_PORT_API
+ labelZh: 管理 API
+ labelEn: Manage API
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/garage-hq-web/2.0.0/docker-compose.yml b/apps/garage-hq-web/2.0.0/docker-compose.yml
new file mode 100644
index 000000000..c86642c7d
--- /dev/null
+++ b/apps/garage-hq-web/2.0.0/docker-compose.yml
@@ -0,0 +1,40 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ garage:
+ image: dxflrs/garage:v2.0.0
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_S3_API}:3900
+ - ${PANEL_APP_PORT_RPC}:3901
+ - ${PANEL_APP_PORT_S3_WEB}:3902
+ - ${PANEL_APP_PORT_API}:3903
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml
+ - ${GARAGE_ROOT_PATH}/meta:/var/lib/garage/meta
+ - ${GARAGE_ROOT_PATH}/data:/var/lib/garage/data
+ environment:
+ - TZ=Asia/Shanghai
+ garage-webui:
+ image: khairul169/garage-webui:1.0.9
+ container_name: ${CONTAINER_NAME}-web
+ restart: always
+ networks:
+ - 1panel-network
+ volumes:
+ - ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:3909
+ environment:
+ API_BASE_URL: "http://garage:3903"
+ S3_ENDPOINT_URL: "http://garage:3900"
diff --git a/apps/garage-hq-web/2.0.0/envs/default.env b/apps/garage-hq-web/2.0.0/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/garage-hq-web/2.0.0/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/garage-hq-web/2.0.0/envs/global.env b/apps/garage-hq-web/2.0.0/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/garage-hq-web/2.0.0/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/garage-hq-web/2.0.0/scripts/init.sh b/apps/garage-hq-web/2.0.0/scripts/init.sh
new file mode 100644
index 000000000..315e05b7a
--- /dev/null
+++ b/apps/garage-hq-web/2.0.0/scripts/init.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ # 检查 GARAGE_ROOT_PATH 是否存在
+ if [ -z "${GARAGE_ROOT_PATH}" ]; then
+ echo "Error: GARAGE_ROOT_PATH is not set in .env."
+ exit 1
+ fi
+
+ # 创建 config 目录
+ CONFIG_DIR="${GARAGE_ROOT_PATH}/config"
+ mkdir -p "${CONFIG_DIR}"
+ CONFIG_FILE="${CONFIG_DIR}/garage.toml"
+
+ # 检查文件是否存在并包含 admin_token
+ if [ -f "${CONFIG_FILE}" ] && grep -q '^admin_token' "${CONFIG_FILE}"; then
+ echo "garage.toml already exists and contains admin_token. Skipping creation."
+ else
+ echo "Creating or updating garage.toml..."
+
+ cat > "${CONFIG_FILE}" <> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/garage-hq-web/README.md b/apps/garage-hq-web/README.md
new file mode 100644
index 000000000..0b64a162a
--- /dev/null
+++ b/apps/garage-hq-web/README.md
@@ -0,0 +1,62 @@
+# Garage HQ
+
+Garage 是一种与 S3 兼容的分布式对象存储服务,专为中小规模的自托管而设计。
+
+
+
+
+
+## 简介
+
+Garage 专为由运行在不同物理位置的节点组成的存储集群而设计,旨在轻松提供存储服务,该服务可在这些不同位置复制数据,即使某些服务器无法访问也能保持可用。Garage
+还注重轻量级、易于操作以及对机器故障的高弹性。
+
+## 安装说明
+
+通过宿主机初始化:
+
+1. 通过 `docker ps` 命令查看正在运行的容器, 获取当前部署的容器名称 `CONTAINER ID`
+2. 注册 `garage` 命令
+
+```sh
+alias garage="docker exec -ti /garage"
+```
+
+3. 查看集群状态
+
+```sh
+garage status
+```
+
+输出结果,获得集群 `ID`:3df3882525930828
+
+```shell
+
+[root@mechrevmini ~]# garage status
+2025-07-18T09:10:09.202519Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
+2025-07-18T09:10:09.243660Z INFO garage_net::netapp: Connection established to 3df3882525930828
+==== HEALTHY NODES ====
+ID Hostname Address Tags Zone Capacity DataAvail Version
+3df3882525930828 a2bc48d5c8ab 127.0.0.1:3901 NO ROLE ASSIGNED v2.0.0
+```
+
+4. 创建节点
+
+```sh
+garage layout assign -z dc1 -c 1G
+
+## demo
+garage layout assign -z dc1 -c 1G 3df3882525930828
+```
+
+5. 将节点添加到集群
+
+```sh
+garage layout apply --version 1
+```
+
+无论是集群部署,还是单节点部署,都需要初始化节点。
+
+---
+
+
diff --git a/apps/garage-hq-web/data.yml b/apps/garage-hq-web/data.yml
new file mode 100644
index 000000000..24d0197dc
--- /dev/null
+++ b/apps/garage-hq-web/data.yml
@@ -0,0 +1,15 @@
+additionalProperties:
+ key: garage-hq-web
+ name: Garage HQ (WebUI版)
+ tags:
+ - WebSite
+ - Storage
+ - Local
+ shortDescZh: 专为自托管而定制的开源分布式对象存储服务
+ shortDescEn: An open-source distributed object storage service tailored for self-hosting
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://garagehq.deuxfleurs.fr/
+ github: https://git.deuxfleurs.fr/Deuxfleurs/garage/
+ document: https://garagehq.deuxfleurs.fr/
diff --git a/apps/garage-hq-web/logo.png b/apps/garage-hq-web/logo.png
new file mode 100644
index 000000000..134032b49
Binary files /dev/null and b/apps/garage-hq-web/logo.png differ
diff --git a/apps/garage-hq-web/logo.svg b/apps/garage-hq-web/logo.svg
new file mode 100644
index 000000000..c2bf0dc98
--- /dev/null
+++ b/apps/garage-hq-web/logo.svg
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/apps/garage-hq/2.0.0/data.yml b/apps/garage-hq/2.0.0/data.yml
new file mode 100644
index 000000000..df9ce99b8
--- /dev/null
+++ b/apps/garage-hq/2.0.0/data.yml
@@ -0,0 +1,41 @@
+additionalProperties:
+ formFields:
+ - default: "/home/garage"
+ edit: true
+ envKey: GARAGE_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 3902
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3900
+ edit: true
+ envKey: PANEL_APP_PORT_S3_API
+ labelZh: S3 API 接口
+ labelEn: S3 API
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3901
+ edit: true
+ envKey: PANEL_APP_PORT_RPC
+ labelZh: RPC 通信
+ labelEn: RPC Communication
+ required: true
+ rule: paramPort
+ type: number
+ - default: 3903
+ edit: true
+ envKey: PANEL_APP_PORT_API
+ labelZh: 管理 API
+ labelEn: Manage API
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/garage-hq/2.0.0/docker-compose.yml b/apps/garage-hq/2.0.0/docker-compose.yml
new file mode 100644
index 000000000..e2030bb7a
--- /dev/null
+++ b/apps/garage-hq/2.0.0/docker-compose.yml
@@ -0,0 +1,27 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ garage:
+ image: dxflrs/garage:v2.0.0
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_S3_API}:3900
+ - ${PANEL_APP_PORT_RPC}:3901
+ - ${PANEL_APP_PORT_HTTP}:3902
+ - ${PANEL_APP_PORT_API}:3903
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${GARAGE_ROOT_PATH}/config/garage.toml:/etc/garage.toml
+ - ${GARAGE_ROOT_PATH}/meta:/var/lib/garage/meta
+ - ${GARAGE_ROOT_PATH}/data:/var/lib/garage/data
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/garage-hq/2.0.0/envs/default.env b/apps/garage-hq/2.0.0/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/garage-hq/2.0.0/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/garage-hq/2.0.0/envs/global.env b/apps/garage-hq/2.0.0/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/garage-hq/2.0.0/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/garage-hq/2.0.0/scripts/init.sh b/apps/garage-hq/2.0.0/scripts/init.sh
new file mode 100644
index 000000000..88bb39b37
--- /dev/null
+++ b/apps/garage-hq/2.0.0/scripts/init.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ # 检查 GARAGE_ROOT_PATH 是否存在
+ if [ -z "${GARAGE_ROOT_PATH}" ]; then
+ echo "Error: GARAGE_ROOT_PATH is not set in .env."
+ exit 1
+ fi
+
+ # 创建 config 目录
+ CONFIG_DIR="${GARAGE_ROOT_PATH}/config"
+ mkdir -p "${CONFIG_DIR}"
+ CONFIG_FILE="${CONFIG_DIR}/garage.toml"
+
+ # 检查文件是否存在并包含 admin_token
+ if [ -f "${CONFIG_FILE}" ] && grep -q '^admin_token' "${CONFIG_FILE}"; then
+ echo "garage.toml already exists and contains admin_token. Skipping creation."
+ else
+ echo "Creating or updating garage.toml..."
+
+ cat > "${CONFIG_FILE}" <> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/garage-hq/README.md b/apps/garage-hq/README.md
new file mode 100644
index 000000000..0b64a162a
--- /dev/null
+++ b/apps/garage-hq/README.md
@@ -0,0 +1,62 @@
+# Garage HQ
+
+Garage 是一种与 S3 兼容的分布式对象存储服务,专为中小规模的自托管而设计。
+
+
+
+
+
+## 简介
+
+Garage 专为由运行在不同物理位置的节点组成的存储集群而设计,旨在轻松提供存储服务,该服务可在这些不同位置复制数据,即使某些服务器无法访问也能保持可用。Garage
+还注重轻量级、易于操作以及对机器故障的高弹性。
+
+## 安装说明
+
+通过宿主机初始化:
+
+1. 通过 `docker ps` 命令查看正在运行的容器, 获取当前部署的容器名称 `CONTAINER ID`
+2. 注册 `garage` 命令
+
+```sh
+alias garage="docker exec -ti /garage"
+```
+
+3. 查看集群状态
+
+```sh
+garage status
+```
+
+输出结果,获得集群 `ID`:3df3882525930828
+
+```shell
+
+[root@mechrevmini ~]# garage status
+2025-07-18T09:10:09.202519Z INFO garage_net::netapp: Connected to 127.0.0.1:3901, negotiating handshake...
+2025-07-18T09:10:09.243660Z INFO garage_net::netapp: Connection established to 3df3882525930828
+==== HEALTHY NODES ====
+ID Hostname Address Tags Zone Capacity DataAvail Version
+3df3882525930828 a2bc48d5c8ab 127.0.0.1:3901 NO ROLE ASSIGNED v2.0.0
+```
+
+4. 创建节点
+
+```sh
+garage layout assign -z dc1 -c 1G
+
+## demo
+garage layout assign -z dc1 -c 1G 3df3882525930828
+```
+
+5. 将节点添加到集群
+
+```sh
+garage layout apply --version 1
+```
+
+无论是集群部署,还是单节点部署,都需要初始化节点。
+
+---
+
+
diff --git a/apps/garage-hq/data.yml b/apps/garage-hq/data.yml
new file mode 100644
index 000000000..0ec445cff
--- /dev/null
+++ b/apps/garage-hq/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: garage-hq
+ name: Garage HQ
+ tags:
+ - Storage
+ - Local
+ shortDescZh: 专为自托管而定制的开源分布式对象存储服务
+ shortDescEn: An open-source distributed object storage service tailored for self-hosting
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://garagehq.deuxfleurs.fr/
+ github: https://git.deuxfleurs.fr/Deuxfleurs/garage/
+ document: https://garagehq.deuxfleurs.fr/
diff --git a/apps/garage-hq/logo.png b/apps/garage-hq/logo.png
new file mode 100644
index 000000000..134032b49
Binary files /dev/null and b/apps/garage-hq/logo.png differ
diff --git a/apps/garage-hq/logo.svg b/apps/garage-hq/logo.svg
new file mode 100644
index 000000000..c2bf0dc98
--- /dev/null
+++ b/apps/garage-hq/logo.svg
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/apps/kotatsu/README.md b/apps/kotatsu/README.md
new file mode 100644
index 000000000..13c80dc46
--- /dev/null
+++ b/apps/kotatsu/README.md
@@ -0,0 +1,70 @@
+# Kotatsu
+
+口袋里的漫画
+
+
+
+
+
+## 安装说明
+
+### Kotatsu 同步服务器
+
+Kotatsu 是一款适用于 Android 平台的免费开源漫画阅读器。它支持多种语言的在线漫画,并具备筛选和搜索功能、本地存储离线阅读、收藏、书签、新章节通知等功能。
+
+如果您不想公开自部署的同步服务器,请在注册完成自己的设备后,将`允许新用户注册`改为禁止,重启即可。
+
+### 初始化数据库
+
+创建数据库后,请将应用目录 `config/database.sql` 数据库文件进行初始化。
+
+## 简介
+
+一款简单、方便的 Android 开源漫画阅读器,由社区提供,您可以比以往更轻松地找到和阅读您喜欢的漫画。
+
+## 特性
+
+### 大量来源
+
+支持超过 1000 个来源
+
+### 可定制的阅读器
+
+通过不同的阅读器设置使阅读更加方便
+
+### 支持追踪
+
+支持 MyAnimeList、Anilist 和 Shikimori
+
+### 智能搜索
+
+快速轻松地搜索感兴趣的标题
+
+### 强大的下载器
+
+可以缓慢下载标题以避免出现源问题
+
+### 同步
+
+轻松在您的设备之间同步系列。
+
+## 下载客户端
+
+
+
+---
+
+
diff --git a/apps/kotatsu/data.yml b/apps/kotatsu/data.yml
new file mode 100644
index 000000000..a47710025
--- /dev/null
+++ b/apps/kotatsu/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: kotatsu
+ name: Kotatsu
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 口袋里的漫画
+ shortDescEn: Manga in your pocket
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://kotatsu.app/
+ github: https://github.com/KotatsuApp/Kotatsu/
+ document: https://kotatsu.app/
diff --git a/apps/kotatsu/logo.png b/apps/kotatsu/logo.png
new file mode 100644
index 000000000..7f0ce6745
Binary files /dev/null and b/apps/kotatsu/logo.png differ
diff --git a/apps/kotatsu/logo.svg b/apps/kotatsu/logo.svg
new file mode 100644
index 000000000..64321067b
--- /dev/null
+++ b/apps/kotatsu/logo.svg
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/kotatsu/v20250725/config/database.sql b/apps/kotatsu/v20250725/config/database.sql
new file mode 100644
index 000000000..662429cff
--- /dev/null
+++ b/apps/kotatsu/v20250725/config/database.sql
@@ -0,0 +1,134 @@
+drop table if exists favourites;
+
+drop table if exists categories;
+
+drop table if exists history;
+
+drop table if exists manga_tags;
+
+drop table if exists manga;
+
+drop table if exists tags;
+
+drop table if exists users;
+
+create table manga
+(
+ id bigint not null,
+ title varchar(84) not null,
+ alt_title varchar(84) null,
+ url varchar(255) not null,
+ public_url varchar(255) not null,
+ rating float not null,
+ content_rating char(12) null,
+ cover_url varchar(255) not null,
+ large_cover_url varchar(255) null,
+ state char(12) null,
+ author varchar(64) null,
+ source varchar(32) not null,
+ primary key (id)
+);
+
+create table tags
+(
+ id bigint not null,
+ title varchar(64) not null,
+ `key` varchar(120) not null,
+ source varchar(32) not null,
+ primary key (id)
+);
+
+create table manga_tags
+(
+ manga_id bigint not null,
+ tag_id bigint not null,
+ primary key (manga_id, tag_id),
+ constraint manga_tags_ibfk_1
+ foreign key (tag_id) references tags (id),
+ constraint manga_tags_ibfk_2
+ foreign key (manga_id) references manga (id)
+ on delete cascade
+);
+
+create index tag_id
+ on manga_tags (tag_id);
+
+create table users
+(
+ id int auto_increment
+ primary key,
+ email varchar(120) not null,
+ password char(32) not null,
+ nickname varchar(84) null,
+ favourites_sync_timestamp bigint null,
+ history_sync_timestamp bigint null
+);
+
+create table categories
+(
+ id bigint not null,
+ created_at bigint not null,
+ sort_key int not null,
+ title varchar(120) not null,
+ `order` char(16) not null,
+ user_id int not null,
+ track tinyint(1) not null,
+ show_in_lib tinyint(1) not null,
+ deleted_at bigint not null,
+ primary key (id, user_id),
+ constraint categories_ibfk_1
+ foreign key (user_id) references users (id)
+ on delete cascade
+);
+
+create index categories_id_index
+ on categories (id);
+
+create table favourites
+(
+ manga_id bigint not null,
+ category_id bigint not null,
+ sort_key int not null,
+ pinned tinyint(1) not null,
+ created_at bigint not null,
+ deleted_at bigint not null,
+ user_id int not null,
+ primary key (manga_id, category_id, user_id),
+ constraint favourites_categories_id_pk
+ foreign key (category_id, user_id) references categories (id, user_id),
+ constraint favourites_ibfk_1
+ foreign key (manga_id) references manga (id),
+ constraint favourites_ibfk_2
+ foreign key (user_id) references users (id)
+);
+
+create index user_id
+ on favourites (user_id);
+
+create table history
+(
+ manga_id bigint not null,
+ created_at bigint not null,
+ updated_at bigint not null,
+ chapter_id bigint not null,
+ page smallint not null,
+ scroll double not null,
+ percent double not null,
+ chapters int not null,
+ deleted_at bigint not null,
+ user_id int not null,
+ primary key (user_id, manga_id),
+ constraint history_ibfk_1
+ foreign key (manga_id) references manga (id),
+ constraint history_ibfk_2
+ foreign key (user_id) references users (id)
+ on delete cascade
+);
+
+create index manga_id
+ on history (manga_id);
+
+create unique index users_email_uindex
+ on users (email);
+
+
diff --git a/apps/kotatsu/v20250725/data.yml b/apps/kotatsu/v20250725/data.yml
new file mode 100644
index 000000000..996f2a90d
--- /dev/null
+++ b/apps/kotatsu/v20250725/data.yml
@@ -0,0 +1,84 @@
+additionalProperties:
+ formFields:
+ - child:
+ default: ""
+ envKey: PANEL_DB_HOST
+ required: true
+ type: service
+ default: mysql
+ edit: true
+ envKey: PANEL_DB_TYPE
+ labelZh: MySQL 服务 (前置检查)
+ labelEn: Database Service (Pre-check)
+ required: true
+ type: apps
+ values:
+ - label: MySQL
+ value: mysql
+ - label: MariaDB
+ value: mariadb
+ - label: Percona
+ value: percona
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: JWT_SECRET
+ labelZh: JWT 密钥
+ labelEn: JWT secret
+ required: true
+ type: password
+ - default: "127.0.0.1"
+ edit: true
+ envKey: DATABASE_HOST
+ labelZh: 数据库 主机
+ labelEn: Database Host
+ required: true
+ type: text
+ - default: 3306
+ edit: true
+ envKey: DATABASE_PORT
+ labelZh: 数据库 端口
+ labelEn: Database Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "kotatsu-syncserver"
+ edit: true
+ envKey: DATABASE_NAME
+ labelZh: 数据库 名称
+ labelEn: Database Name
+ required: true
+ type: text
+ - default: "kotatsu-syncserver"
+ edit: true
+ envKey: DATABASE_USER
+ labelZh: 数据库 用户名
+ labelEn: Database Username
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: DATABASE_PASSWORD
+ labelZh: 数据库 密码
+ labelEn: Database Password
+ required: true
+ type: password
+ - default: "true"
+ edit: true
+ envKey: ALLOW_NEW_REGISTER
+ labelZh: 允许新用户注册
+ labelEn: Allow new users to register
+ required: true
+ type: select
+ values:
+ - label: 开放注册
+ value: "true"
+ - label: 禁止注册
+ value: "false"
diff --git a/apps/kotatsu/v20250725/docker-compose.yml b/apps/kotatsu/v20250725/docker-compose.yml
new file mode 100644
index 000000000..15e821619
--- /dev/null
+++ b/apps/kotatsu/v20250725/docker-compose.yml
@@ -0,0 +1,20 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ kotatsu-syncserver:
+ image: qyg2297248353/kotatsu-syncserver:v20250725
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/kotatsu/v20250725/envs/default.env b/apps/kotatsu/v20250725/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/kotatsu/v20250725/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/kotatsu/v20250725/envs/global.env b/apps/kotatsu/v20250725/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/kotatsu/v20250725/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/kotatsu/v20250725/scripts/init.sh b/apps/kotatsu/v20250725/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/kotatsu/v20250725/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/kotatsu/v20250725/scripts/uninstall.sh b/apps/kotatsu/v20250725/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/kotatsu/v20250725/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/kotatsu/v20250725/scripts/upgrade.sh b/apps/kotatsu/v20250725/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/kotatsu/v20250725/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/kvrocks/2.13.0/data.yml b/apps/kvrocks/2.13.0/data.yml
new file mode 100644
index 000000000..88c952a6b
--- /dev/null
+++ b/apps/kvrocks/2.13.0/data.yml
@@ -0,0 +1,17 @@
+additionalProperties:
+ formFields:
+ - default: "/home/kvrocks"
+ edit: true
+ envKey: KVROCKS_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 6666
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: 服务端口
+ labelEn: Service port
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/kvrocks/2.13.0/docker-compose.yml b/apps/kvrocks/2.13.0/docker-compose.yml
new file mode 100644
index 000000000..97c2cf998
--- /dev/null
+++ b/apps/kvrocks/2.13.0/docker-compose.yml
@@ -0,0 +1,22 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ kvrocks:
+ image: apache/kvrocks:2.13.0
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:6666
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${KVROCKS_ROOT_PATH}/data:/kvrocks_data
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/kvrocks/2.13.0/envs/default.env b/apps/kvrocks/2.13.0/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/kvrocks/2.13.0/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/kvrocks/2.13.0/envs/global.env b/apps/kvrocks/2.13.0/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/kvrocks/2.13.0/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/kvrocks/2.13.0/scripts/init.sh b/apps/kvrocks/2.13.0/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/kvrocks/2.13.0/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/kvrocks/2.13.0/scripts/uninstall.sh b/apps/kvrocks/2.13.0/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/kvrocks/2.13.0/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/kvrocks/2.13.0/scripts/upgrade.sh b/apps/kvrocks/2.13.0/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/kvrocks/2.13.0/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/kvrocks/README.md b/apps/kvrocks/README.md
new file mode 100644
index 000000000..0fbb7720f
--- /dev/null
+++ b/apps/kvrocks/README.md
@@ -0,0 +1,33 @@
+# Kvrocks
+
+分布式键值 NoSQL 数据库,它使用 RocksDB 作为存储引擎,兼容 Redis 协议。
+
+
+
+
+
+## 特性
+
+### Redis 兼容
+
+用户可以通过任何 Redis 客户端访问 Apache Kvrocks。
+
+### 命名空间
+
+类似于 Redis SELECT,但每个命名空间都配备了令牌。
+
+### 复制
+
+使用 MySQL 等 binlog 进行异步复制。
+
+### 高可用
+
+支持Redis哨兵在主从发生故障时进行故障转移。
+
+### 集群
+
+集中管理,但可通过任何 Redis 集群客户端访问。
+
+---
+
+
diff --git a/apps/kvrocks/data.yml b/apps/kvrocks/data.yml
new file mode 100644
index 000000000..ef2697aad
--- /dev/null
+++ b/apps/kvrocks/data.yml
@@ -0,0 +1,16 @@
+additionalProperties:
+ key: kvrocks
+ name: Kvrocks
+ tags:
+ - Database
+ - Runtime
+ - Storage
+ - Local
+ shortDescZh: 分布式键值 NoSQL 数据库
+ shortDescEn: Distributed key-value NoSQL database
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://kvrocks.apache.org/
+ github: https://github.com/apache/kvrocks/
+ document: https://kvrocks.apache.org/
diff --git a/apps/kvrocks/logo.png b/apps/kvrocks/logo.png
new file mode 100644
index 000000000..8f4b7992a
Binary files /dev/null and b/apps/kvrocks/logo.png differ
diff --git a/apps/kvrocks/logo.svg b/apps/kvrocks/logo.svg
new file mode 100644
index 000000000..d5a33d205
--- /dev/null
+++ b/apps/kvrocks/logo.svg
@@ -0,0 +1,222 @@
+
+
+
+
diff --git a/apps/metatube-server-memory/1.3.2/data.yml b/apps/metatube-server-memory/1.3.2/data.yml
new file mode 100644
index 000000000..80552a017
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/data.yml
@@ -0,0 +1,47 @@
+additionalProperties:
+ formFields:
+ - default: "1panel-network"
+ edit: true
+ envKey: NETWORK_MODE
+ labelZh: 网络模式
+ labelEn: Network mode
+ required: true
+ type: select
+ values:
+ - label: 主机网络模式
+ value: "host"
+ - label: 桥接网络模式
+ value: "bridge"
+ - label: 无网络模式
+ value: "none"
+ - label: 1panel-network
+ value: "1panel-network"
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: TOKEN
+ labelZh: 访问令牌
+ labelEn: Access Token
+ required: true
+ type: password
+ - default: "1m"
+ edit: true
+ envKey: REQUEST_TIMEOUT
+ labelZh: 请求超时时间
+ labelEn: Request Timeout
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: HTTP_PROXY
+ labelZh: 网络代理 (HTTP/Socket5)
+ labelEn: Network Proxy (HTTP/Socket5)
+ required: false
+ type: text
diff --git a/apps/metatube-server-memory/1.3.2/docker-compose.yml b/apps/metatube-server-memory/1.3.2/docker-compose.yml
new file mode 100644
index 000000000..b1f329f37
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/docker-compose.yml
@@ -0,0 +1,21 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ metatube-server:
+ image: ghcr.io/metatube-community/metatube-server:1.3.2
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ network_mode: ${NETWORK_MODE}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - HTTPS_PROXY=${HTTP_PROXY}
+ - DB_AUTO_MIGRATE=true
+ - PORT=${PANEL_APP_PORT_HTTP}
diff --git a/apps/metatube-server-memory/1.3.2/envs/default.env b/apps/metatube-server-memory/1.3.2/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/metatube-server-memory/1.3.2/envs/global.env b/apps/metatube-server-memory/1.3.2/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/metatube-server-memory/1.3.2/scripts/init.sh b/apps/metatube-server-memory/1.3.2/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/metatube-server-memory/1.3.2/scripts/uninstall.sh b/apps/metatube-server-memory/1.3.2/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/metatube-server-memory/1.3.2/scripts/upgrade.sh b/apps/metatube-server-memory/1.3.2/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/metatube-server-memory/1.3.2/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/metatube-server-memory/README.md b/apps/metatube-server-memory/README.md
new file mode 100644
index 000000000..cb5c78eb4
--- /dev/null
+++ b/apps/metatube-server-memory/README.md
@@ -0,0 +1,87 @@
+# MetaTube 服务端
+
+为 Jellyfin/Emby/Plex 开发的超级好用的元数据插件
+
+
+
+
+
+## 应用特性
+
++ 完整数据:包括标题、简介、演员、标签、评分等内容。
++ 完整搜索:支持通过众多的刮削源搜索影片和演员信息。
++ 预告功能:无需下载完整预告视频即可在线观看预告片。
++ 计划任务:自动整理影片标签以及在后台自动更新插件。
++ 人脸识别:内置的人脸识别以人脸为中心裁剪海报图像。
++ 自动翻译:支持将特定的元数据内容翻译成需要的语言。
+
+## 应用说明
+
+该应用为 MetaTube 服务端,用于为 Jellyfin/Emby/Plex 提供元数据插件。
+
+优先推荐部署在: 云服务器(美国/日本)
+
+如果您的网络环境不适合部署服务端,可以尝试配置网络代理。仅支持 HTTP 代理 / Socks5 代理。
+
+## 插件安装
+
+### Jellyfin
+
+1. 进入 Jellyfin 控制台 > 插件目录/存储库 > 设置,点击添加
+2. 输入存储库名称:MetaTube
+3. 输入存储库
+
+```url
+# URL for GitHub
+https://raw.githubusercontent.com/metatube-community/jellyfin-plugin-metatube/dist/manifest.json
+```
+
+4. 在插件目录下找到 MetaTube,点击安装
+5. 重启 Jellyfin
+
+> 适用于中国大陆的存储库
+>
+> ```url
+> # URL for jsDelivr
+> https://cdn.jsdelivr.net/gh/metatube-community/jellyfin-plugin-metatube@dist/manifest.json
+> ```
+
+### Emby
+
+1. 从 Releases 下载 MetaTube 最新插件
+2. 解压出 MetaTube.dll 文件
+3. 将 dll 文件复制到 Emby 插件目录
+4. 重启 Emby 服务
+
+> PS:Emby 后续插件更新由计划任务在后台自动完成。
+
+### Plex
+
+1. 从 [GitHub](https://github.com/metatube-community/metatube-plex-plugins/archive/refs/heads/main.zip)
+ 或 [Releases](https://github.com/metatube-community/metatube-plex-plugins/releases) 下载最新的插件
+ zip 文件
+2. 将解压后的 MetaTube.bundle 文件夹移入 Plex 插件目录的根目录
+3. 其中文件夹 MetaTubeHelper.bundle 为辅助插件,可选择性安装
+4. 重启 Plex 服务
+
+### 常见 Emby 插件应用目录
+
+#### 群晖
+
+`/volume1/Emby/plugins`
+
+#### Windows
+
+`emby\programdata\plugins`
+
+#### Docker
+
+`<配置文件夹>/plugins`
+
+#### Linux(供参考)
+
+`/var/lib/emby-server/plugins/`
+
+---
+
+
diff --git a/apps/metatube-server-memory/data.yml b/apps/metatube-server-memory/data.yml
new file mode 100644
index 000000000..90e33526a
--- /dev/null
+++ b/apps/metatube-server-memory/data.yml
@@ -0,0 +1,15 @@
+additionalProperties:
+ key: metatube-server-memory
+ name: MetaTube (内存模式)
+ tags:
+ - WebSite
+ - Tool
+ - Local
+ shortDescZh: 为 Jellyfin/Emby/Plex 开发的超级好用的成人元数据刮削插件
+ shortDescEn: A super easy-to-use adult metadata scraping plugin developed for Jellyfin/Emby/Plex
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/metatube-community/
+ github: https://github.com/metatube-community/
+ document: https://metatube-community.github.io/
diff --git a/apps/metatube-server-memory/logo.png b/apps/metatube-server-memory/logo.png
new file mode 100644
index 000000000..5671ce959
Binary files /dev/null and b/apps/metatube-server-memory/logo.png differ
diff --git a/apps/mx-space-db/8.4.0/data.yml b/apps/mx-space-db/8.4.0/data.yml
new file mode 100644
index 000000000..226ebb47a
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/data.yml
@@ -0,0 +1,31 @@
+additionalProperties:
+ formFields:
+ - default: "/home/mx-space"
+ edit: true
+ envKey: MX_SERVER_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 2333
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: JWT_SECRET
+ labelZh: JWT 密钥
+ labelEn: JWT Secret
+ required: true
+ type: text
+ - default: ",localhost"
+ edit: true
+ envKey: ALLOWED_ORIGINS
+ labelZh: 允许的访问来源
+ labelEn: 允许的访问来源
+ required: true
+ type: text
diff --git a/apps/mx-space-db/8.4.0/docker-compose.yml b/apps/mx-space-db/8.4.0/docker-compose.yml
new file mode 100644
index 000000000..a340a167a
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/docker-compose.yml
@@ -0,0 +1,49 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ mx-server:
+ image: innei/mx-server:8.4.0
+ depends_on:
+ - mx-mongo
+ - mx-redis
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:2333
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${MX_SERVER_ROOT_PATH}/data:/root/.mx-space
+ environment:
+ - TZ=Asia/Shanghai
+ - PORT=2333
+ - DEMO=false
+ - NODE_ENV=production
+ - ENCRYPT_ENABLE=false
+ - DB_HOST=mx-mongo
+ - REDIS_HOST=mx-redis
+
+ mx-mongo:
+ image: mongo
+ container_name: mongo-${CONTAINER_NAME}
+ volumes:
+ - ${MX_SERVER_ROOT_PATH}/db:/data/db
+ networks:
+ - 1panel-network
+ restart: always
+
+ mx-redis:
+ image: redis:alpine
+ container_name: redis-${CONTAINER_NAME}
+ volumes:
+ - ${MX_SERVER_ROOT_PATH}/redis:/data
+ networks:
+ - 1panel-network
+ restart: always
diff --git a/apps/mx-space-db/8.4.0/envs/default.env b/apps/mx-space-db/8.4.0/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/mx-space-db/8.4.0/envs/global.env b/apps/mx-space-db/8.4.0/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/mx-space-db/8.4.0/scripts/init.sh b/apps/mx-space-db/8.4.0/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space-db/8.4.0/scripts/uninstall.sh b/apps/mx-space-db/8.4.0/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space-db/8.4.0/scripts/upgrade.sh b/apps/mx-space-db/8.4.0/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/mx-space-db/8.4.0/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space-db/README.md b/apps/mx-space-db/README.md
new file mode 100644
index 000000000..ada9e1607
--- /dev/null
+++ b/apps/mx-space-db/README.md
@@ -0,0 +1,37 @@
+# MixSpace (服务端)
+
+Mix Space 是一个现代化的前后端分离个人空间解决方案,也可以作为个人博客使用。
+
+
+
+
+
+## 特性
+
+### 基于 Next.js
+
+内置代码分割和图片优化,服务器端渲染(SSR)支持,性能强劲,速度快,SEO 友好。
+
+### 前端轻量快速
+
+其前端主题 Shiro 在 LightHouse 中表现优秀,Performance 和 Best practice 指数均大于 90%。
+
+### UI 现代化
+
+前端后端用户界面设计现代化,简洁而不简单,让你的体验更加流畅。
+
+### Markdown 语法支持
+
+Mix Space 原生支持 Markdown 语法,也支持自定义 Markdown 内语法,您可以使用自定义语法来丰富您的内容。
+
+### 后台云函数配置
+
+无限扩展、无限可能,通过 Core 内置的云函数配置功能实现歌单解析,追番列表等功能,还有更多。
+
+### 动态化配置前端
+
+你可以在后台设置前端的配置,比如网站名称,网站描述,网站图标,以及一些其他配置。
+
+---
+
+
diff --git a/apps/mx-space-db/data.yml b/apps/mx-space-db/data.yml
new file mode 100644
index 000000000..c725709df
--- /dev/null
+++ b/apps/mx-space-db/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: mx-space-db
+ name: MixSpace (内置MongoDB)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 前后端分离个人空间解决方案
+ shortDescEn: A frontend-backend separation personal space solution
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://mx-space.js.org/
+ github: https://github.com/mx-space/
+ document: https://mx-space.js.org/
diff --git a/apps/mx-space-db/logo.png b/apps/mx-space-db/logo.png
new file mode 100644
index 000000000..e25d3a186
Binary files /dev/null and b/apps/mx-space-db/logo.png differ
diff --git a/apps/mx-space-theme-shiro/1.2.3/data.yml b/apps/mx-space-theme-shiro/1.2.3/data.yml
new file mode 100644
index 000000000..22300ff45
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: "/home/mx-space-shiro"
+ edit: true
+ envKey: MX_SERVER_SHIRO_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 2323
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "http://127.0.0.1:2333/api/v2"
+ edit: true
+ envKey: NEXT_PUBLIC_API_URL
+ labelZh: API 地址
+ labelEn: API URL
+ required: true
+ type: text
+ - default: "http://127.0.0.1:2333/"
+ edit: true
+ envKey: NEXT_PUBLIC_GATEWAY_URL
+ labelZh: 网关地址
+ labelEn: Gateway URL
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: TMDB_API_KEY
+ labelZh: TMDB API KEY
+ labelEn: TMDB API KEY
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: GH_TOKEN
+ labelZh: Github Token
+ labelEn: Github Token
+ required: false
+ type: text
diff --git a/apps/mx-space-theme-shiro/1.2.3/docker-compose.yml b/apps/mx-space-theme-shiro/1.2.3/docker-compose.yml
new file mode 100644
index 000000000..cbc055e50
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/docker-compose.yml
@@ -0,0 +1,23 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ mx-server-shiro:
+ image: innei/shiro:1.2.3
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:2323
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${MX_SERVER_SHIRO_ROOT_PATH}/public:/app/public
+ environment:
+ - TZ=Asia/Shanghai
+ - NEXT_SHARP_PATH=/usr/local/lib/node_modules/sharp
diff --git a/apps/mx-space-theme-shiro/1.2.3/envs/default.env b/apps/mx-space-theme-shiro/1.2.3/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/mx-space-theme-shiro/1.2.3/envs/global.env b/apps/mx-space-theme-shiro/1.2.3/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/mx-space-theme-shiro/1.2.3/scripts/init.sh b/apps/mx-space-theme-shiro/1.2.3/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space-theme-shiro/1.2.3/scripts/uninstall.sh b/apps/mx-space-theme-shiro/1.2.3/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space-theme-shiro/1.2.3/scripts/upgrade.sh b/apps/mx-space-theme-shiro/1.2.3/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/mx-space-theme-shiro/1.2.3/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space-theme-shiro/README.md b/apps/mx-space-theme-shiro/README.md
new file mode 100644
index 000000000..8e4284f9b
--- /dev/null
+++ b/apps/mx-space-theme-shiro/README.md
@@ -0,0 +1,37 @@
+# MixSpace Shiro (主题)
+
+Mix Space 是一个现代化的前后端分离个人空间解决方案,也可以作为个人博客使用。
+
+
+
+
+
+## 特性
+
+### 基于 Next.js
+
+内置代码分割和图片优化,服务器端渲染(SSR)支持,性能强劲,速度快,SEO 友好。
+
+### 前端轻量快速
+
+其前端主题 Shiro 在 LightHouse 中表现优秀,Performance 和 Best practice 指数均大于 90%。
+
+### UI 现代化
+
+前端后端用户界面设计现代化,简洁而不简单,让你的体验更加流畅。
+
+### Markdown 语法支持
+
+Mix Space 原生支持 Markdown 语法,也支持自定义 Markdown 内语法,您可以使用自定义语法来丰富您的内容。
+
+### 后台云函数配置
+
+无限扩展、无限可能,通过 Core 内置的云函数配置功能实现歌单解析,追番列表等功能,还有更多。
+
+### 动态化配置前端
+
+你可以在后台设置前端的配置,比如网站名称,网站描述,网站图标,以及一些其他配置。
+
+---
+
+
diff --git a/apps/mx-space-theme-shiro/data.yml b/apps/mx-space-theme-shiro/data.yml
new file mode 100644
index 000000000..56c5f8a8d
--- /dev/null
+++ b/apps/mx-space-theme-shiro/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: mx-space-theme-shiro
+ name: MixSpace (主题-Shiro)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 前后端分离个人空间解决方案
+ shortDescEn: A frontend-backend separation personal space solution
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://mx-space.js.org/
+ github: https://github.com/mx-space/
+ document: https://mx-space.js.org/
diff --git a/apps/mx-space-theme-shiro/logo.png b/apps/mx-space-theme-shiro/logo.png
new file mode 100644
index 000000000..e25d3a186
Binary files /dev/null and b/apps/mx-space-theme-shiro/logo.png differ
diff --git a/apps/mx-space/8.4.0/data.yml b/apps/mx-space/8.4.0/data.yml
new file mode 100644
index 000000000..9366174bb
--- /dev/null
+++ b/apps/mx-space/8.4.0/data.yml
@@ -0,0 +1,92 @@
+additionalProperties:
+ formFields:
+ - default: "/home/mx-space"
+ edit: true
+ envKey: MX_SERVER_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 2333
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: JWT_SECRET
+ labelZh: JWT 密钥
+ labelEn: JWT Secret
+ required: true
+ type: text
+ - default: ",localhost"
+ edit: true
+ envKey: ALLOWED_ORIGINS
+ labelZh: 允许的访问来源
+ labelEn: 允许的访问来源
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: DB_HOST
+ labelZh: 数据库 主机地址 (MongoDB)
+ labelEn: Database Host (MongoDB)
+ required: true
+ type: text
+ - default: 27017
+ edit: true
+ envKey: DB_PORT
+ labelZh: 数据库 端口 (MongoDB)
+ labelEn: Database Port (MongoDB)
+ required: true
+ rule: paramPort
+ type: number
+ - default: "mx-space"
+ edit: true
+ envKey: DB_COLLECTION_NAME
+ labelZh: 数据库 名称 (MongoDB)
+ labelEn: Database Name (MongoDB)
+ required: true
+ rule: paramCommon
+ type: text
+ - default: "mx-space"
+ edit: true
+ envKey: DB_USER
+ labelZh: 数据库 用户名 (MongoDB)
+ labelEn: Database Username (MongoDB)
+ required: false
+ type: text
+ - default: "mx-space"
+ edit: true
+ envKey: DB_PASSWORD
+ labelZh: 数据库 密码 (MongoDB)
+ labelEn: Database Password (MongoDB)
+ random: true
+ required: false
+ rule: paramComplexity
+ type: password
+ - default: "127.0.0.1"
+ edit: true
+ envKey: REDIS_HOST
+ labelZh: Redis 主机
+ labelEn: Redis Host
+ required: true
+ type: text
+ - default: 6379
+ edit: true
+ envKey: REDIS_PORT
+ labelZh: Redis 端口
+ labelEn: Redis Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: REDIS_PASSWORD
+ labelZh: Redis 密码
+ labelEn: Redis Password
+ required: false
+ type: password
diff --git a/apps/mx-space/8.4.0/docker-compose.yml b/apps/mx-space/8.4.0/docker-compose.yml
new file mode 100644
index 000000000..b6a8c6a69
--- /dev/null
+++ b/apps/mx-space/8.4.0/docker-compose.yml
@@ -0,0 +1,26 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ mx-server:
+ image: innei/mx-server:8.4.0
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:2333
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${MX_SERVER_ROOT_PATH}/data:/root/.mx-space
+ environment:
+ - TZ=Asia/Shanghai
+ - PORT=2333
+ - DEMO=false
+ - NODE_ENV=production
+ - ENCRYPT_ENABLE=false
diff --git a/apps/mx-space/8.4.0/envs/default.env b/apps/mx-space/8.4.0/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/mx-space/8.4.0/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/mx-space/8.4.0/envs/global.env b/apps/mx-space/8.4.0/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/mx-space/8.4.0/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/mx-space/8.4.0/scripts/init.sh b/apps/mx-space/8.4.0/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/mx-space/8.4.0/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space/8.4.0/scripts/uninstall.sh b/apps/mx-space/8.4.0/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/mx-space/8.4.0/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space/8.4.0/scripts/upgrade.sh b/apps/mx-space/8.4.0/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/mx-space/8.4.0/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/mx-space/README.md b/apps/mx-space/README.md
new file mode 100644
index 000000000..ada9e1607
--- /dev/null
+++ b/apps/mx-space/README.md
@@ -0,0 +1,37 @@
+# MixSpace (服务端)
+
+Mix Space 是一个现代化的前后端分离个人空间解决方案,也可以作为个人博客使用。
+
+
+
+
+
+## 特性
+
+### 基于 Next.js
+
+内置代码分割和图片优化,服务器端渲染(SSR)支持,性能强劲,速度快,SEO 友好。
+
+### 前端轻量快速
+
+其前端主题 Shiro 在 LightHouse 中表现优秀,Performance 和 Best practice 指数均大于 90%。
+
+### UI 现代化
+
+前端后端用户界面设计现代化,简洁而不简单,让你的体验更加流畅。
+
+### Markdown 语法支持
+
+Mix Space 原生支持 Markdown 语法,也支持自定义 Markdown 内语法,您可以使用自定义语法来丰富您的内容。
+
+### 后台云函数配置
+
+无限扩展、无限可能,通过 Core 内置的云函数配置功能实现歌单解析,追番列表等功能,还有更多。
+
+### 动态化配置前端
+
+你可以在后台设置前端的配置,比如网站名称,网站描述,网站图标,以及一些其他配置。
+
+---
+
+
diff --git a/apps/mx-space/data.yml b/apps/mx-space/data.yml
new file mode 100644
index 000000000..eed6dabfb
--- /dev/null
+++ b/apps/mx-space/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: mx-space
+ name: MixSpace
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 前后端分离个人空间解决方案
+ shortDescEn: A frontend-backend separation personal space solution
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://mx-space.js.org/
+ github: https://github.com/mx-space/
+ document: https://mx-space.js.org/
diff --git a/apps/mx-space/logo.png b/apps/mx-space/logo.png
new file mode 100644
index 000000000..e25d3a186
Binary files /dev/null and b/apps/mx-space/logo.png differ
diff --git a/apps/neko-brave/3.0.7/data.yml b/apps/neko-brave/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-brave/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-brave/3.0.7/docker-compose.yml b/apps/neko-brave/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..815a09ca3
--- /dev/null
+++ b/apps/neko-brave/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/brave:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-brave/3.0.7/envs/default.env b/apps/neko-brave/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-brave/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-brave/3.0.7/envs/global.env b/apps/neko-brave/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-brave/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-brave/3.0.7/scripts/init.sh b/apps/neko-brave/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-brave/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-brave/3.0.7/scripts/uninstall.sh b/apps/neko-brave/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-brave/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-brave/3.0.7/scripts/upgrade.sh b/apps/neko-brave/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-brave/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-brave/README.md b/apps/neko-brave/README.md
new file mode 100644
index 000000000..5049a387d
--- /dev/null
+++ b/apps/neko-brave/README.md
@@ -0,0 +1,39 @@
+# Neko (Brave版)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-brave/data.yml b/apps/neko-brave/data.yml
new file mode 100644
index 000000000..611ce2dba
--- /dev/null
+++ b/apps/neko-brave/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-brave
+ name: Neko (Brave版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-brave/logo.png b/apps/neko-brave/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-brave/logo.png differ
diff --git a/apps/neko-chromium/3.0.6/data.yml b/apps/neko-chromium/3.0.6/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-chromium/3.0.6/docker-compose.yml b/apps/neko-chromium/3.0.6/docker-compose.yml
new file mode 100644
index 000000000..fefb987ab
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/chromium:3.0.6
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-chromium/3.0.6/envs/default.env b/apps/neko-chromium/3.0.6/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-chromium/3.0.6/envs/global.env b/apps/neko-chromium/3.0.6/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-chromium/3.0.6/scripts/init.sh b/apps/neko-chromium/3.0.6/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-chromium/3.0.6/scripts/uninstall.sh b/apps/neko-chromium/3.0.6/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-chromium/3.0.6/scripts/upgrade.sh b/apps/neko-chromium/3.0.6/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-chromium/3.0.6/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-chromium/README.md b/apps/neko-chromium/README.md
new file mode 100644
index 000000000..7eb92556f
--- /dev/null
+++ b/apps/neko-chromium/README.md
@@ -0,0 +1,39 @@
+# Neko (Chromium版)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-chromium/data.yml b/apps/neko-chromium/data.yml
new file mode 100644
index 000000000..4585469b0
--- /dev/null
+++ b/apps/neko-chromium/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-chromium
+ name: Neko (Chromium版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-chromium/logo.png b/apps/neko-chromium/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-chromium/logo.png differ
diff --git a/apps/neko-firefox/3.0.7/data.yml b/apps/neko-firefox/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-firefox/3.0.7/docker-compose.yml b/apps/neko-firefox/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..44041fcc8
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/firefox:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-firefox/3.0.7/envs/default.env b/apps/neko-firefox/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-firefox/3.0.7/envs/global.env b/apps/neko-firefox/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-firefox/3.0.7/scripts/init.sh b/apps/neko-firefox/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-firefox/3.0.7/scripts/uninstall.sh b/apps/neko-firefox/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-firefox/3.0.7/scripts/upgrade.sh b/apps/neko-firefox/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-firefox/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-firefox/README.md b/apps/neko-firefox/README.md
new file mode 100644
index 000000000..442d5ecd0
--- /dev/null
+++ b/apps/neko-firefox/README.md
@@ -0,0 +1,39 @@
+# Neko (火狐版)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-firefox/data.yml b/apps/neko-firefox/data.yml
new file mode 100644
index 000000000..064029b1b
--- /dev/null
+++ b/apps/neko-firefox/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-firefox
+ name: Neko (FireFox版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-firefox/logo.png b/apps/neko-firefox/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-firefox/logo.png differ
diff --git a/apps/neko-google-chrome/3.0.7/data.yml b/apps/neko-google-chrome/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-google-chrome/3.0.7/docker-compose.yml b/apps/neko-google-chrome/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..bb5dc1e94
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/google-chrome:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-google-chrome/3.0.7/envs/default.env b/apps/neko-google-chrome/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-google-chrome/3.0.7/envs/global.env b/apps/neko-google-chrome/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-google-chrome/3.0.7/scripts/init.sh b/apps/neko-google-chrome/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-google-chrome/3.0.7/scripts/uninstall.sh b/apps/neko-google-chrome/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-google-chrome/3.0.7/scripts/upgrade.sh b/apps/neko-google-chrome/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-google-chrome/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-google-chrome/README.md b/apps/neko-google-chrome/README.md
new file mode 100644
index 000000000..e85104d52
--- /dev/null
+++ b/apps/neko-google-chrome/README.md
@@ -0,0 +1,39 @@
+# Neko (Google Chrome版版)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-google-chrome/data.yml b/apps/neko-google-chrome/data.yml
new file mode 100644
index 000000000..76725556b
--- /dev/null
+++ b/apps/neko-google-chrome/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-google-chrome
+ name: Neko (Google Chrome版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-google-chrome/logo.png b/apps/neko-google-chrome/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-google-chrome/logo.png differ
diff --git a/apps/neko-kde/3.0.6/data.yml b/apps/neko-kde/3.0.6/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-kde/3.0.6/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-kde/3.0.6/docker-compose.yml b/apps/neko-kde/3.0.6/docker-compose.yml
new file mode 100644
index 000000000..5191b45e2
--- /dev/null
+++ b/apps/neko-kde/3.0.6/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/kde:3.0.6
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-kde/3.0.6/envs/default.env b/apps/neko-kde/3.0.6/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-kde/3.0.6/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-kde/3.0.6/envs/global.env b/apps/neko-kde/3.0.6/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-kde/3.0.6/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-kde/3.0.6/scripts/init.sh b/apps/neko-kde/3.0.6/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-kde/3.0.6/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-kde/3.0.6/scripts/uninstall.sh b/apps/neko-kde/3.0.6/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-kde/3.0.6/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-kde/3.0.6/scripts/upgrade.sh b/apps/neko-kde/3.0.6/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-kde/3.0.6/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-kde/README.md b/apps/neko-kde/README.md
new file mode 100644
index 000000000..5110919f9
--- /dev/null
+++ b/apps/neko-kde/README.md
@@ -0,0 +1,39 @@
+# Neko (Kde 丰富桌面环境)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-kde/data.yml b/apps/neko-kde/data.yml
new file mode 100644
index 000000000..0caaccb2b
--- /dev/null
+++ b/apps/neko-kde/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-kde
+ name: Neko (Kde丰富桌面环境)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-kde/logo.png b/apps/neko-kde/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-kde/logo.png differ
diff --git a/apps/neko-microsoft-edge/3.0.7/data.yml b/apps/neko-microsoft-edge/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-microsoft-edge/3.0.7/docker-compose.yml b/apps/neko-microsoft-edge/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..8bf593cbf
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/microsoft-edge:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-microsoft-edge/3.0.7/envs/default.env b/apps/neko-microsoft-edge/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-microsoft-edge/3.0.7/envs/global.env b/apps/neko-microsoft-edge/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-microsoft-edge/3.0.7/scripts/init.sh b/apps/neko-microsoft-edge/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-microsoft-edge/3.0.7/scripts/uninstall.sh b/apps/neko-microsoft-edge/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-microsoft-edge/3.0.7/scripts/upgrade.sh b/apps/neko-microsoft-edge/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-microsoft-edge/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-microsoft-edge/README.md b/apps/neko-microsoft-edge/README.md
new file mode 100644
index 000000000..d35ce4c94
--- /dev/null
+++ b/apps/neko-microsoft-edge/README.md
@@ -0,0 +1,39 @@
+# Neko (Microsoft Edge版)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-microsoft-edge/data.yml b/apps/neko-microsoft-edge/data.yml
new file mode 100644
index 000000000..d66bc40b6
--- /dev/null
+++ b/apps/neko-microsoft-edge/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-microsoft-edge
+ name: Neko (Microsoft Edge版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-microsoft-edge/logo.png b/apps/neko-microsoft-edge/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-microsoft-edge/logo.png differ
diff --git a/apps/neko-remmina/3.0.7/data.yml b/apps/neko-remmina/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-remmina/3.0.7/docker-compose.yml b/apps/neko-remmina/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..3e9f0dd31
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/remmina:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-remmina/3.0.7/envs/default.env b/apps/neko-remmina/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-remmina/3.0.7/envs/global.env b/apps/neko-remmina/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-remmina/3.0.7/scripts/init.sh b/apps/neko-remmina/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-remmina/3.0.7/scripts/uninstall.sh b/apps/neko-remmina/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-remmina/3.0.7/scripts/upgrade.sh b/apps/neko-remmina/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-remmina/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-remmina/README.md b/apps/neko-remmina/README.md
new file mode 100644
index 000000000..88bb12573
--- /dev/null
+++ b/apps/neko-remmina/README.md
@@ -0,0 +1,39 @@
+# Neko (Remmina 远程桌面客户端)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-remmina/data.yml b/apps/neko-remmina/data.yml
new file mode 100644
index 000000000..92b97d71c
--- /dev/null
+++ b/apps/neko-remmina/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-remmina
+ name: Neko (Remmina远程桌面客户端)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-remmina/logo.png b/apps/neko-remmina/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-remmina/logo.png differ
diff --git a/apps/neko-tor-browser/3.0.7/data.yml b/apps/neko-tor-browser/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-tor-browser/3.0.7/docker-compose.yml b/apps/neko-tor-browser/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..a77ae35b1
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/tor-browser:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-tor-browser/3.0.7/envs/default.env b/apps/neko-tor-browser/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-tor-browser/3.0.7/envs/global.env b/apps/neko-tor-browser/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-tor-browser/3.0.7/scripts/init.sh b/apps/neko-tor-browser/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-tor-browser/3.0.7/scripts/uninstall.sh b/apps/neko-tor-browser/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-tor-browser/3.0.7/scripts/upgrade.sh b/apps/neko-tor-browser/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-tor-browser/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-tor-browser/README.md b/apps/neko-tor-browser/README.md
new file mode 100644
index 000000000..9cef430d6
--- /dev/null
+++ b/apps/neko-tor-browser/README.md
@@ -0,0 +1,39 @@
+# Neko (洋葱浏览器版)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-tor-browser/data.yml b/apps/neko-tor-browser/data.yml
new file mode 100644
index 000000000..3cb825a5e
--- /dev/null
+++ b/apps/neko-tor-browser/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-tor-browser
+ name: Neko (Tor Browser版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-tor-browser/logo.png b/apps/neko-tor-browser/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-tor-browser/logo.png differ
diff --git a/apps/neko-vlc/3.0.7/data.yml b/apps/neko-vlc/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-vlc/3.0.7/docker-compose.yml b/apps/neko-vlc/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..ac08f8c45
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/vlc:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-vlc/3.0.7/envs/default.env b/apps/neko-vlc/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-vlc/3.0.7/envs/global.env b/apps/neko-vlc/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-vlc/3.0.7/scripts/init.sh b/apps/neko-vlc/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-vlc/3.0.7/scripts/uninstall.sh b/apps/neko-vlc/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-vlc/3.0.7/scripts/upgrade.sh b/apps/neko-vlc/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-vlc/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-vlc/README.md b/apps/neko-vlc/README.md
new file mode 100644
index 000000000..3504c1cb4
--- /dev/null
+++ b/apps/neko-vlc/README.md
@@ -0,0 +1,39 @@
+# Neko (Vlc 媒体播放器)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-vlc/data.yml b/apps/neko-vlc/data.yml
new file mode 100644
index 000000000..91ffcfe44
--- /dev/null
+++ b/apps/neko-vlc/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-vlc
+ name: Neko (Vlc媒体播放器)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-vlc/logo.png b/apps/neko-vlc/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-vlc/logo.png differ
diff --git a/apps/neko-xfce/3.0.7/data.yml b/apps/neko-xfce/3.0.7/data.yml
new file mode 100644
index 000000000..85479c619
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "56000-56100"
+ edit: true
+ envKey: PANEL_APP_PORT_WEBRTC_EPR
+ labelZh: WebRTC 端口范围
+ labelEn: WebRTC port range
+ required: true
+ type: text
+ - default: "admin"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD
+ labelZh: 管理员密码
+ labelEn: 管理员密码
+ required: true
+ type: password
+ - default: "neko"
+ edit: true
+ envKey: NEKO_MEMBER_MULTIUSER_USER_PASSWORD
+ labelZh: 用户密码
+ labelEn: 用户密码
+ required: true
+ type: password
+ - default: "1920x1080@30"
+ edit: true
+ envKey: NEKO_DESKTOP_SCREEN
+ labelZh: 桌面分辨率
+ labelEn: Desktop Resolution
+ required: true
+ type: text
+ - default: "127.0.0.1"
+ edit: true
+ envKey: NEKO_WEBRTC_NAT1TO1
+ labelZh: 访问主机 (NAT1TO1)
+ labelEn: Access Host (NAT1TO1)
+ required: true
+ type: text
diff --git a/apps/neko-xfce/3.0.7/docker-compose.yml b/apps/neko-xfce/3.0.7/docker-compose.yml
new file mode 100644
index 000000000..310e7e988
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ neko:
+ image: ghcr.io/m1k1o/neko/xfce:3.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ cap_add:
+ - SYS_ADMIN
+ shm_size: "2gb"
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}
+ - ${PANEL_APP_PORT_WEBRTC_EPR}:${PANEL_APP_PORT_WEBRTC_EPR}/udp
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - NEKO_WEBRTC_EPR=${PANEL_APP_PORT_WEBRTC_EPR}
+ - NEKO_WEBRTC_ICELITE=1
+ - NEKO_WEBRTC_IP_RETRIEVAL_URL=https://ifconfig.co/ip
diff --git a/apps/neko-xfce/3.0.7/envs/default.env b/apps/neko-xfce/3.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/neko-xfce/3.0.7/envs/global.env b/apps/neko-xfce/3.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/neko-xfce/3.0.7/scripts/init.sh b/apps/neko-xfce/3.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-xfce/3.0.7/scripts/uninstall.sh b/apps/neko-xfce/3.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-xfce/3.0.7/scripts/upgrade.sh b/apps/neko-xfce/3.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/neko-xfce/3.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/neko-xfce/README.md b/apps/neko-xfce/README.md
new file mode 100644
index 000000000..ecd172d6c
--- /dev/null
+++ b/apps/neko-xfce/README.md
@@ -0,0 +1,39 @@
+# Neko (Xface 轻量桌面环境)
+
+在 docker 中运行并使用 WebRTC 的自托管虚拟浏览器
+
+
+
+
+
+## 简介
+
+
+
+Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko
+是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。使用
+Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试
+Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性,Neko 都是完美的解决方案。
+
+| Application | AMD64 | ARM64 | ARMv7 |
+|----------------------------------------------------------------------------------------------------|-------|-------|-------|
+| [Firefox](https://neko.m1k1o.net/docs/v3/installation/docker-images#firefox) | ✅ | ✅ * | ✅ * |
+| [Tor Browser](https://neko.m1k1o.net/docs/v3/installation/docker-images#tor-browser) | ✅ | ❌ | ❌ |
+| [Waterfox](https://neko.m1k1o.net/docs/v3/installation/docker-images#waterfox) | ✅ | ❌ | ❌ |
+| [Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#chromium) | ✅ | ✅ * | ✅ * |
+| [Google Chrome](https://neko.m1k1o.net/docs/v3/installation/docker-images#google-chrome) | ✅ | ❌ | ❌ |
+| [Ungoogled Chromium](https://neko.m1k1o.net/docs/v3/installation/docker-images#ungoogled-chromium) | ✅ | ❌ | ❌ |
+| [Microsoft Edge](https://neko.m1k1o.net/docs/v3/installation/docker-images#microsoft-edge) | ✅ | ❌ | ❌ |
+| [Brave](https://neko.m1k1o.net/docs/v3/installation/docker-images#brave) | ✅ | ✅ * | ❌ |
+| [Vivaldi](https://neko.m1k1o.net/docs/v3/installation/docker-images#vivaldi) | ✅ | ✅ * | ✅ * |
+| [Opera](https://neko.m1k1o.net/docs/v3/installation/docker-images#opera) | ✅ | ❌ | ❌ |
+| [Xfce](https://neko.m1k1o.net/docs/v3/installation/docker-images#xfce) | ✅ | ✅ | ✅ |
+| [KDE](https://neko.m1k1o.net/docs/v3/installation/docker-images#kde) | ✅ | ✅ | ✅ |
+| [Remmina](https://neko.m1k1o.net/docs/v3/installation/docker-images#remmina) | ✅ | ✅ | ✅ |
+| [VLC](https://neko.m1k1o.net/docs/v3/installation/docker-images#vlc) | ✅ | ✅ | ✅ |
+
+> `*` No DRM support.
+
+---
+
+
diff --git a/apps/neko-xfce/data.yml b/apps/neko-xfce/data.yml
new file mode 100644
index 000000000..f03cbcbaf
--- /dev/null
+++ b/apps/neko-xfce/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: neko-xfce
+ name: Neko (Xface轻量桌面环境)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 虚拟浏览器
+ shortDescEn: Virtual Browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://neko.m1k1o.net/
+ github: https://github.com/m1k1o/neko/
+ document: https://neko.m1k1o.net/
diff --git a/apps/neko-xfce/logo.png b/apps/neko-xfce/logo.png
new file mode 100644
index 000000000..8c2eed340
Binary files /dev/null and b/apps/neko-xfce/logo.png differ
diff --git a/apps/peer-ban-helper/8.0.12/data.yml b/apps/peer-ban-helper/8.0.12/data.yml
new file mode 100644
index 000000000..b13f18729
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/data.yml
@@ -0,0 +1,33 @@
+additionalProperties:
+ formFields:
+ - default: "1panel-network"
+ edit: true
+ envKey: NETWORK_MODE
+ labelZh: 网络模式
+ labelEn: Network mode
+ required: true
+ type: select
+ values:
+ - label: 主机网络模式
+ value: "host"
+ - label: 桥接网络模式
+ value: "bridge"
+ - label: 无网络模式
+ value: "none"
+ - label: 1panel-network
+ value: "1panel-network"
+ - default: "/home/peerbanhelper"
+ edit: true
+ envKey: PEERBANHELPER_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 9898
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/peer-ban-helper/8.0.12/docker-compose.yml b/apps/peer-ban-helper/8.0.12/docker-compose.yml
new file mode 100644
index 000000000..c486a65e4
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/docker-compose.yml
@@ -0,0 +1,23 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ peerbanhelper:
+ image: ghostchu/peerbanhelper:v8.0.12
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ network_mode: ${NETWORK_MODE:-host}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:9898
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${PEERBANHELPER_ROOT_PATH}/app:/app/data
+ environment:
+ - PUID=0
+ - PGID=0
+ - TZ=Asia/Shanghai
diff --git a/apps/peer-ban-helper/8.0.12/envs/default.env b/apps/peer-ban-helper/8.0.12/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/peer-ban-helper/8.0.12/envs/global.env b/apps/peer-ban-helper/8.0.12/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/peer-ban-helper/8.0.12/scripts/init.sh b/apps/peer-ban-helper/8.0.12/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/peer-ban-helper/8.0.12/scripts/uninstall.sh b/apps/peer-ban-helper/8.0.12/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/peer-ban-helper/8.0.12/scripts/upgrade.sh b/apps/peer-ban-helper/8.0.12/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/peer-ban-helper/8.0.12/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/peer-ban-helper/README.md b/apps/peer-ban-helper/README.md
new file mode 100644
index 000000000..82a9b6794
--- /dev/null
+++ b/apps/peer-ban-helper/README.md
@@ -0,0 +1,41 @@
+# PeerBanHelper
+
+PeerBanHelper 是一个开放源代码的个人网络防火墙安全软件
+
+
+
+
+
+## 安装说明
+
+所有安装在 Docker 中的下载器,必须使用 host 网络驱动程序。PBH 需要下载器能获得 Peer 的真实 IP,不能使用 bridge 桥接模式!
+
++ qBittorrent/qBitorrent,4.5.0 或更高版本,不支持 XDown
++ BiglyBT(需要安装插件)
++ Deluge(需要安装插件)
++ Transmission (4.1.0-beta2 或更高版本)
++ BitComet v2.10 Beta6 [20240928] 或更高版本 (不支持 P2SP LTSeed 长效种子反吸血,因为 BitComet 暂时无法封禁长效连接)
+
+PeerBanHelper 仅支持对传统 IPv4 或 IPv6 地址的反吸血,如遇 I2P 或者 Tor 连接将主动忽略。
+
+## 简介
+
+PeerBanHelper 是一个开放源代码的个人网络防火墙安全软件。通过连接支持的应用程序(如:BitTorrent 客户端软件)的 Web API
+接口获取受保护应用的连接信息,识别其中可能包含潜在安全威胁的连接并通知对应的应用程序主动断开其连接。
+
+## 特性
+
++ PeerID 黑名单
++ Client Name 黑名单
++ IP/GeoIP/IP 类型 黑名单
++ 虚假进度检查器(提供启发式客户端检测功能)
++ 自动连锁封禁
++ 多拨追猎
++ Peer ID/Client Name 伪装检查;通过 AviatorScript 引擎 实现
++ 主动监测(提供本地数据分析功能)
++ 网络 IP 集规则订阅
++ WebUI (目前支持:活跃封禁名单查看,历史封禁查询,封禁最频繁的 Top 50 IP,规则订阅管理,图表查看,Peer 列表查看)
+
+---
+
+
diff --git a/apps/peer-ban-helper/data.yml b/apps/peer-ban-helper/data.yml
new file mode 100644
index 000000000..d0fe79d7a
--- /dev/null
+++ b/apps/peer-ban-helper/data.yml
@@ -0,0 +1,15 @@
+additionalProperties:
+ key: peer-ban-helper
+ name: PeerBanHelper
+ tags:
+ - WebSite
+ - Tool
+ - Local
+ shortDescZh: BT 反吸血工具
+ shortDescEn: BT Anti-Siphon Tool
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/PBH-BTN/PeerBanHelper/
+ github: https://github.com/PBH-BTN/PeerBanHelper/
+ document: https://github.com/PBH-BTN/PeerBanHelper/
diff --git a/apps/peer-ban-helper/logo.png b/apps/peer-ban-helper/logo.png
new file mode 100644
index 000000000..b6bdcc08e
Binary files /dev/null and b/apps/peer-ban-helper/logo.png differ
diff --git a/apps/peer-ban-helper/logo.svg b/apps/peer-ban-helper/logo.svg
new file mode 100644
index 000000000..96a19a383
--- /dev/null
+++ b/apps/peer-ban-helper/logo.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/postgresql-postgis/16-3.5-alpine/data.yml b/apps/postgresql-postgis/16-3.5-alpine/data.yml
new file mode 100644
index 000000000..ac55698bd
--- /dev/null
+++ b/apps/postgresql-postgis/16-3.5-alpine/data.yml
@@ -0,0 +1,40 @@
+additionalProperties:
+ formFields:
+ - default: "/home/postgres"
+ edit: true
+ envKey: POSTGRES_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: ""
+ edit: false
+ envKey: POSTGRES_PASSWORD
+ labelZh: Postgres 密码 (首次生效)
+ labelEn: Postgres Password (First Time)
+ required: true
+ random: true
+ rule: paramComplexity
+ type: password
+ - default: 5432
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: Postgres 端口
+ labelEn: Postgres Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_USER
+ labelZh: Postgres 用户(不建议改动)
+ labelEn: Postgres User
+ required: false
+ type: text
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_DB
+ labelZh: Postgres 数据库名称(不建议改动)
+ labelEn: Postgres Database Name
+ required: false
+ type: text
diff --git a/apps/postgresql-postgis/16-3.5-alpine/docker-compose.yml b/apps/postgresql-postgis/16-3.5-alpine/docker-compose.yml
new file mode 100644
index 000000000..6bce54c5f
--- /dev/null
+++ b/apps/postgresql-postgis/16-3.5-alpine/docker-compose.yml
@@ -0,0 +1,25 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ postgresql:
+ image: postgis/postgis:16-3.5-alpine
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:5432
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${POSTGRES_ROOT_PATH}/data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ POSTGRES_USER: ${POSTGRES_USER:-postgres}
+ POSTGRES_DB: ${POSTGRES_DB:-postgres}
+ POSTGRES_INITDB_ARGS: "--data-checksums"
diff --git a/apps/postgresql-postgis/16-3.5-alpine/envs/default.env b/apps/postgresql-postgis/16-3.5-alpine/envs/default.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5-alpine/envs/global.env b/apps/postgresql-postgis/16-3.5-alpine/envs/global.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5-alpine/scripts/init.sh b/apps/postgresql-postgis/16-3.5-alpine/scripts/init.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5-alpine/scripts/uninstall.sh b/apps/postgresql-postgis/16-3.5-alpine/scripts/uninstall.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5-alpine/scripts/upgrade.sh b/apps/postgresql-postgis/16-3.5-alpine/scripts/upgrade.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5/data.yml b/apps/postgresql-postgis/16-3.5/data.yml
new file mode 100644
index 000000000..ac55698bd
--- /dev/null
+++ b/apps/postgresql-postgis/16-3.5/data.yml
@@ -0,0 +1,40 @@
+additionalProperties:
+ formFields:
+ - default: "/home/postgres"
+ edit: true
+ envKey: POSTGRES_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: ""
+ edit: false
+ envKey: POSTGRES_PASSWORD
+ labelZh: Postgres 密码 (首次生效)
+ labelEn: Postgres Password (First Time)
+ required: true
+ random: true
+ rule: paramComplexity
+ type: password
+ - default: 5432
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: Postgres 端口
+ labelEn: Postgres Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_USER
+ labelZh: Postgres 用户(不建议改动)
+ labelEn: Postgres User
+ required: false
+ type: text
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_DB
+ labelZh: Postgres 数据库名称(不建议改动)
+ labelEn: Postgres Database Name
+ required: false
+ type: text
diff --git a/apps/postgresql-postgis/16-3.5/docker-compose.yml b/apps/postgresql-postgis/16-3.5/docker-compose.yml
new file mode 100644
index 000000000..c0647f0af
--- /dev/null
+++ b/apps/postgresql-postgis/16-3.5/docker-compose.yml
@@ -0,0 +1,25 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ postgresql:
+ image: postgis/postgis:16-3.5
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:5432
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${POSTGRES_ROOT_PATH}/data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ POSTGRES_USER: ${POSTGRES_USER:-postgres}
+ POSTGRES_DB: ${POSTGRES_DB:-postgres}
+ POSTGRES_INITDB_ARGS: "--data-checksums"
diff --git a/apps/postgresql-postgis/16-3.5/envs/default.env b/apps/postgresql-postgis/16-3.5/envs/default.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5/envs/global.env b/apps/postgresql-postgis/16-3.5/envs/global.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5/scripts/init.sh b/apps/postgresql-postgis/16-3.5/scripts/init.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5/scripts/uninstall.sh b/apps/postgresql-postgis/16-3.5/scripts/uninstall.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/16-3.5/scripts/upgrade.sh b/apps/postgresql-postgis/16-3.5/scripts/upgrade.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5-alpine/data.yml b/apps/postgresql-postgis/17-3.5-alpine/data.yml
new file mode 100644
index 000000000..ac55698bd
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5-alpine/data.yml
@@ -0,0 +1,40 @@
+additionalProperties:
+ formFields:
+ - default: "/home/postgres"
+ edit: true
+ envKey: POSTGRES_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: ""
+ edit: false
+ envKey: POSTGRES_PASSWORD
+ labelZh: Postgres 密码 (首次生效)
+ labelEn: Postgres Password (First Time)
+ required: true
+ random: true
+ rule: paramComplexity
+ type: password
+ - default: 5432
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: Postgres 端口
+ labelEn: Postgres Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_USER
+ labelZh: Postgres 用户(不建议改动)
+ labelEn: Postgres User
+ required: false
+ type: text
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_DB
+ labelZh: Postgres 数据库名称(不建议改动)
+ labelEn: Postgres Database Name
+ required: false
+ type: text
diff --git a/apps/postgresql-postgis/17-3.5-alpine/docker-compose.yml b/apps/postgresql-postgis/17-3.5-alpine/docker-compose.yml
new file mode 100644
index 000000000..97af1b5a0
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5-alpine/docker-compose.yml
@@ -0,0 +1,25 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ postgresql:
+ image: postgis/postgis:17-3.5-alpine
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:5432
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${POSTGRES_ROOT_PATH}/data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ POSTGRES_USER: ${POSTGRES_USER:-postgres}
+ POSTGRES_DB: ${POSTGRES_DB:-postgres}
+ POSTGRES_INITDB_ARGS: "--data-checksums"
diff --git a/apps/postgresql-postgis/17-3.5-alpine/envs/default.env b/apps/postgresql-postgis/17-3.5-alpine/envs/default.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5-alpine/envs/global.env b/apps/postgresql-postgis/17-3.5-alpine/envs/global.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5-alpine/scripts/init.sh b/apps/postgresql-postgis/17-3.5-alpine/scripts/init.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5-alpine/scripts/uninstall.sh b/apps/postgresql-postgis/17-3.5-alpine/scripts/uninstall.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5-alpine/scripts/upgrade.sh b/apps/postgresql-postgis/17-3.5-alpine/scripts/upgrade.sh
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5/data.yml b/apps/postgresql-postgis/17-3.5/data.yml
new file mode 100644
index 000000000..ac55698bd
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5/data.yml
@@ -0,0 +1,40 @@
+additionalProperties:
+ formFields:
+ - default: "/home/postgres"
+ edit: true
+ envKey: POSTGRES_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: ""
+ edit: false
+ envKey: POSTGRES_PASSWORD
+ labelZh: Postgres 密码 (首次生效)
+ labelEn: Postgres Password (First Time)
+ required: true
+ random: true
+ rule: paramComplexity
+ type: password
+ - default: 5432
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: Postgres 端口
+ labelEn: Postgres Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_USER
+ labelZh: Postgres 用户(不建议改动)
+ labelEn: Postgres User
+ required: false
+ type: text
+ - default: "postgres"
+ edit: false
+ envKey: POSTGRES_DB
+ labelZh: Postgres 数据库名称(不建议改动)
+ labelEn: Postgres Database Name
+ required: false
+ type: text
diff --git a/apps/postgresql-postgis/17-3.5/docker-compose.yml b/apps/postgresql-postgis/17-3.5/docker-compose.yml
new file mode 100644
index 000000000..8a761fda1
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5/docker-compose.yml
@@ -0,0 +1,25 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ postgresql:
+ image: postgis/postgis:17-3.5
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:5432
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${POSTGRES_ROOT_PATH}/data:/var/lib/postgresql/data
+ environment:
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ POSTGRES_USER: ${POSTGRES_USER:-postgres}
+ POSTGRES_DB: ${POSTGRES_DB:-postgres}
+ POSTGRES_INITDB_ARGS: "--data-checksums"
diff --git a/apps/postgresql-postgis/17-3.5/envs/default.env b/apps/postgresql-postgis/17-3.5/envs/default.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5/envs/global.env b/apps/postgresql-postgis/17-3.5/envs/global.env
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/postgresql-postgis/17-3.5/scripts/init.sh b/apps/postgresql-postgis/17-3.5/scripts/init.sh
new file mode 100644
index 000000000..4c7fbfcb7
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5/scripts/init.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ sed -i '/^APP_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+ echo "APP_ENV_FILE=${CURRENT_DIR}/envs/outline.env" >> .env
+
+ # setup-2 remove empty values
+ sed -i '/^.*=""/d' .env
+
+ # setup-3 update directory permissions
+ mkdir -p "$OUTLINE_ROOT_PATH"
+ mkdir -p "$OUTLINE_ROOT_PATH/data"
+
+ chown -R 1001:1001 "$OUTLINE_ROOT_PATH"
+ chmod -R 1777 "$OUTLINE_ROOT_PATH"
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/postgresql-postgis/17-3.5/scripts/uninstall.sh b/apps/postgresql-postgis/17-3.5/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/postgresql-postgis/17-3.5/scripts/upgrade.sh b/apps/postgresql-postgis/17-3.5/scripts/upgrade.sh
new file mode 100644
index 000000000..4c7fbfcb7
--- /dev/null
+++ b/apps/postgresql-postgis/17-3.5/scripts/upgrade.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ sed -i '/^APP_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+ echo "APP_ENV_FILE=${CURRENT_DIR}/envs/outline.env" >> .env
+
+ # setup-2 remove empty values
+ sed -i '/^.*=""/d' .env
+
+ # setup-3 update directory permissions
+ mkdir -p "$OUTLINE_ROOT_PATH"
+ mkdir -p "$OUTLINE_ROOT_PATH/data"
+
+ chown -R 1001:1001 "$OUTLINE_ROOT_PATH"
+ chmod -R 1777 "$OUTLINE_ROOT_PATH"
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/postgresql-postgis/README.md b/apps/postgresql-postgis/README.md
new file mode 100644
index 000000000..752e735c2
--- /dev/null
+++ b/apps/postgresql-postgis/README.md
@@ -0,0 +1,54 @@
+# PostgreSQL (PostGIS)
+
+### PostgreSQL:世界上最先进的开源关系数据库
+
+
+
+
+
+## PostGIS 扩展
+
+PostGIS 通过添加对存储、索引和查询地理空间数据的支持来扩展 PostgreSQL 关系数据库的功能。
+
+## 简介
+
+PostgreSQL 是一个功能强大的开源对象关系型数据库系统,它使用并扩展了 SQL 语言,并结合了多种功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL
+起源于 1986 年加州大学伯克利分校的 POSTGRES 项目,在核心平台上已有超过 35 年的活跃开发历史。
+
+PostgreSQL 因其成熟的架构、可靠性、数据完整性、强大的功能集、可扩展性,以及该软件背后的开源社区为持续提供高性能和创新解决方案所做出的奉献而赢得了良好的声誉。
+PostgreSQL 可在所有主流操作系统上运行,自 2001 年以来一直符合 ACID 标准,并拥有强大的附加功能,如广受欢迎的 PostGIS
+地理空间数据库扩展器。因此,PostgreSQL 成为许多人和组织首选的开源关系数据库也就不足为奇了。
+
+开始使用PostgreSQL从未如此简单--选择一个你想建立的项目,让PostgreSQL安全稳健地存储你的数据。
+
+### 为什么使用 PostgreSQL
+
+PostgreSQL 具有许多功能,旨在帮助开发人员构建应用程序,帮助管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集大小。除了免费和开源之外,PostgreSQL
+还具有高度可扩展性。例如,您可以定义自己的数据类型,创建自定义函数,甚至可以使用不同的编程语言编写代码,而无需重新编译数据库!
+
+在不违背传统功能或可能导致架构决策失误的情况下,PostgreSQL 会尽量符合 SQL 标准。SQL 标准所要求的许多功能都得到了支持,尽管有时语法或功能略有不同。
+随着时间的推移,有望进一步实现一致性。截至 2023 年 9 月发布的第 16 版,PostgreSQL 至少符合 SQL:2023 核心一致性 179 个强制功能中的
+170 个。
+截至目前,还没有关系型数据库完全符合这一标准。
+
+## 版本选择
+
+- `vectors` - 内置 vectors 插件。
+
+ + 插件名称:vectors
+
+ + 插件描述:vectors 插件用于存储和查询矢量数据,如地理坐标、几何图形等。
+
+ + 插件链接:[https://github.com/tensorchord/pgvecto.rs](https://github.com/tensorchord/pgvecto.rs)
+
+- `alpine` - 基于 Alpine Linux 发行版。
+
+ + 精简版 PostgreSQL,基于 Alpine Linux 发行版,提供了更小的镜像体积和更快的启动速度。
+
+- `{version}` 默认版
+
+ + 官方默认 PostgreSQL 版本,基于 Debian Linux 发行版。
+
+---
+
+
diff --git a/apps/postgresql-postgis/data.yml b/apps/postgresql-postgis/data.yml
new file mode 100644
index 000000000..a864ceffb
--- /dev/null
+++ b/apps/postgresql-postgis/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: postgresql-postgis
+ name: PostgreSQL (PostGIS)
+ tags:
+ - Database
+ - Local
+ shortDescZh: 开源关系型数据库
+ shortDescEn: Open Source Relational Database
+ type: runtime
+ crossVersionUpdate: false
+ limit: 0
+ website: https://www.postgresql.org/
+ github: https://github.com/postgres/postgres/
+ document: https://www.postgresql.org/docs/
diff --git a/apps/postgresql-postgis/logo.png b/apps/postgresql-postgis/logo.png
new file mode 100644
index 000000000..2c14e3052
Binary files /dev/null and b/apps/postgresql-postgis/logo.png differ
diff --git a/apps/readeck-pg/0.19.2/data.yml b/apps/readeck-pg/0.19.2/data.yml
new file mode 100644
index 000000000..709f5e154
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/data.yml
@@ -0,0 +1,171 @@
+additionalProperties:
+ formFields:
+ - child:
+ default: ""
+ envKey: PANEL_POSTGRES_SERVICE
+ required: true
+ type: service
+ default: postgresql
+ envKey: PANEL_POSTGRES_TYPE
+ labelZh: Postgres 服务 (前置检查)
+ labelEn: Postgres Service (Pre-check)
+ required: true
+ type: apps
+ values:
+ - label: PostgreSQL
+ value: postgresql
+ - default: "/home/readeck"
+ edit: true
+ envKey: READECK_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "127.0.0.1"
+ edit: true
+ envKey: POSTGRES_HOST
+ labelZh: 数据库 主机地址
+ labelEn: Database Host
+ required: true
+ type: text
+ - default: 5432
+ edit: true
+ envKey: POSTGRES_PORT
+ labelZh: 数据库 端口
+ labelEn: Database Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "readeck"
+ edit: true
+ envKey: POSTGRES_NAME
+ labelZh: 数据库 名称
+ labelEn: Database Name
+ required: true
+ rule: paramCommon
+ type: text
+ - default: "readeck"
+ edit: true
+ envKey: POSTGRES_USER
+ labelZh: 数据库 用户名
+ labelEn: Database Username
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelZh: 数据库 密码
+ labelEn: Database Password
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: "/"
+ edit: true
+ envKey: READECK_SERVER_PREFIX
+ labelZh: 前缀路径
+ labelEn: Prefix path
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_ALLOWED_HOSTS
+ labelZh: HTTP 请求中允许的主机名列表
+ labelEn: HTTP request allowed host name list
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_SERVER_BASE_URL
+ labelZh: 绑定域名
+ labelEn: Binding domain
+ required: false
+ type: text
+ - default: 24
+ edit: true
+ envKey: READECK_PUBLIC_SHARE_TTL
+ labelZh: 分享有效期
+ labelEn: Share validity period
+ required: true
+ type: number
+ - default: "smtp.qq.com"
+ edit: true
+ envKey: READECK_MAIL_HOST
+ labelZh: 邮件服务器
+ labelEn: Mail Server
+ required: false
+ type: text
+ - default: 465
+ edit: true
+ envKey: READECK_MAIL_PORT
+ labelZh: 邮件服务器 端口
+ labelEn: Mail Server Port
+ required: false
+ type: number
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_USERNAME
+ labelZh: 邮件鉴权 用户名
+ labelEn: Mail Username
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_PASSWORD
+ labelZh: 邮件鉴权 密码
+ labelEn: Mail Password
+ required: false
+ type: password
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_FROM
+ labelZh: 邮件发送者
+ labelEn: Mail Sender
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_FROMNOREPLY
+ labelZh: 邮件发送者 (无回复)
+ labelEn: Mail Sender (No Reply)
+ required: false
+ type: text
+ - default: "false"
+ edit: true
+ envKey: READECK_MAIL_INSECURE
+ labelZh: 服务器证书验证
+ labelEn: Server certificate verification
+ required: false
+ type: select
+ values:
+ - label: 不验证
+ value: "true"
+ - label: 验证
+ value: "false"
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_ENCRYPTION
+ labelZh: SMTP 主机 加密方式
+ labelEn: SMTP Host Encryption Method
+ required: false
+ type: select
+ values:
+ - label: StartTLS
+ value: "starttls"
+ - label: SSL/TLS
+ value: "ssltls"
+ - default: ""
+ edit: true
+ envKey: HTTP_PROXY
+ labelZh: 网络代理
+ labelEn: Network proxy
+ required: false
+ type: text
diff --git a/apps/readeck-pg/0.19.2/docker-compose.yml b/apps/readeck-pg/0.19.2/docker-compose.yml
new file mode 100644
index 000000000..959dbc21c
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/docker-compose.yml
@@ -0,0 +1,32 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ readeck:
+ image: codeberg.org/readeck/readeck:0.19.2
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ healthcheck:
+ test: [ "CMD", "/bin/readeck", "healthcheck", "-config", "config.toml" ]
+ interval: 30s
+ timeout: 2s
+ retries: 3
+ volumes:
+ - ${READECK_ROOT_PATH}/data:/readeck
+ environment:
+ - TZ=Asia/Shanghai
+ - READECK_LOG_LEVEL=info
+ - READECK_SERVER_HOST=0.0.0.0
+ - READECK_SERVER_PORT=${PANEL_APP_PORT_HTTP}
+ - READECK_DATABASE_SOURCE=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_NAME}
+ - HTTPS_PROXY=${HTTP_PROXY:-}
diff --git a/apps/readeck-pg/0.19.2/envs/default.env b/apps/readeck-pg/0.19.2/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/readeck-pg/0.19.2/envs/global.env b/apps/readeck-pg/0.19.2/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/readeck-pg/0.19.2/scripts/init.sh b/apps/readeck-pg/0.19.2/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/readeck-pg/0.19.2/scripts/uninstall.sh b/apps/readeck-pg/0.19.2/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/readeck-pg/0.19.2/scripts/upgrade.sh b/apps/readeck-pg/0.19.2/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/readeck-pg/0.19.2/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/readeck-pg/README.md b/apps/readeck-pg/README.md
new file mode 100644
index 000000000..c73d8c4c8
--- /dev/null
+++ b/apps/readeck-pg/README.md
@@ -0,0 +1,66 @@
+# Readeck
+
+Readeck 是一个简单的网络应用程序,可让您保存您喜欢并希望永久保留的网页的宝贵可读内容。
+将其视为书签管理器和稍后阅读工具。
+
+
+
+
+
+## 简介
+
+Readeck 是一个开源的网页内容存档工具,它不仅能像普通书签管理器一样保存链接,还能将网页内容(包括文字、图片甚至视频)完整打包成离线文件。
+就算原网站倒闭跑路,你保存的内容依然妥妥存在自己的服务器里!
+
+## 特性
+
+### 🔖 书签
+
+喜欢你正在阅读的页面?把链接粘贴到 Readeck 就完成了!
+
+### 📸 文章、图片和视频
+
+Readeck 会保存网页的可读内容,方便您稍后阅读。它还能检测页面内容是图片还是视频,并相应地调整处理方式。
+
+### ⭐ 标签、收藏、存档
+
+将书签移动到档案或收藏夹并添加任意数量的标签。
+
+### 🖍️ 亮点
+
+突出显示书签的重要内容,以便以后轻松找到。
+
+### 🗃️ 收藏集
+
+如果您需要一个专门的部分来存储过去两周内标有“cat”的所有书签,Readeck 可让您将此搜索查询保存到一个集合中,以便您以后访问它。
+
+### 📖 电子书导出
+
+还有什么比在电子阅读器上阅读你收藏的文章更棒的呢?你可以将任何文章导出为电子书文件 (EPUB)。你甚至可以将整个收藏集导出为一本书!
+
+除此之外,如果您的电子阅读器支持 OPDS,您可以直接从电子阅读器访问 Readeck 的目录和收藏。
+
+### 🔎 全文搜索
+
+无论您需要从文章中查找模糊的文字,还是查找具有特定标签或来自特定网站的所有文章,我们都能满足您的需求!
+
+### 🚀 快!
+
+Readeck 是对那些看似枯燥乏味却久经考验的技术产品的现代诠释。它保证了极快的响应时间和流畅的用户体验。
+
+### 🔒 专为保护您的隐私和长期存档而打造
+
+你喜欢的这篇文章明年还会上线吗?十年后呢?也许不会;也许它连文字和图片都消失了。出于这个原因,也为了保护你的隐私,当你保存链接时,所有文字和图片都会存储在你的
+Readeck 实例中。
+除视频外,您的浏览器不会向外部网站发出任何请求。
+
+### 🧩 浏览器扩展
+
+想在浏览时保存一些内容以供日后使用?无需复制粘贴链接。安装浏览器扩展程序,一键保存书签!
+
++ [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/readeck/)
++ [Google Chrome](https://chromewebstore.google.com/detail/readeck/jnmcpmfimecibicbojhopfkcbmkafhee)
+
+---
+
+
diff --git a/apps/readeck-pg/data.yml b/apps/readeck-pg/data.yml
new file mode 100644
index 000000000..2b7419f53
--- /dev/null
+++ b/apps/readeck-pg/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: readeck-pg
+ name: Readeck (PostgreSQL版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 网页内容存档工具
+ shortDescEn: web content archiving tool
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://readeck.org/
+ github: https://codeberg.org/readeck/readeck/
+ document: https://readeck.org/
diff --git a/apps/readeck-pg/logo.png b/apps/readeck-pg/logo.png
new file mode 100644
index 000000000..a32d613d7
Binary files /dev/null and b/apps/readeck-pg/logo.png differ
diff --git a/apps/readeck-pg/logo.svg b/apps/readeck-pg/logo.svg
new file mode 100644
index 000000000..7335416e8
--- /dev/null
+++ b/apps/readeck-pg/logo.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/readeck/0.19.2/data.yml b/apps/readeck/0.19.2/data.yml
new file mode 100644
index 000000000..2b7ed5322
--- /dev/null
+++ b/apps/readeck/0.19.2/data.yml
@@ -0,0 +1,118 @@
+additionalProperties:
+ formFields:
+ - default: "/home/readeck"
+ edit: true
+ envKey: READECK_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "/"
+ edit: true
+ envKey: READECK_SERVER_PREFIX
+ labelZh: 前缀路径
+ labelEn: Prefix path
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_ALLOWED_HOSTS
+ labelZh: HTTP 请求中允许的主机名列表
+ labelEn: HTTP request allowed host name list
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_SERVER_BASE_URL
+ labelZh: 绑定域名
+ labelEn: Binding domain
+ required: false
+ type: text
+ - default: 24
+ edit: true
+ envKey: READECK_PUBLIC_SHARE_TTL
+ labelZh: 分享有效期
+ labelEn: Share validity period
+ required: true
+ type: number
+ - default: "smtp.qq.com"
+ edit: true
+ envKey: READECK_MAIL_HOST
+ labelZh: 邮件服务器
+ labelEn: Mail Server
+ required: false
+ type: text
+ - default: 465
+ edit: true
+ envKey: READECK_MAIL_PORT
+ labelZh: 邮件服务器 端口
+ labelEn: Mail Server Port
+ required: false
+ type: number
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_USERNAME
+ labelZh: 邮件鉴权 用户名
+ labelEn: Mail Username
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_PASSWORD
+ labelZh: 邮件鉴权 密码
+ labelEn: Mail Password
+ required: false
+ type: password
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_FROM
+ labelZh: 邮件发送者
+ labelEn: Mail Sender
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_FROMNOREPLY
+ labelZh: 邮件发送者 (无回复)
+ labelEn: Mail Sender (No Reply)
+ required: false
+ type: text
+ - default: "false"
+ edit: true
+ envKey: READECK_MAIL_INSECURE
+ labelZh: 邮件服务器证书验证
+ labelEn: Server certificate verification
+ required: false
+ type: select
+ values:
+ - label: 不验证
+ value: "true"
+ - label: 验证
+ value: "false"
+ - default: ""
+ edit: true
+ envKey: READECK_MAIL_ENCRYPTION
+ labelZh: SMTP 主机 加密方式
+ labelEn: SMTP Host Encryption Method
+ required: false
+ type: select
+ values:
+ - label: StartTLS
+ value: "starttls"
+ - label: SSL/TLS
+ value: "ssltls"
+ - default: ""
+ edit: true
+ envKey: HTTP_PROXY
+ labelZh: 网络代理
+ labelEn: Network proxy
+ required: false
+ type: text
diff --git a/apps/readeck/0.19.2/docker-compose.yml b/apps/readeck/0.19.2/docker-compose.yml
new file mode 100644
index 000000000..602556003
--- /dev/null
+++ b/apps/readeck/0.19.2/docker-compose.yml
@@ -0,0 +1,31 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ readeck:
+ image: codeberg.org/readeck/readeck:0.19.2
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ healthcheck:
+ test: [ "CMD", "/bin/readeck", "healthcheck", "-config", "config.toml" ]
+ interval: 30s
+ timeout: 2s
+ retries: 3
+ volumes:
+ - ${READECK_ROOT_PATH}/data:/readeck
+ environment:
+ - TZ=Asia/Shanghai
+ - READECK_LOG_LEVEL=info
+ - READECK_SERVER_HOST=0.0.0.0
+ - READECK_SERVER_PORT=${PANEL_APP_PORT_HTTP}
+ - HTTPS_PROXY=${HTTP_PROXY:-}
diff --git a/apps/readeck/0.19.2/envs/default.env b/apps/readeck/0.19.2/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/readeck/0.19.2/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/readeck/0.19.2/envs/global.env b/apps/readeck/0.19.2/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/readeck/0.19.2/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/readeck/0.19.2/scripts/init.sh b/apps/readeck/0.19.2/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/readeck/0.19.2/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/readeck/0.19.2/scripts/uninstall.sh b/apps/readeck/0.19.2/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/readeck/0.19.2/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/readeck/0.19.2/scripts/upgrade.sh b/apps/readeck/0.19.2/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/readeck/0.19.2/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/readeck/README.md b/apps/readeck/README.md
new file mode 100644
index 000000000..c73d8c4c8
--- /dev/null
+++ b/apps/readeck/README.md
@@ -0,0 +1,66 @@
+# Readeck
+
+Readeck 是一个简单的网络应用程序,可让您保存您喜欢并希望永久保留的网页的宝贵可读内容。
+将其视为书签管理器和稍后阅读工具。
+
+
+
+
+
+## 简介
+
+Readeck 是一个开源的网页内容存档工具,它不仅能像普通书签管理器一样保存链接,还能将网页内容(包括文字、图片甚至视频)完整打包成离线文件。
+就算原网站倒闭跑路,你保存的内容依然妥妥存在自己的服务器里!
+
+## 特性
+
+### 🔖 书签
+
+喜欢你正在阅读的页面?把链接粘贴到 Readeck 就完成了!
+
+### 📸 文章、图片和视频
+
+Readeck 会保存网页的可读内容,方便您稍后阅读。它还能检测页面内容是图片还是视频,并相应地调整处理方式。
+
+### ⭐ 标签、收藏、存档
+
+将书签移动到档案或收藏夹并添加任意数量的标签。
+
+### 🖍️ 亮点
+
+突出显示书签的重要内容,以便以后轻松找到。
+
+### 🗃️ 收藏集
+
+如果您需要一个专门的部分来存储过去两周内标有“cat”的所有书签,Readeck 可让您将此搜索查询保存到一个集合中,以便您以后访问它。
+
+### 📖 电子书导出
+
+还有什么比在电子阅读器上阅读你收藏的文章更棒的呢?你可以将任何文章导出为电子书文件 (EPUB)。你甚至可以将整个收藏集导出为一本书!
+
+除此之外,如果您的电子阅读器支持 OPDS,您可以直接从电子阅读器访问 Readeck 的目录和收藏。
+
+### 🔎 全文搜索
+
+无论您需要从文章中查找模糊的文字,还是查找具有特定标签或来自特定网站的所有文章,我们都能满足您的需求!
+
+### 🚀 快!
+
+Readeck 是对那些看似枯燥乏味却久经考验的技术产品的现代诠释。它保证了极快的响应时间和流畅的用户体验。
+
+### 🔒 专为保护您的隐私和长期存档而打造
+
+你喜欢的这篇文章明年还会上线吗?十年后呢?也许不会;也许它连文字和图片都消失了。出于这个原因,也为了保护你的隐私,当你保存链接时,所有文字和图片都会存储在你的
+Readeck 实例中。
+除视频外,您的浏览器不会向外部网站发出任何请求。
+
+### 🧩 浏览器扩展
+
+想在浏览时保存一些内容以供日后使用?无需复制粘贴链接。安装浏览器扩展程序,一键保存书签!
+
++ [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/readeck/)
++ [Google Chrome](https://chromewebstore.google.com/detail/readeck/jnmcpmfimecibicbojhopfkcbmkafhee)
+
+---
+
+
diff --git a/apps/readeck/data.yml b/apps/readeck/data.yml
new file mode 100644
index 000000000..be5edb244
--- /dev/null
+++ b/apps/readeck/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: readeck
+ name: Readeck
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 网页内容存档工具
+ shortDescEn: web content archiving tool
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://readeck.org/
+ github: https://codeberg.org/readeck/readeck/
+ document: https://readeck.org/
diff --git a/apps/readeck/logo.png b/apps/readeck/logo.png
new file mode 100644
index 000000000..a32d613d7
Binary files /dev/null and b/apps/readeck/logo.png differ
diff --git a/apps/readeck/logo.svg b/apps/readeck/logo.svg
new file mode 100644
index 000000000..7335416e8
--- /dev/null
+++ b/apps/readeck/logo.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/apps/rustfs/README.md b/apps/rustfs/README.md
new file mode 100644
index 000000000..7ea296a27
--- /dev/null
+++ b/apps/rustfs/README.md
@@ -0,0 +1,37 @@
+# RustFS
+
+Rust驱动的S3兼容分布式存储系统
+
+
+
+
+
+## 简介
+
+RustFS 用热门安全的 Rust 语言开发,兼容 S3 协议。适用于 AI/ML 及海量数据存储、大数据、互联网、工业和保密存储等全部场景。近乎免费使用。遵循
+Apache 2 协议,支持国产保密设备和系统。
+
+## 特性
+
+### 跨云支持
+RustFS 利用分布式架构和对象存储功能,为AI和高级分析工作负载提供卓越性能,支持从TB到EB级别的数据扩展。
+
+### 安全可靠
+RustFS 与 RustyVault 集成,提供高性能的对象存储安全加密,支持多种加密模式,确保数据安全性和透明度。
+
+### 版本控制
+对象存储版本控制功能,为每个对象版本分配唯一标识符,用户可通过API或管理界面访问和管理历史版本。
+
+### 无限扩容
+RustFS系统自动平衡节点负载,确保数据均匀分布,支持根据存储需求动态添加或移除资源,实现无限扩容。
+
+### 对象只读
+支持对象锁定模式,实现WORM(写一次读多次)功能,防止数据在指定时间范围内被修改或删除,确保数据完整性。
+
+### 主动复制
+对象写入时自动创建多个副本并分布到不同节点,支持同步和异步复制模式,提供高可用性和灾难恢复能力。
+
+
+---
+
+
diff --git a/apps/rustfs/data.yml b/apps/rustfs/data.yml
new file mode 100644
index 000000000..55bef0615
--- /dev/null
+++ b/apps/rustfs/data.yml
@@ -0,0 +1,15 @@
+additionalProperties:
+ key: rustfs
+ name: RustFS
+ tags:
+ - WebSite
+ - Storage
+ - Local
+ shortDescZh: 分布式存储系统
+ shortDescEn: Distributed Storage System
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://rustfs.com/
+ github: https://github.com/rustfs/rustfs/
+ document: https://rustfs.com/
diff --git a/apps/rustfs/latest/data.yml b/apps/rustfs/latest/data.yml
new file mode 100644
index 000000000..41e89e557
--- /dev/null
+++ b/apps/rustfs/latest/data.yml
@@ -0,0 +1,71 @@
+additionalProperties:
+ formFields:
+ - default: "/home/rustfs"
+ edit: true
+ envKey: RUSTFS_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 9000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "rustfsadmin"
+ edit: true
+ envKey: RUSTFS_ACCESS_KEY
+ labelZh: 管理员账号
+ labelEn: Access Key
+ required: true
+ type: text
+ - default: "rustfsadmin"
+ edit: true
+ envKey: RUSTFS_SECRET_KEY
+ labelZh: 管理员密码
+ labelEn: Secret Key
+ required: true
+ type: password
+ - default: "127.0.0.1:9000"
+ edit: true
+ envKey: RUSTFS_SERVER_DOMAINS
+ labelZh: 域名
+ labelEn: Domains
+ required: false
+ type: text
+ - default: "true"
+ edit: true
+ envKey: RUSTFS_CONSOLE_ENABLE
+ labelZh: 启用控制台
+ labelEn: Enable Console
+ required: true
+ type: select
+ values:
+ - label: 启用
+ value: "true"
+ - label: 禁用
+ value: "false"
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_1
+ labelEn: Custom mount directory 1
+ labelZh: 自定义挂载目录 1
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_2
+ labelEn: Custom mount directory 2
+ labelZh: 自定义挂载目录 2
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_3
+ labelEn: Custom mount directory 3
+ labelZh: 自定义挂载目录 3
+ required: false
+ type: text
diff --git a/apps/rustfs/latest/docker-compose.yml b/apps/rustfs/latest/docker-compose.yml
new file mode 100644
index 000000000..bf4915ddd
--- /dev/null
+++ b/apps/rustfs/latest/docker-compose.yml
@@ -0,0 +1,26 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ rustfs:
+ image: rustfs/rustfs:latest
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:9000
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${RUSTFS_ROOT_PATH}/data:/etc/rustfs
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ - RUSTFS_ADDRESS=:9000
diff --git a/apps/rustfs/latest/envs/default.env b/apps/rustfs/latest/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/rustfs/latest/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/rustfs/latest/envs/global.env b/apps/rustfs/latest/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/rustfs/latest/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/rustfs/latest/scripts/init.sh b/apps/rustfs/latest/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/rustfs/latest/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/rustfs/latest/scripts/uninstall.sh b/apps/rustfs/latest/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/rustfs/latest/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/rustfs/latest/scripts/upgrade.sh b/apps/rustfs/latest/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/rustfs/latest/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/rustfs/logo.png b/apps/rustfs/logo.png
new file mode 100644
index 000000000..68d8d9390
Binary files /dev/null and b/apps/rustfs/logo.png differ
diff --git a/apps/rustfs/logo.svg b/apps/rustfs/logo.svg
new file mode 100644
index 000000000..93ca3c557
--- /dev/null
+++ b/apps/rustfs/logo.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/s-ui/1.3.2/data.yml b/apps/s-ui/1.3.2/data.yml
new file mode 100644
index 000000000..c158f106d
--- /dev/null
+++ b/apps/s-ui/1.3.2/data.yml
@@ -0,0 +1,25 @@
+additionalProperties:
+ formFields:
+ - default: "/home/s-ui"
+ edit: true
+ envKey: S_UI_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 2095
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 2096
+ edit: true
+ envKey: PANEL_APP_PORT_API
+ labelZh: API 端口
+ labelEn: API port
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/s-ui/1.3.2/docker-compose.yml b/apps/s-ui/1.3.2/docker-compose.yml
new file mode 100644
index 000000000..902748c63
--- /dev/null
+++ b/apps/s-ui/1.3.2/docker-compose.yml
@@ -0,0 +1,27 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ s-ui:
+ image: alireza7/s-ui:1.3.3
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ tty: true
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:2095
+ - ${PANEL_APP_PORT_API}:2096
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${S_UI_ROOT_PATH}/db:/app/db
+ - ${S_UI_ROOT_PATH}/cert:/app/cert
+ environment:
+ - TZ=Asia/Shanghai
+ - SUI_LOG_LEVEL=info
+ - SUI_DEBUG=false
diff --git a/apps/s-ui/1.3.2/envs/default.env b/apps/s-ui/1.3.2/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/s-ui/1.3.2/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/s-ui/1.3.2/envs/global.env b/apps/s-ui/1.3.2/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/s-ui/1.3.2/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/s-ui/1.3.2/scripts/init.sh b/apps/s-ui/1.3.2/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/s-ui/1.3.2/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/s-ui/1.3.2/scripts/uninstall.sh b/apps/s-ui/1.3.2/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/s-ui/1.3.2/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/s-ui/1.3.2/scripts/upgrade.sh b/apps/s-ui/1.3.2/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/s-ui/1.3.2/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/s-ui/README.md b/apps/s-ui/README.md
new file mode 100644
index 000000000..23fe84dbb
--- /dev/null
+++ b/apps/s-ui/README.md
@@ -0,0 +1,25 @@
+# S-UI (Xray UI)
+
+高级 Web 面板 • 专为 SagerNet/Sing-Box 打造
+
+
+
+
+
+## 安装说明
+
+> 默认安装信息
+>
+> 面板端口:`2095`
+>
+> 面板路径:`/app/`
+>
+> 订阅端口:`2096`
+>
+> 订阅路径:`/sub/`
+>
+> 用户/密码:`admin`
+
+---
+
+
diff --git a/apps/s-ui/data.yml b/apps/s-ui/data.yml
new file mode 100644
index 000000000..192eeeac9
--- /dev/null
+++ b/apps/s-ui/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: s-ui
+ name: S-UI (Xray UI)
+ tags:
+ - Tool
+ - Local
+ shortDescZh: 高级 Web 面板 • 专为 SagerNet/Sing-Box 打造
+ shortDescEn: Advanced Web Panel • Built for SagerNet/Sing-Box
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/alireza0/s-ui/
+ github: https://github.com/alireza0/s-ui/
+ document: https://github.com/alireza0/s-ui/
diff --git a/apps/s-ui/logo.png b/apps/s-ui/logo.png
new file mode 100644
index 000000000..bea3179e3
Binary files /dev/null and b/apps/s-ui/logo.png differ
diff --git a/apps/seaweedfs/3.96/config/prometheus.yml b/apps/seaweedfs/3.96/config/prometheus.yml
new file mode 100644
index 000000000..7bdcab08f
--- /dev/null
+++ b/apps/seaweedfs/3.96/config/prometheus.yml
@@ -0,0 +1,14 @@
+global:
+ scrape_interval: 30s
+ scrape_timeout: 10s
+
+scrape_configs:
+ - job_name: services
+ metrics_path: /metrics
+ static_configs:
+ - targets:
+ - 'seaweedfs-prometheus:9090'
+ - 'seaweedfs-master:9324'
+ - 'seaweedfs-volume:9325'
+ - 'seaweedfs-filer:9326'
+ - 'seaweedfs-s3:9327'
diff --git a/apps/seaweedfs/3.96/data.yml b/apps/seaweedfs/3.96/data.yml
new file mode 100644
index 000000000..fd2e8aa51
--- /dev/null
+++ b/apps/seaweedfs/3.96/data.yml
@@ -0,0 +1,134 @@
+additionalProperties:
+ formFields:
+ - default: "/home/seaweedfs"
+ edit: true
+ envKey: SEAWEEDFS_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8333
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9327
+ edit: true
+ envKey: PANEL_APP_PORT_S3_METRICS
+ labelZh: S3 监控端口
+ labelEn: S3 Metrics port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9333
+ edit: true
+ envKey: PANEL_APP_PORT_MASTER_SERVER
+ labelZh: 集群服务端口
+ labelEn: Cluster service port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 19333
+ edit: true
+ envKey: PANEL_APP_PORT_MASTER_API
+ labelZh: 集群通讯端口
+ labelEn: Cluster communication port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9324
+ edit: true
+ envKey: PANEL_APP_PORT_MASTER_METRICS
+ labelZh: 集群监控端口
+ labelEn: Cluster Metrics port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_VOLUME_SERVER
+ labelZh: 存储服务端口
+ labelEn: Storage service port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 18080
+ edit: true
+ envKey: PANEL_APP_PORT_VOLUME_API
+ labelZh: 存储通讯端口
+ labelEn: Storage communication port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9325
+ edit: true
+ envKey: PANEL_APP_PORT_VOLUME_METRICS
+ labelZh: 存储监控端口
+ labelEn: Storage Metrics port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8888
+ edit: true
+ envKey: PANEL_APP_PORT_FILER_SERVER
+ labelZh: 索引服务端口
+ labelEn: Index service port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 18888
+ edit: true
+ envKey: PANEL_APP_PORT_FILER_API
+ labelZh: 索引通讯端口
+ labelEn: Index communication port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9326
+ edit: true
+ envKey: PANEL_APP_PORT_FILER_METRICS
+ labelZh: 索引监控端口
+ labelEn: Index Metrics port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 7333
+ edit: true
+ envKey: PANEL_APP_PORT_WEBDAV
+ labelZh: WebDAV 端口
+ labelEn: WebDAV port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9090
+ edit: true
+ envKey: PANEL_APP_PORT_METRICS
+ labelZh: Prometheus 端口
+ labelEn: Prometheus port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_1
+ labelEn: Custom mount directory 1
+ labelZh: 自定义挂载目录 1
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_2
+ labelEn: Custom mount directory 2
+ labelZh: 自定义挂载目录 2
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_3
+ labelEn: Custom mount directory 3
+ labelZh: 自定义挂载目录 3
+ required: false
+ type: text
diff --git a/apps/seaweedfs/3.96/docker-compose.yml b/apps/seaweedfs/3.96/docker-compose.yml
new file mode 100644
index 000000000..1b4613e36
--- /dev/null
+++ b/apps/seaweedfs/3.96/docker-compose.yml
@@ -0,0 +1,138 @@
+networks:
+ 1panel-network:
+ external: true
+ seaweedfs-network:
+
+services:
+ seaweedfs-master:
+ image: chrislusf/seaweedfs:3.96
+ container_name: ${CONTAINER_NAME}-master
+ restart: always
+ networks:
+ - seaweedfs-network
+ ports:
+ - ${PANEL_APP_PORT_MASTER_SERVER}:9333
+ - ${PANEL_APP_PORT_MASTER_API}:19333
+ - ${PANEL_APP_PORT_MASTER_METRICS}:9324
+ command: "master -ip=master -ip.bind=0.0.0.0 -metricsPort=9324"
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ seaweedfs-volume:
+ image: chrislusf/seaweedfs:3.96
+ depends_on:
+ - seaweedfs-master
+ container_name: ${CONTAINER_NAME}-volume
+ restart: always
+ networks:
+ - seaweedfs-network
+ ports:
+ - ${PANEL_APP_PORT_VOLUME_SERVER}:8080
+ - ${PANEL_APP_PORT_VOLUME_API}:18080
+ - ${PANEL_APP_PORT_VOLUME_METRICS}:9325
+ command: 'volume -mserver="seaweedfs-master:9333" -ip.bind=0.0.0.0 -port=8080 -metricsPort=9325'
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ seaweedfs-filer:
+ image: chrislusf/seaweedfs:3.96
+ depends_on:
+ - seaweedfs-master
+ - seaweedfs-volume
+ container_name: ${CONTAINER_NAME}-filer
+ restart: always
+ networks:
+ - seaweedfs-network
+ ports:
+ - ${PANEL_APP_PORT_FILER_SERVER}:8888
+ - ${PANEL_APP_PORT_FILER_API}:18888
+ - ${PANEL_APP_PORT_FILER_METRICS}:9326
+ command: 'filer -master="seaweedfs-master:9333" -ip.bind=0.0.0.0 -metricsPort=9326'
+ tty: true
+ stdin_open: true
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ seaweedfs-s3:
+ image: chrislusf/seaweedfs:3.96
+ depends_on:
+ - seaweedfs-master
+ - seaweedfs-volume
+ - seaweedfs-filer
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - seaweedfs-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8333
+ - ${PANEL_APP_PORT_S3_METRICS}:9327
+ command: 's3 -filer="seaweedfs-filer:8888" -ip.bind=0.0.0.0 -metricsPort=9327'
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ seaweedfs-webdav:
+ image: chrislusf/seaweedfs:3.96
+ depends_on:
+ - seaweedfs-master
+ - seaweedfs-volume
+ - seaweedfs-filer
+ container_name: ${CONTAINER_NAME}-webdav
+ restart: always
+ networks:
+ - seaweedfs-network
+ ports:
+ - ${PANEL_APP_PORT_WEBDAV}:7333
+ command: 'webdav -filer="seaweedfs-filer:8888"'
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ seaweedfs-prometheus:
+ image: prom/prometheus:v2.21.0
+ depends_on:
+ - seaweedfs-s3
+ container_name: ${CONTAINER_NAME}-prometheus
+ restart: always
+ networks:
+ - seaweedfs-network
+ ports:
+ - ${PANEL_APP_PORT_METRICS}:9090
+ command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${SEAWEEDFS_ROOT_PATH}/prometheus:/etc/prometheus
+ environment:
+ - TZ=Asia/Shanghai
diff --git a/apps/seaweedfs/3.96/envs/default.env b/apps/seaweedfs/3.96/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/seaweedfs/3.96/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/seaweedfs/3.96/envs/global.env b/apps/seaweedfs/3.96/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/seaweedfs/3.96/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/seaweedfs/3.96/scripts/init.sh b/apps/seaweedfs/3.96/scripts/init.sh
new file mode 100644
index 000000000..e6604710b
--- /dev/null
+++ b/apps/seaweedfs/3.96/scripts/init.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ if [ ! -d $SEAWEEDFS_ROOT_PATH/prometheus ]; then
+ mkdir -p $SEAWEEDFS_ROOT_PATH/prometheus
+ fi
+ cp -rn ./config/* $SEAWEEDFS_ROOT_PATH/prometheus/
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/seaweedfs/3.96/scripts/uninstall.sh b/apps/seaweedfs/3.96/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/seaweedfs/3.96/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/seaweedfs/3.96/scripts/upgrade.sh b/apps/seaweedfs/3.96/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/seaweedfs/3.96/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/seaweedfs/README.md b/apps/seaweedfs/README.md
new file mode 100644
index 000000000..1198a7f23
--- /dev/null
+++ b/apps/seaweedfs/README.md
@@ -0,0 +1,16 @@
+# SeaweedFS
+
+分布式存储系统
+
+
+
+
+
+## 简介
+
+SeaweedFS 是一个快速的分布式存储系统,适用于 Blob、对象、文件和数据湖,可存储数十亿个文件!Blob 存储具有 O(1)
+磁盘寻道和云分层功能。Filer 支持 Cloud Drive、xDC 复制、Kubernetes、POSIX FUSE 挂载、S3 API、S3 网关、Hadoop、WebDAV、加密和纠删码。
+
+---
+
+
diff --git a/apps/seaweedfs/data.yml b/apps/seaweedfs/data.yml
new file mode 100644
index 000000000..c9537f99a
--- /dev/null
+++ b/apps/seaweedfs/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: seaweedfs
+ name: SeaweedFS
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 分布式存储系统
+ shortDescEn: distributed storage system
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://seaweedfs.com/
+ github: https://github.com/seaweedfs/seaweedfs/
+ document: https://github.com/seaweedfs/seaweedfs/
diff --git a/apps/seaweedfs/logo.png b/apps/seaweedfs/logo.png
new file mode 100644
index 000000000..74bfb12a0
Binary files /dev/null and b/apps/seaweedfs/logo.png differ
diff --git a/apps/shopware-dockware/6.7.1.2/data.yml b/apps/shopware-dockware/6.7.1.2/data.yml
new file mode 100644
index 000000000..482f7b275
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/shopware-dockware/6.7.1.2/docker-compose.yml b/apps/shopware-dockware/6.7.1.2/docker-compose.yml
new file mode 100644
index 000000000..b7c568f93
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/docker-compose.yml
@@ -0,0 +1,28 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ dockware:
+ image: dockware/play:6.7.1.2
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:80
+ expose:
+ - 3306
+ - 9999
+ - 9998
+ - 8888
+ - 22
+ - 443
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ environment:
+ - TZ=Asia/Shanghai
+ - XDEBUG_ENABLED=0
diff --git a/apps/shopware-dockware/6.7.1.2/envs/default.env b/apps/shopware-dockware/6.7.1.2/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/shopware-dockware/6.7.1.2/envs/global.env b/apps/shopware-dockware/6.7.1.2/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/shopware-dockware/6.7.1.2/scripts/init.sh b/apps/shopware-dockware/6.7.1.2/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/shopware-dockware/6.7.1.2/scripts/uninstall.sh b/apps/shopware-dockware/6.7.1.2/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/shopware-dockware/6.7.1.2/scripts/upgrade.sh b/apps/shopware-dockware/6.7.1.2/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/shopware-dockware/6.7.1.2/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/shopware-dockware/README.md b/apps/shopware-dockware/README.md
new file mode 100644
index 000000000..99586861b
--- /dev/null
+++ b/apps/shopware-dockware/README.md
@@ -0,0 +1,49 @@
+# ShopWare
+
+Shopware 6 是一个开放的无头商务平台
+
+
+
+
+
+## 安装说明
+
+> ### 管理员账户
+>
+> 默认管理员: admin
+>
+> 默认密码: shopware
+>
+> ### 数据库 (MySQL)
+>
+> User: root
+>
+> Password: root
+>
+> Host: 127.0.0.1 (not localhost)
+>
+> Port: 3306
+>
+> ### SSH/SFTP
+>
+> User: dockware
+>
+> Password: dockware
+>
+> Port: 22
+>
+> ### 邮件客户端 (Mailcatcher)
+>
+> Host: localhost
+>
+> Port: 1025
+>
+> ## 该版本无法持久化数据!!!
+
+## 简介
+
+Shopware 提供由人工智能、无代码自动化、代理商务和以客户为中心的设计驱动的先进电子商务解决方案。每项功能都是为快速部署和长期影响而设计的,使您能够更快地适应并在每个接触点提供无缝互动。
+
+---
+
+
diff --git a/apps/shopware-dockware/data.yml b/apps/shopware-dockware/data.yml
new file mode 100644
index 000000000..5837d6848
--- /dev/null
+++ b/apps/shopware-dockware/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: shopware-dockware
+ name: ShopWare (Dockware版)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 电子商务平台
+ shortDescEn: E-commerce
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://www.shopware.com/
+ github: https://github.com/shopware/shopware/
+ document: https://docs.dockware.io/
diff --git a/apps/shopware-dockware/logo.png b/apps/shopware-dockware/logo.png
new file mode 100644
index 000000000..38ca2b928
Binary files /dev/null and b/apps/shopware-dockware/logo.png differ
diff --git a/apps/shopware-dockware/logo.svg b/apps/shopware-dockware/logo.svg
new file mode 100644
index 000000000..7bd5bc574
--- /dev/null
+++ b/apps/shopware-dockware/logo.svg
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/smanga/4.0.7/data.yml b/apps/smanga/4.0.7/data.yml
new file mode 100644
index 000000000..1dee5500d
--- /dev/null
+++ b/apps/smanga/4.0.7/data.yml
@@ -0,0 +1,45 @@
+additionalProperties:
+ formFields:
+ - default: "/home/smanga"
+ edit: true
+ envKey: SMANGA_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 9797
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: HTTP_PROXY
+ labelZh: HTTP(s) 网络代理
+ labelEn: HTTP(s) Proxy
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_1
+ labelEn: Custom mount directory 1
+ labelZh: 自定义挂载目录 1
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_2
+ labelEn: Custom mount directory 2
+ labelZh: 自定义挂载目录 2
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: CUSTOM_MOUNT_DIRECTORY_3
+ labelEn: Custom mount directory 3
+ labelZh: 自定义挂载目录 3
+ required: false
+ type: text
diff --git a/apps/smanga/4.0.7/docker-compose.yml b/apps/smanga/4.0.7/docker-compose.yml
new file mode 100644
index 000000000..b994a0e85
--- /dev/null
+++ b/apps/smanga/4.0.7/docker-compose.yml
@@ -0,0 +1,26 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ smanga:
+ image: lkw199711/smanga-nodejs:4.0.7
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:9797
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${SMANGA_ROOT_PATH}/data:/data
+ - ${CUSTOM_MOUNT_DIRECTORY_1:-./default_mount_1}:${CUSTOM_MOUNT_DIRECTORY_1:-/default_mount_1}
+ - ${CUSTOM_MOUNT_DIRECTORY_2:-./default_mount_2}:${CUSTOM_MOUNT_DIRECTORY_2:-/default_mount_2}
+ - ${CUSTOM_MOUNT_DIRECTORY_3:-./default_mount_3}:${CUSTOM_MOUNT_DIRECTORY_3:-/default_mount_3}
+ environment:
+ - TZ=Asia/Shanghai
+ - HTTPS_PROXY=${HTTP_PROXY:-}
diff --git a/apps/smanga/4.0.7/envs/default.env b/apps/smanga/4.0.7/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/smanga/4.0.7/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/smanga/4.0.7/envs/global.env b/apps/smanga/4.0.7/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/smanga/4.0.7/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/smanga/4.0.7/scripts/init.sh b/apps/smanga/4.0.7/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/smanga/4.0.7/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/smanga/4.0.7/scripts/uninstall.sh b/apps/smanga/4.0.7/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/smanga/4.0.7/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/smanga/4.0.7/scripts/upgrade.sh b/apps/smanga/4.0.7/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/smanga/4.0.7/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/smanga/README.md b/apps/smanga/README.md
new file mode 100644
index 000000000..1d88731bc
--- /dev/null
+++ b/apps/smanga/README.md
@@ -0,0 +1,21 @@
+# Smanga
+
+一款docker直装的漫画浏览器
+
+
+
+
+
+## 简介
+
+漫画浏览器
+
+## 安装说明
+
+> 用户名:`smanga`
+>
+> 密码:`smanga`
+
+---
+
+
diff --git a/apps/smanga/data.yml b/apps/smanga/data.yml
new file mode 100644
index 000000000..97cfe0a4e
--- /dev/null
+++ b/apps/smanga/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: smanga
+ name: Smanga
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 漫画浏览器
+ shortDescEn: manga browser
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/lkw199711/smanga/
+ github: https://github.com/lkw199711/smanga/
+ document: https://github.com/lkw199711/smanga/
diff --git a/apps/smanga/logo.png b/apps/smanga/logo.png
new file mode 100644
index 000000000..dc8135855
Binary files /dev/null and b/apps/smanga/logo.png differ
diff --git a/apps/wechatpadpro/18.6/data.yml b/apps/wechatpadpro/18.6/data.yml
new file mode 100644
index 000000000..1e39d08c2
--- /dev/null
+++ b/apps/wechatpadpro/18.6/data.yml
@@ -0,0 +1,144 @@
+additionalProperties:
+ formFields:
+ - child:
+ default: ""
+ envKey: PANEL_DB_HOST
+ required: true
+ type: service
+ default: mysql
+ edit: true
+ envKey: PANEL_DB_TYPE
+ labelZh: MySQL 服务 (前置检查)
+ labelEn: Database Service (Pre-check)
+ required: true
+ type: apps
+ values:
+ - label: MySQL
+ value: mysql
+ - label: MariaDB
+ value: mariadb
+ - label: Percona
+ value: percona
+ - child:
+ default: ""
+ envKey: PANEL_REDIS_SERVICE
+ required: true
+ type: service
+ default: redis
+ envKey: PANEL_REDIS_TYPE
+ labelZh: Redis 服务 (前置检查)
+ labelEn: Redis Service (Pre-check)
+ required: true
+ type: apps
+ values:
+ - label: Redis
+ value: redis
+ - default: "/home/wechatpadpro"
+ edit: true
+ envKey: WECHATPADPRO_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 1238
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_WECHAT
+ labelZh: 微信 API 端口
+ labelEn: WeChat API port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "127.0.0.1"
+ edit: true
+ envKey: DB_HOST
+ labelZh: 数据库 主机
+ labelEn: Database Host
+ required: true
+ type: text
+ - default: 3306
+ edit: true
+ envKey: DB_PORT
+ labelZh: 数据库 端口
+ labelEn: Database Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: "wechatpadpro"
+ edit: true
+ envKey: DB_DATABASE
+ labelZh: 数据库 名称
+ labelEn: Database Name
+ required: true
+ type: text
+ - default: "wechatpadpro"
+ edit: true
+ envKey: DB_USERNAME
+ labelZh: 数据库 用户名
+ labelEn: Database Username
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: DB_PASSWORD
+ labelZh: 数据库 密码
+ labelEn: Database Password
+ required: true
+ type: password
+ - default: "127.0.0.1"
+ edit: true
+ envKey: REDIS_HOST
+ labelZh: Redis 主机
+ labelEn: Redis Host
+ required: true
+ type: text
+ - default: 6379
+ edit: true
+ envKey: REDIS_PORT
+ labelZh: Redis 端口
+ labelEn: Redis Port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 0
+ edit: true
+ envKey: REDIS_DB
+ labelZh: Redis 索引 (0-20)
+ labelEn: Redis Index (0-20)
+ required: true
+ type: number
+ - default: ""
+ edit: true
+ envKey: REDIS_PASSWORD
+ labelZh: Redis 密码
+ labelEn: Redis Password
+ required: false
+ type: password
+ - default: ""
+ edit: true
+ envKey: ADMIN_KEY
+ labelZh: 管理员密钥
+ labelEn: Admin Key
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: GH_WXID
+ labelZh: 推广公众号微信ID
+ labelEn: Promotion WeChat ID
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: API_VERSION
+ labelZh: API 版本前缀
+ labelEn: API Version Prefix
+ required: false
+ type: text
diff --git a/apps/wechatpadpro/18.6/docker-compose.yml b/apps/wechatpadpro/18.6/docker-compose.yml
new file mode 100644
index 000000000..3e2da0974
--- /dev/null
+++ b/apps/wechatpadpro/18.6/docker-compose.yml
@@ -0,0 +1,50 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ wechatpadpro:
+ image: wechatpadpro/wechatpadpro:v18.6
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
+ - ${PANEL_APP_PORT_WECHAT}:${PANEL_APP_PORT_WECHAT}
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${WECHATPADPRO_ROOT_PATH}/.env:/app/.env
+ - ${WECHATPADPRO_ROOT_PATH}/config:/app/config
+ environment:
+ - TZ=Asia/Shanghai
+ - WECHAT_PORT=${PANEL_APP_PORT_WECHAT}
+ - PORT=${PANEL_APP_PORT_HTTP}
+ - DEBUG=false
+ - HOST=0.0.0.0
+ - MCP_PORT=8099
+ - REDIS_MAX_IDLE=30
+ - REDIS_MAX_ACTIVE=100
+ - REDIS_IDLE_TIMEOUT=5000
+ - REDIS_MAX_CONN_LIFETIME=3600
+ - REDIS_CONNECT_TIMEOUT=5000
+ - REDIS_READ_TIMEOUT=10000
+ - REDIS_WRITE_TIMEOUT=10000
+ - WORKER_POOL_SIZE=500
+ - MAX_WORKER_TASK_LEN=1000
+ - WEB_DOMAIN=localhost:1238
+ - WEB_TASK_NAME=
+ - WEB_TASK_APP_NUMBER=
+ - NEWS_SYN_WXID=true
+ - DT=true
+ - MYSQL_HOST=${DB_HOST}
+ - MYSQL_PORT=${DB_PORT}
+ - MYSQL_USER=${DB_USERNAME}
+ - MYSQL_PASSWORD=${DB_PASSWORD}
+ - MYSQL_DATABASE=${DB_DATABASE}
+ - MYSQL_CONNECT_STR=${DB_USERNAME}:${DB_PASSWORD}@tcp(${DB_HOST}:${DB_PORT})/${DB_DATABASE}?charset=utf8mb4&parseTime=true&loc=Local
+ - REDIS_PASS=${REDIS_PASSWORD}
diff --git a/apps/wechatpadpro/18.6/envs/default.env b/apps/wechatpadpro/18.6/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/wechatpadpro/18.6/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/wechatpadpro/18.6/envs/global.env b/apps/wechatpadpro/18.6/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/wechatpadpro/18.6/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/wechatpadpro/18.6/scripts/init.sh b/apps/wechatpadpro/18.6/scripts/init.sh
new file mode 100644
index 000000000..a1a79637f
--- /dev/null
+++ b/apps/wechatpadpro/18.6/scripts/init.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ mkdir -p "$WECHATPADPRO_ROOT_PATH"
+
+ # WECHATPADPRO_ROOT_PATH/.env 创建空文件
+ touch "$WECHATPADPRO_ROOT_PATH/.env"
+
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/wechatpadpro/18.6/scripts/uninstall.sh b/apps/wechatpadpro/18.6/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/wechatpadpro/18.6/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/wechatpadpro/18.6/scripts/upgrade.sh b/apps/wechatpadpro/18.6/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/wechatpadpro/18.6/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/wechatpadpro/README.md b/apps/wechatpadpro/README.md
new file mode 100644
index 000000000..b73b4c0a3
--- /dev/null
+++ b/apps/wechatpadpro/README.md
@@ -0,0 +1,147 @@
+# WeChatPadPro
+
+基於 WeChat Pad 協議的高級管理工具v861
+
+
+
+
+
+## 简介
+
+### 🌟 主要特點
+
+#### 🛡️ 安全可靠
+
+採用最新的 WeChat Pad 協議,確保帳號安全
+
+#### 🔄 自動化處理
+
+支援訊息自動回覆、群管理等自動化操作
+
+#### 🎯 精準控制
+
+提供細粒度的功能控制和配置選項
+
+#### 🔌 擴展性強
+
+支援外掛系統,可自定義擴展功能
+
+#### 📊 資料同步
+
+支援多裝置資料同步,確保資訊統一
+
+### 🎯 適用場景
+
+#### 👥 個人用戶
+
+訊息管理、自動回覆、防撤回等
+
+#### 🏢 企業用戶
+
+客戶管理、批量操作、資料分析等
+
+#### 🤖 開發者
+
+二次開發、功能擴展、自動化整合等
+
+## 功能特性
+
+WeChatPadPro 是基於 WeChat Pad 協議的高級 WeChat 管理工具,支援以下功能:
+
+> 🔐 微信登录验证码API功能 ⭐ 重点功能
+
+### 多种登录方式支持
+
+✅ 二维码登录 - 支持获取登录二维码,绕过验证码流程
+✅ 验证码登录 - 自动处理验证码提交,无需手动获取ticket
+✅ 短信登录 - 支持短信验证码登录方式
+✅ 设备登录 - 支持A16数据登录和设备ID登录
+
+### 自动验证码处理
+
+✅ 自动获取ticket - 系统自动从Redis或状态缓存中获取ticket
+✅ 自动生成data62 - 如果data62为空,系统会自动根据设备信息生成
+✅ 多重数据源 - 从Redis、状态缓存、用户信息、连接管理器等多个来源获取ticket
+✅ 智能参数验证 - 自动检查必要参数,提供友好错误提示
+
+### 实时状态检测
+
+✅ 登录状态监控 - 实时检测扫码状态和登录进度
+✅ 验证码状态跟踪 - 自动识别是否需要验证码
+✅ 连接健康检查 - 实时监控连接状态,自动检测连接健康度
+✅ 心跳监控 - 增加心跳时间记录,超过10秒无心跳认为连接不健康
+
+### RabbitMQ消息队列支持
+
+✅ 智能重连机制 - 只在连接确实断开时才重连,避免频繁重连
+✅ 连接健康检查 - 实时监控连接状态,自动检测连接健康度
+✅ 并发安全 - 使用互斥锁确保重连过程的线程安全
+✅ 消息持久化 - 确保消息在服务器重启后不丢失
+
+### 多账号管理
+
+✅ 多账号并行 - 支持同时管理多个微信账号
+✅ 账号隔离 - 每个账号独立运行,互不影响
+✅ 统一管理 - 通过统一接口管理所有账号状态
+
+### 自动Token刷新
+
+✅ 自动刷新 - 系统自动检测并刷新过期的Token
+✅ 无缝切换 - Token刷新过程中不影响正常使用
+✅ 状态同步 - 刷新后自动同步所有相关状态
+
+### 🔄 API接口列表
+
+#### 登录相关接口
+
+> 获取微信登录二维码(绕过验证码)
+>
+> POST `/api/login/qr/newx`
+
+> 自动处理验证码提交
+>
+> POST `/api/login/AutoVerificationcode`
+
+> 检测扫码登录状态
+>
+> GET `/api/login/CheckLoginStatus`
+
+> 自动处理验证码(推荐)
+>
+> POST `/api/login/verify/auto`
+
+> 手动处理验证码
+>
+> POST `/api/login/verify/manual`
+
+#### 状态检测接口
+
+> 获取在线状态
+>
+> GET `/api/login/GetLoginStatus`
+
+> 初始化状态
+>
+> GET `/api/login/GetInItStatus`
+
+> 检测微信登录环境
+>
+> GET `/api/login/CheckCanSetAlias`
+
+#### 设备管理接口
+
+> 设备登录
+>
+> POST `/api/login/DeviceLogin`
+
+> A16数据登录
+>
+> POST `/api/login/A16Login`
+
+> 短信登录
+>
+> POST `/api/login/SmsLogin`
+
+---
+
+
diff --git a/apps/wechatpadpro/data.yml b/apps/wechatpadpro/data.yml
new file mode 100644
index 000000000..c9fac6c92
--- /dev/null
+++ b/apps/wechatpadpro/data.yml
@@ -0,0 +1,14 @@
+additionalProperties:
+ key: wechatpadpro
+ name: WeChatPadPro
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 基于 WeChat Pad 的高级微信管理工具
+ shortDescEn: A high-level WeChat management tool based on WeChat Pad
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/WeChatPadPro/WeChatPadPro/
+ github: https://github.com/WeChatPadPro/WeChatPadPro/
+ document: https://github.com/WeChatPadPro/WeChatPadPro/
diff --git a/apps/wechatpadpro/logo.png b/apps/wechatpadpro/logo.png
new file mode 100644
index 000000000..f70d4a7c7
Binary files /dev/null and b/apps/wechatpadpro/logo.png differ