From 53bd2cf7e498f6f665a5dd12fe6f8ec727c8c922 Mon Sep 17 00:00:00 2001
From: wanghe-fit2cloud
Date: Tue, 2 Jul 2024 17:13:59 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?=
=?UTF-8?q?=E5=BA=94=E7=94=A8=E5=AE=89=E8=A3=85=E5=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/dataease/2.7.1/docker-compose.yml | 1 +
apps/discourse/3.2.2/data.yml | 321 -----------------------
apps/discourse/3.2.2/docker-compose.yml | 111 --------
apps/discourse/README.md | 5 -
apps/discourse/data.yml | 19 --
apps/discourse/logo.png | Bin 8538 -> 0 bytes
apps/gotify/2.5.0/docker-compose.yml | 1 -
apps/gotify/README.md | 38 +--
apps/gotify/data.yml | 8 +-
apps/homepage/0.9.2/data.yml | 32 +--
apps/homepage/0.9.2/docker-compose.yml | 6 +-
apps/homepage/README.md | 14 +-
apps/homepage/data.yml | 16 +-
apps/homepage/logo.png | Bin 30860 -> 4166 bytes
apps/lobe-chat/1.1.16/docker-compose.yml | 1 -
apps/lobe-chat/README.md | 24 +-
apps/lobe-chat/data.yml | 4 +-
apps/ntfy/2.11.0/docker-compose.yml | 1 -
apps/ntfy/README.md | 35 +--
apps/openldap/2.6.8/data.yml | 64 ++---
apps/openldap/data.yml | 9 +-
21 files changed, 116 insertions(+), 594 deletions(-)
delete mode 100644 apps/discourse/3.2.2/data.yml
delete mode 100644 apps/discourse/3.2.2/docker-compose.yml
delete mode 100644 apps/discourse/README.md
delete mode 100644 apps/discourse/data.yml
delete mode 100644 apps/discourse/logo.png
diff --git a/apps/dataease/2.7.1/docker-compose.yml b/apps/dataease/2.7.1/docker-compose.yml
index 8cabcfed..808a1e56 100644
--- a/apps/dataease/2.7.1/docker-compose.yml
+++ b/apps/dataease/2.7.1/docker-compose.yml
@@ -11,6 +11,7 @@ services:
- ./data/static-resource:/opt/dataease2.0/data/static-resource
- ./cache:/opt/dataease2.0/cache
- ./data/geo:/opt/dataease2.0/data/geo
+ - ./data/exportData:/opt/dataease2.0/data/exportData
environment:
PANEL_DB_HOST: ${PANEL_DB_HOST}
PANEL_DB_PORT: ${PANEL_DB_PORT}
diff --git a/apps/discourse/3.2.2/data.yml b/apps/discourse/3.2.2/data.yml
deleted file mode 100644
index d114e3d1..00000000
--- a/apps/discourse/3.2.2/data.yml
+++ /dev/null
@@ -1,321 +0,0 @@
-additionalProperties:
- formFields:
- - default: "40268"
- edit: true
- envKey: PANEL_APP_PORT_HTTP
- labelEn: Port
- labelZh: 端口
- required: true
- rule: paramPort
- type: number
- - default: "plugins public/backups public/uploads"
- disabled: true
- envKey: DISCOURSE_DATA_TO_PERSIST
- labelEn: Data to Persist
- labelZh: 持久化数据
- required: true
- type: text
- - default: "no"
- edit: true
- envKey: DISCOURSE_ENABLE_HTTPS
- labelEn: Enable HTTPS
- labelZh: 启用 HTTPS
- required: true
- type: select
- values:
- - label: "yes"
- value: "yes"
- - label: "no"
- value: "no"
- - default: "80"
- edit: true
- envKey: DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER
- labelEn: External HTTP Port
- labelZh: 外部 HTTP 端口
- required: true
- type: number
- - default: "443"
- edit: true
- envKey: DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER
- labelEn: External HTTPS Port
- labelZh: 外部 HTTPS 端口
- required: true
- type: number
- - default: "www.example.com"
- edit: true
- envKey: DISCOURSE_HOST
- labelEn: Discourse Host
- labelZh: Discourse 主机
- required: true
- type: text
- - default: "3000"
- edit: true
- envKey: DISCOURSE_PORT_NUMBER
- labelEn: Discourse Port
- labelZh: Discourse 端口
- required: true
- type: number
- - default: ""
- edit: true
- envKey: DISCOURSE_SKIP_BOOTSTRAP
- labelEn: Skip Bootstrap
- labelZh: 跳过引导
- required: false
- type: text
- - default: "My site!"
- edit: true
- envKey: DISCOURSE_SITE_NAME
- labelEn: Site Name
- labelZh: 网站名称
- required: true
- type: text
- - default: "production"
- edit: true
- envKey: DISCOURSE_ENV
- labelEn: Environment
- labelZh: 环境
- required: true
- type: select
- values:
- - label: development
- value: "development"
- - label: production
- value: "production"
- - label: test
- value: "test"
- - default: "yes"
- edit: true
- envKey: DISCOURSE_PRECOMPILE_ASSETS
- labelEn: Precompile Assets
- labelZh: 预编译资产
- required: true
- type: select
- values:
- - label: "yes"
- value: "yes"
- - label: "no"
- value: "no"
- - default: "no"
- edit: true
- envKey: DISCOURSE_ENABLE_CONF_PERSISTENCE
- labelEn: Enable Config Persistence
- labelZh: 启用配置持久化
- required: true
- type: select
- values:
- - label: "yes"
- value: "yes"
- - label: "no"
- value: "no"
- - default: "yes"
- edit: true
- envKey: DISCOURSE_EXTRA_CONF_CONTENT
- labelEn: Extra Config Content
- labelZh: 额外配置内容
- required: true
- type: select
- values:
- - label: "yes"
- value: "yes"
- - label: "no"
- value: "no"
- - default: "direct"
- edit: true
- envKey: DISCOURSE_PASSENGER_SPAWN_METHOD
- labelEn: Passenger Spawn Method
- labelZh: Passenger 启动方法
- required: true
- type: select
- values:
- - label: "direct"
- value: "direct"
- - label: "smart"
- value: "smart"
- - default: ""
- edit: true
- envKey: DISCOURSE_PASSENGER_EXTRA_FLAGS
- labelEn: Passenger Extra Flags
- labelZh: Passenger 额外标志
- required: false
- type: text
- - default: "siteadmin"
- edit: true
- envKey: DISCOURSE_USERNAME
- labelEn: Username
- labelZh: 用户名
- required: true
- type: text
- - default: "siteadmin12345"
- edit: true
- envKey: DISCOURSE_PASSWORD
- labelEn: Password
- labelZh: 密码
- random: true
- required: true
- rule: paramComplexity
- type: password
- - default: "admin@localhost.com"
- edit: true
- envKey: DISCOURSE_EMAIL
- labelEn: Email
- labelZh: 电子邮箱
- required: true
- type: text
- - default: "Admin"
- edit: true
- envKey: DISCOURSE_FIRST_NAME
- labelEn: First Name
- labelZh: 名
- required: true
- type: text
- - default: "User"
- edit: true
- envKey: DISCOURSE_LAST_NAME
- labelEn: Last Name
- labelZh: 姓
- required: true
- type: text
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_HOST
- labelEn: SMTP Host
- labelZh: SMTP 主机
- required: false
- type: text
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_PORT_NUMBER
- labelEn: SMTP Port
- labelZh: SMTP 端口
- required: false
- type: number
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_USER
- labelEn: SMTP User
- labelZh: SMTP 用户名
- required: false
- type: text
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_PASSWORD
- labelEn: SMTP Password
- labelZh: SMTP 密码
- required: false
- type: password
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_PROTOCOL
- labelEn: SMTP Protocol
- labelZh: SMTP 协议
- required: false
- type: text
- - default: "login"
- edit: true
- envKey: DISCOURSE_SMTP_AUTH
- labelEn: SMTP Auth
- labelZh: SMTP 认证
- required: true
- type: select
- values:
- - label: login
- value: "login"
- - label: plain
- value: "plain"
- - label: cram_md5
- value: "cram_md5"
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_OPEN_TIMEOUT
- labelEn: SMTP Open Timeout
- labelZh: SMTP 打开超时
- required: false
- type: number
- - default: ""
- edit: true
- envKey: DISCOURSE_SMTP_READ_TIMEOUT
- labelEn: SMTP Read Timeout
- labelZh: SMTP 读取超时
- required: false
- type: number
- - default: ""
- edit: true
- envKey: PANEL_DB_HOST
- key: postgresql
- labelEn: Database Service
- labelZh: 数据库服务
- required: true
- type: service
- - default: "5432"
- edit: true
- envKey: PANEL_DB_PORT
- labelEn: Database Port Number
- labelZh: 数据库端口号
- required: true
- rule: paramPort
- type: number
- - default: "bitnami_discourse"
- envKey: PANEL_DB_NAME
- labelEn: Database
- labelZh: 数据库名
- random: true
- required: true
- rule: paramCommon
- type: text
- - default: "bn_discourse"
- envKey: PANEL_DB_USER
- labelEn: User
- labelZh: 数据库用户
- random: true
- required: true
- rule: paramCommon
- type: text
- - default: discourse
- envKey: PANEL_DB_USER_PASSWORD
- labelEn: Password
- labelZh: 数据库用户密码
- random: true
- required: true
- rule: paramComplexity
- type: password
- - default: ""
- edit: true
- envKey: REDIS_HOST
- key: redis
- labelEn: Redis Service
- labelZh: Redis服务
- required: true
- type: service
- - default: "6379"
- edit: true
- envKey: REDIS_PORT
- labelEn: Redis Service Port
- labelZh: Redis服务端口
- required: true
- rule: paramPort
- type: number
- - default: ""
- envKey: PANEL_REDIS_ROOT_PASSWORD
- labelEn: Redis Password
- labelZh: Redis 密码
- required: false
- type: password
- - default: "no"
- edit: true
- envKey: DISCOURSE_REDIS_USE_SSL
- labelEn: Redis Use SSL
- labelZh: Redis 使用 SSL
- required: true
- type: select
- values:
- - label: "yes"
- value: "yes"
- - label: "no"
- value: "no"
- - default: "hstore,pg_trgm"
- disabled: true
- envKey: POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS
- labelEn: PostgreSQL Client Create Database Extensions
- labelZh: PostgreSQL 客户端创建数据库扩展
- required: true
- type: text
diff --git a/apps/discourse/3.2.2/docker-compose.yml b/apps/discourse/3.2.2/docker-compose.yml
deleted file mode 100644
index c5b226a0..00000000
--- a/apps/discourse/3.2.2/docker-compose.yml
+++ /dev/null
@@ -1,111 +0,0 @@
-services:
- discourse:
- image: "bitnami/discourse:3.2.2"
- container_name: ${CONTAINER_NAME}
- restart: always
- networks:
- - 1panel-network
- ports:
- - "${PANEL_APP_PORT_HTTP}:${DISCOURSE_PORT_NUMBER}"
- volumes:
- - ./data/discourse:/bitnami/discourse
- environment:
- - DISCOURSE_DATA_TO_PERSIST=${DISCOURSE_DATA_TO_PERSIST}
- - DISCOURSE_ENABLE_HTTPS=${DISCOURSE_ENABLE_HTTPS}
- - DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER}
- - DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER}
- - DISCOURSE_HOST=${DISCOURSE_HOST}
- - DISCOURSE_PORT_NUMBER=${DISCOURSE_PORT_NUMBER}
- - DISCOURSE_SKIP_BOOTSTRAP=${DISCOURSE_SKIP_BOOTSTRAP}
- - DISCOURSE_SITE_NAME=${DISCOURSE_SITE_NAME}
- - DISCOURSE_ENV=${DISCOURSE_ENV}
- - DISCOURSE_PRECOMPILE_ASSETS=${DISCOURSE_PRECOMPILE_ASSETS}
- - DISCOURSE_ENABLE_CONF_PERSISTENCE=${DISCOURSE_ENABLE_CONF_PERSISTENCE}
- - DISCOURSE_EXTRA_CONF_CONTENT=${DISCOURSE_EXTRA_CONF_CONTENT}
- - DISCOURSE_PASSENGER_SPAWN_METHOD=${DISCOURSE_PASSENGER_SPAWN_METHOD}
- - DISCOURSE_PASSENGER_EXTRA_FLAGS=${DISCOURSE_PASSENGER_EXTRA_FLAGS}
- - DISCOURSE_USERNAME=${DISCOURSE_USERNAME}
- - DISCOURSE_PASSWORD=${DISCOURSE_PASSWORD}
- - DISCOURSE_EMAIL=${DISCOURSE_EMAIL}
- - DISCOURSE_FIRST_NAME=${DISCOURSE_FIRST_NAME}
- - DISCOURSE_LAST_NAME=${DISCOURSE_LAST_NAME}
- - DISCOURSE_SMTP_HOST=${DISCOURSE_SMTP_HOST}
- - DISCOURSE_SMTP_PORT_NUMBER=${DISCOURSE_SMTP_PORT_NUMBER}
- - DISCOURSE_SMTP_USER=${DISCOURSE_SMTP_USER}
- - DISCOURSE_SMTP_PASSWORD=${DISCOURSE_SMTP_PASSWORD}
- - DISCOURSE_SMTP_PROTOCOL=${DISCOURSE_SMTP_PROTOCOL}
- - DISCOURSE_SMTP_AUTH=${DISCOURSE_SMTP_AUTH}
- - DISCOURSE_SMTP_OPEN_TIMEOUT=${DISCOURSE_SMTP_OPEN_TIMEOUT}
- - DISCOURSE_SMTP_READ_TIMEOUT=${DISCOURSE_SMTP_READ_TIMEOUT}
- - DISCOURSE_DATABASE_HOST=${PANEL_DB_HOST}
- - DISCOURSE_DATABASE_PORT_NUMBER=${PANEL_DB_PORT}
- - DISCOURSE_DATABASE_NAME=${PANEL_DB_NAME}
- - DISCOURSE_DATABASE_USER=${PANEL_DB_USER}
- - DISCOURSE_DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD}
- - DISCOURSE_DB_BACKUP_HOST=${PANEL_DB_HOST}
- - DISCOURSE_DB_BACKUP_PORT=${PANEL_DB_PORT}
- - DISCOURSE_REDIS_HOST=${REDIS_HOST}
- - DISCOURSE_REDIS_PORT_NUMBER=${REDIS_PORT}
- - DISCOURSE_REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD}
- - DISCOURSE_REDIS_USE_SSL=${DISCOURSE_REDIS_USE_SSL}
- - POSTGRESQL_CLIENT_POSTGRES_USER=${PANEL_DB_USER}
- - POSTGRESQL_CLIENT_POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD}
- - POSTGRESQL_CLIENT_CREATE_DATABASE_NAME=${PANEL_DB_NAME}
- - POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS=${POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS}
- labels:
- createdBy: "Apps"
-
- discourse-sidekiq:
- image: "bitnami/discourse:3.2.2"
- container_name: ${CONTAINER_NAME}-sidekiq
- restart: always
- networks:
- - 1panel-network
- volumes:
- - ./data/sidekiq:/bitnami/discourse
- command: /opt/bitnami/scripts/discourse-sidekiq/run.sh
- environment:
- - DISCOURSE_DATA_TO_PERSIST=${DISCOURSE_DATA_TO_PERSIST}
- - DISCOURSE_ENABLE_HTTPS=${DISCOURSE_ENABLE_HTTPS}
- - DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER}
- - DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER}
- - DISCOURSE_HOST=${DISCOURSE_HOST}
- - DISCOURSE_PORT_NUMBER=${DISCOURSE_PORT_NUMBER}
- - DISCOURSE_SKIP_BOOTSTRAP=${DISCOURSE_SKIP_BOOTSTRAP}
- - DISCOURSE_SITE_NAME=${DISCOURSE_SITE_NAME}
- - DISCOURSE_ENV=${DISCOURSE_ENV}
- - DISCOURSE_PRECOMPILE_ASSETS=${DISCOURSE_PRECOMPILE_ASSETS}
- - DISCOURSE_ENABLE_CONF_PERSISTENCE=${DISCOURSE_ENABLE_CONF_PERSISTENCE}
- - DISCOURSE_EXTRA_CONF_CONTENT=${DISCOURSE_EXTRA_CONF_CONTENT}
- - DISCOURSE_PASSENGER_SPAWN_METHOD=${DISCOURSE_PASSENGER_SPAWN_METHOD}
- - DISCOURSE_PASSENGER_EXTRA_FLAGS=${DISCOURSE_PASSENGER_EXTRA_FLAGS}
- - DISCOURSE_USERNAME=${DISCOURSE_USERNAME}
- - DISCOURSE_PASSWORD=${DISCOURSE_PASSWORD}
- - DISCOURSE_EMAIL=${DISCOURSE_EMAIL}
- - DISCOURSE_FIRST_NAME=${DISCOURSE_FIRST_NAME}
- - DISCOURSE_LAST_NAME=${DISCOURSE_LAST_NAME}
- - DISCOURSE_SMTP_HOST=${DISCOURSE_SMTP_HOST}
- - DISCOURSE_SMTP_PORT_NUMBER=${DISCOURSE_SMTP_PORT_NUMBER}
- - DISCOURSE_SMTP_USER=${DISCOURSE_SMTP_USER}
- - DISCOURSE_SMTP_PASSWORD=${DISCOURSE_SMTP_PASSWORD}
- - DISCOURSE_SMTP_PROTOCOL=${DISCOURSE_SMTP_PROTOCOL}
- - DISCOURSE_SMTP_AUTH=${DISCOURSE_SMTP_AUTH}
- - DISCOURSE_SMTP_OPEN_TIMEOUT=${DISCOURSE_SMTP_OPEN_TIMEOUT}
- - DISCOURSE_SMTP_READ_TIMEOUT=${DISCOURSE_SMTP_READ_TIMEOUT}
- - DISCOURSE_DATABASE_HOST=${PANEL_DB_HOST}
- - DISCOURSE_DATABASE_PORT_NUMBER=${PANEL_DB_PORT}
- - DISCOURSE_DATABASE_NAME=${PANEL_DB_NAME}
- - DISCOURSE_DATABASE_USER=${PANEL_DB_USER}
- - DISCOURSE_DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD}
- - DISCOURSE_DB_BACKUP_HOST=${PANEL_DB_HOST}
- - DISCOURSE_DB_BACKUP_PORT=${PANEL_DB_PORT}
- - DISCOURSE_REDIS_HOST=${REDIS_HOST}
- - DISCOURSE_REDIS_PORT_NUMBER=${REDIS_PORT}
- - DISCOURSE_REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD}
- - DISCOURSE_REDIS_USE_SSL=${DISCOURSE_REDIS_USE_SSL}
- labels:
- createdBy: "Apps"
-
-networks:
- 1panel-network:
- external: true
diff --git a/apps/discourse/README.md b/apps/discourse/README.md
deleted file mode 100644
index 1aa16677..00000000
--- a/apps/discourse/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-Discourse 是您社区的在线家园。我们为那些想要完全控制其网站运行方式和位置的用户提供 100% 开源社区平台。
\ No newline at end of file
diff --git a/apps/discourse/data.yml b/apps/discourse/data.yml
deleted file mode 100644
index e062eaba..00000000
--- a/apps/discourse/data.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Discourse
-tags:
- - 建站
-title: 开源讨论平台
-description: 开源讨论平台
-additionalProperties:
- key: discourse
- name: Discourse
- tags:
- - WebSite
- shortDescZh: 开源讨论平台
- shortDescEn: Open-source discussion platform
- type: website
- crossVersionUpdate: true
- limit: 0
- recommend: 0
- website: https://www.discourse.org
- github: https://github.com/discourse/discourse
- document: https://docs.discourse.org
diff --git a/apps/discourse/logo.png b/apps/discourse/logo.png
deleted file mode 100644
index 0596417f45980cd45dcd46b8d66f0aec3dcd5bfa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
KcmV+b0RR6000031
literal 8538
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
-
-
-
-
+# Gotify
-gotify/server
+**Gotify** 是一个简单的服务器来发送和接收消息(通过 WebSocket 实时发送和接收)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+## 特征:
-## 介绍
-Gotify 是一个用于通过 Web 套接字实时发送和接收消息的服务器。
+- 通过 REST-API 发送消息
+- 通过 WebSocket 接收消息
+- 管理用户、客户端和应用程序
+- [插件](https://gotify.net/docs/plugin)
+- Web-UI -> [./ui](https://github.com/gotify/server/tree/master/ui)
+- 发送消息的 CLI -> [gotify/cli](https://github.com/gotify/cli)
+- Android-APP -> [gotify/android](https://github.com/gotify/android)
\ No newline at end of file
diff --git a/apps/gotify/data.yml b/apps/gotify/data.yml
index 58dd56a5..d45916ef 100644
--- a/apps/gotify/data.yml
+++ b/apps/gotify/data.yml
@@ -1,15 +1,15 @@
name: Gotify
tags:
- 开发工具
-title: 自托管通知服务器
-description: 自托管通知服务器
+title: 简单的服务器来发送和接收消息
+description: 简单的服务器来发送和接收消息
additionalProperties:
key: gotify
name: Gotify
tags:
- DevTool
- shortDescZh: 自托管通知服务器
- shortDescEn: Self-hosted notification server
+ shortDescZh: 简单的服务器来发送和接收消息
+ shortDescEn: A simple server for sending and receiving messages
type: tool
crossVersionUpdate: true
limit: 0
diff --git a/apps/homepage/0.9.2/data.yml b/apps/homepage/0.9.2/data.yml
index 01dd5f94..279c74d1 100644
--- a/apps/homepage/0.9.2/data.yml
+++ b/apps/homepage/0.9.2/data.yml
@@ -1,17 +1,17 @@
additionalProperties:
- formFields:
- - default: 3000
- edit: true
- envKey: PANEL_APP_PORT_HTTP
- labelEn: HTTP Port
- labelZh: HTTP端口
- required: true
- rule: paramPort
- type: number
- - default: Asia/Shanghai
- edit: true
- envKey: TIME_ZONE
- labelEn: Time zone
- labelZh: 时区
- required: true
- type: text
+ formFields:
+ - default: 3000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: Asia/Shanghai
+ edit: true
+ envKey: TIME_ZONE
+ labelEn: Time zone
+ labelZh: 时区
+ required: true
+ type: text
diff --git a/apps/homepage/0.9.2/docker-compose.yml b/apps/homepage/0.9.2/docker-compose.yml
index 2c914b09..c9dee6fd 100644
--- a/apps/homepage/0.9.2/docker-compose.yml
+++ b/apps/homepage/0.9.2/docker-compose.yml
@@ -1,8 +1,7 @@
-version: "3.3"
services:
homepage:
container_name: ${CONTAINER_NAME}
- image: ghcr.io/gethomepage/homepage:latest
+ image: ghcr.io/gethomepage/homepage:v0.9.2
restart: always
networks:
- 1panel-network
@@ -17,7 +16,6 @@ services:
- TZ=${TIME_ZONE}
labels:
createdBy: "Apps"
-
networks:
1panel-network:
- external: true
+ external: true
\ No newline at end of file
diff --git a/apps/homepage/README.md b/apps/homepage/README.md
index 8dc08134..1f4dda1a 100644
--- a/apps/homepage/README.md
+++ b/apps/homepage/README.md
@@ -1,6 +1,14 @@
# HomePage
-是一个现代化的、完全静态的、快速的、安全的、高度可定制的应用程序仪表板
-他可以通过YAML文件或Docker标签发现轻松配置。大家更习惯称这类应用为「导航页」。
+**HomePage** 是一个现代、完全静态、快速、安全、完全代理、高度可定制的应用程序仪表板,集成了 100 多种服务并可翻译成多种语言。可通过 YAML 文件或通过 docker 标签发现轻松配置。
-Homepage 已支持超过 15 种语言,集成了至少 25 种应用程序的快捷服务,还可自行配置天气、书签、Docker 容器概况、NAS 系统基本情况等各种小部件。有了 Homepage,我等 NAS 用户就再也不用一遍又一遍地往浏览器地址栏里输入 NAS 的 IP,不用特地去记住各种服务的端口。要做的只是把它们都一一配置在 Homepage 里,各项服务就能一触即达。
\ No newline at end of file
+## 特征:
+
+- **快速**:网站在构建时静态生成,以便立即加载。
+- **安全**:所有对后端服务的 API 请求都经过代理,从而隐藏您的 API 密钥。社区不断审查其安全性。
+- **适合所有人**:为 AMD64、ARM64、ARMv7 和 ARMv6 构建的图像。
+- **完整的 i18n**:支持超过 40 种语言。
+- **服务和网络书签**:将自定义链接添加到主页。
+- **Docker 集成**:容器状态和统计信息。通过标签自动发现服务。
+- **服务集成**:超过 100 种服务集成,包括流行的 starr 和自托管应用程序。
+- **信息和实用程序小部件**:天气、时间、日期、搜索等。
\ No newline at end of file
diff --git a/apps/homepage/data.yml b/apps/homepage/data.yml
index f1a12885..0fa607f0 100644
--- a/apps/homepage/data.yml
+++ b/apps/homepage/data.yml
@@ -1,19 +1,19 @@
name: Homepage
tags:
- - 安全
-title: 多功能个人导航页
-description: 一款网络书签仪表盘, 多用于解决内网服务搭建太多,记不住网址的问题
+ - 实用工具
+title: 现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板
+description: 现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板
additionalProperties:
key: homepage
name: Homepage
tags:
- - WebSite
- shortDescZh: 个人导航页
- shortDescEn: personal homepage website
- type: webSite
+ - Tool
+ shortDescZh: 现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板
+ shortDescEn: A modern, fully static, fast, secure fully proxied, highly customizable application dashboard
+ type: tool
crossVersionUpdate: true
limit: 0
- recommend: 12
+ recommend: 0
website: https://gethomepage.dev/
github: https://github.com/gethomepage/homepage
document: https://gethomepage.dev/latest/configs/
diff --git a/apps/homepage/logo.png b/apps/homepage/logo.png
index 67e9d0d1b5195012c207e90f079c133d56bc8541..b2befb0892a18c8190c9daf01a07679d88c01735 100644
GIT binary patch
literal 4166
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
QZvX%Q07*qoM6N<$f_G3#umAu6
literal 30860
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ŵghv)xe?d~-G*Xut4zz6`#08sK@
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
i?Z2vf{m*jNFTgME>jfj}S6W^G0000
+# LobeChat
-Lobe Chat
+**LobeChat** 是一个现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架,支持语音合成、多模态、可扩展的(function call)插件系统,一键免费拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用。
-现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架
-支持语音合成、多模态、可扩展的([function call][docs-functionc-call])插件系统
-一键**免费**拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用
+## 特性:
-[English](https://github.com/lobehub/lobe-chat/blob/main/README.md) · **简体中文** · [更新日志](https://github.com/lobehub/lobe-chat/blob/main/CHANGELOG.md) · [文档](https://lobehub.com/docs) · [报告问题](https://github.com/lobehub/lobe-chat/issues) · [请求功能](https://github.com/lobehub/lobe-chat/issues)
-
-
-![](https://private-user-images.githubusercontent.com/28616219/306135690-9f155dff-4737-429f-9cad-a70a1a860c5f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTYyNjc0OTgsIm5iZiI6MTcxNjI2NzE5OCwicGF0aCI6Ii8yODYxNjIxOS8zMDYxMzU2OTAtOWYxNTVkZmYtNDczNy00MjlmLTljYWQtYTcwYTFhODYwYzVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTIxVDA0NTMxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJlOWNlODY5NmI4ODA2Y2Y5NmM3NzVjNzU4MjAzYWE3NDU2YmJlMzdmOWU1YjIyNjcwMGRjNTJhNTRhYTFjZjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.5xWoXxU6RhqvqRFH2e17oshXIeMqJLUDPLonpz9wTGU)
\ No newline at end of file
+- 多模型服务商支持;
+- 支持本地大语言模型 (LLM);
+- 模型视觉识别 (Model Visual);
+- TTS & STT 语音会话;
+- Text to Image 文生图;
+- 插件系统 (Function Calling);
+- 助手市场 (GPTs);
+- 支持本地 / 远程数据库;
+- 支持多用户管理;
+- 渐进式 Web 应用 (PWA);
+- 移动设备适配;
+- 自定义主题。
\ No newline at end of file
diff --git a/apps/lobe-chat/data.yml b/apps/lobe-chat/data.yml
index 59397dc7..4257ccb8 100644
--- a/apps/lobe-chat/data.yml
+++ b/apps/lobe-chat/data.yml
@@ -1,8 +1,8 @@
name: LobeChat
tags:
- AI / 大模型
-title: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架
-description: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架
+title: 开源、现代设计的 ChatGPT/LLMs UI/框架
+description: 开源、现代设计的 ChatGPT/LLMs UI/框架
additionalProperties:
key: lobe-chat
name: LobeChat
diff --git a/apps/ntfy/2.11.0/docker-compose.yml b/apps/ntfy/2.11.0/docker-compose.yml
index 848a72e5..83db4590 100644
--- a/apps/ntfy/2.11.0/docker-compose.yml
+++ b/apps/ntfy/2.11.0/docker-compose.yml
@@ -23,7 +23,6 @@ services:
start_period: 40s
labels:
createdBy: "Apps"
-
networks:
1panel-network:
external: true
diff --git a/apps/ntfy/README.md b/apps/ntfy/README.md
index 5061e182..5ce53d20 100644
--- a/apps/ntfy/README.md
+++ b/apps/ntfy/README.md
@@ -1,28 +1,13 @@
-![ntfy](https://github.com/binwiederhier/ntfy/raw/main/web/public/static/images/ntfy.png)
+# ntfy
-# ntfy.sh
-## 通过 PUT/POST 发送推送通知到你的手机或桌面
-[![Release](https://img.shields.io/github/release/binwiederhier/ntfy.svg?color=success&style=flat-square)](https://github.com/binwiederhier/ntfy/releases/latest)
-[![Go Reference](https://pkg.go.dev/badge/heckel.io/ntfy.svg)](https://pkg.go.dev/heckel.io/ntfy/v2)
-[![Tests](https://github.com/binwiederhier/ntfy/workflows/test/badge.svg)](https://github.com/binwiederhier/ntfy/actions)
-[![Go Report Card](https://goreportcard.com/badge/github.com/binwiederhier/ntfy)](https://goreportcard.com/report/github.com/binwiederhier/ntfy)
-[![codecov](https://codecov.io/gh/binwiederhier/ntfy/branch/main/graph/badge.svg?token=A597KQ463G)](https://codecov.io/gh/binwiederhier/ntfy)
-[![Discord](https://img.shields.io/discord/874398661709295626?label=Discord)](https://discord.gg/cT7ECsZj9w)
-[![Matrix](https://img.shields.io/matrix/ntfy:matrix.org?label=Matrix)](https://matrix.to/#/#ntfy:matrix.org)
-[![Matrix space](https://img.shields.io/matrix/ntfy-space:matrix.org?label=Matrix+space)](https://matrix.to/#/#ntfy-space:matrix.org)
-[![Healthcheck](https://healthchecks.io/badge/68b65976-b3b0-4102-aec9-980921/kcoEgrLY.svg)](https://ntfy.statuspage.io/)
-[![Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/binwiederhier/ntfy)
+**ntfy** 是一种基于 HTTP 的简单发布-订阅 通知服务。使用 ntfy,您可以通过任何计算机的 脚本将通知发送到您的手机或桌面,而无需注册或支付任何费用。
-**ntfy**(发音为 "*notify*")是一个简单的基于 HTTP 的[发布-订阅](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)通知服务。通过 ntfy,你可以**通过脚本从任何计算机发送通知到你的手机或桌面**,**无需注册或支付任何费用**。如果你想运行自己的服务实例,你可以很容易地做到,因为 ntfy 是开源的。
+## 主要功能:
-你可以通过 **[ntfy.sh](https://ntfy.sh)** 访问免费的 ntfy 服务。这里还有一个[开源的 Android 应用](https://github.com/binwiederhier/ntfy-android),可以在[Google Play](https://play.google.com/store/apps/details?id=io.heckel.ntfy) 或 [F-Droid](https://f-droid.org/en/packages/io.heckel.ntfy/) 上找到,还有一个[开源的 iOS 应用](https://github.com/binwiederhier/ntfy-ios),可以在[App Store](https://apps.apple.com/us/app/ntfy/id1625396347) 上找到。
-
-## 使用说明
-
-可以通过修改配置文件来自定义设置,文件路径如下,按需修改,将`server.yml.sample`修改为`server.yml`,
-
-然后自定义修改内容即可。
-
-```
-/opt/1panel/apps/local/ntfy/ntfy/data/ntfy/server.yml.sample
-```
\ No newline at end of file
+- **多平台支持**:Ntfy 支持在不同平台上使用,包括 Android、iOS、Windows、Linux 和 macOS 等。
+- **多种传输方式**:通知可以通过 HTTP API、命令行工具、Email、WebSocket 等多种方式发送和接收。
+- **自托管**:用户可以选择将 Ntfy 部署在自己的服务器上,实现完全的控制和隐私保护。
+- **订阅模式**:Ntfy 允许用户订阅特定主题,从而只接收相关的通知。
+- **简单集成**:通过简单的 HTTP 请求,Ntfy 可以与各种应用和脚本轻松集成。
+- **实时通知**:支持即时通知,让用户能够第一时间收到重要信息。
+- **开放源代码**:Ntfy 是一个开源项目,用户可以查看源代码,进行自定义和扩展。
\ No newline at end of file
diff --git a/apps/openldap/2.6.8/data.yml b/apps/openldap/2.6.8/data.yml
index fc035526..48f55d13 100644
--- a/apps/openldap/2.6.8/data.yml
+++ b/apps/openldap/2.6.8/data.yml
@@ -1,33 +1,33 @@
additionalProperties:
- formFields:
- - envKey: LDAP_ROOT
- default: dc=example,dc=org
- labelEn: LDAP baseDN
- labelZh: LDAP baseDN
- random: false
- required: true
- type: text
- - envKey: LDAP_ADMIN_USERNAME
- default: admin
- labelEn: LDAP admin username
- labelZh: LDAP 管理员用户名
- random: false
- required: true
- rule: paramCommon
- type: text
- - envKey: LDAP_ADMIN_PASSWORD
- default: adminpassword
- labelEn: LDAP admin password
- labelZh: LDAP 管理员密码
- random: true
- required: true
- rule: paramComplexity
- type: password
- - envKey: LDAP_PORT
- default: 1389
- edit: true
- labelEn: LDAP listening port
- labelZh: LDAP 监听端口
- required: true
- rule: paramPort
- type: number
\ No newline at end of file
+ formFields:
+ - envKey: LDAP_ROOT
+ default: dc=example,dc=org
+ labelEn: LDAP baseDN
+ labelZh: LDAP baseDN
+ random: false
+ required: true
+ type: text
+ - envKey: LDAP_ADMIN_USERNAME
+ default: admin
+ labelEn: LDAP admin username
+ labelZh: LDAP 管理员用户名
+ random: false
+ required: true
+ rule: paramCommon
+ type: text
+ - envKey: LDAP_ADMIN_PASSWORD
+ default: adminpassword
+ labelEn: LDAP admin password
+ labelZh: LDAP 管理员密码
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - envKey: LDAP_PORT
+ default: 1389
+ edit: true
+ labelEn: LDAP listening port
+ labelZh: LDAP 监听端口
+ required: true
+ rule: paramPort
+ type: number
\ No newline at end of file
diff --git a/apps/openldap/data.yml b/apps/openldap/data.yml
index bf111ccf..fe0d5b91 100644
--- a/apps/openldap/data.yml
+++ b/apps/openldap/data.yml
@@ -1,18 +1,19 @@
name: OpenLDAP
tags:
- 数据库
-title: OpenLDAP
-description: OpenLDAP 是一个开源的 LDAP(Lightweight Directory Access Protocol) 服务软件。
+title: 开源的 LDAP(Lightweight Directory Access Protocol) 服务软件
+description: 开源的 LDAP(Lightweight Directory Access Protocol) 服务软件
additionalProperties:
key: openldap
name: OpenLDAP
tags:
- Database
- shortDescZh: OpenLDAP 是一个开源的 LDAP(Lightweight Directory Access Protocol) 服务软件。
- shortDescEn: OpenLDAP Software is an open source implementation of the Lightweight Directory Access Protocol.
+ shortDescZh: 开源的 LDAP(Lightweight Directory Access Protocol) 服务软件
+ shortDescEn: An open source implementation of the Lightweight Directory Access Protocol
type: database
crossVersionUpdate: true
limit: 0
recommend: 0
website: https://openldap.org/
+ github: https://github.com/openldap/openldap
document: https://hub.docker.com/r/bitnami/openldap