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 实时发送和接收) -

- - Build Status - - - codecov - - - Go Report Card - - - Matrix - - - Docker Pulls - - - latest release - -

+## 特征: -## 介绍 -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 标签发现轻松配置。 -Home­page 已支持超过 15 种语言,集成了至少 25 种应用程序的快捷服务,还可自行配置天气、书签、Docker 容器概况、NAS 系统基本情况等各种小部件。有了 Home­page,我等 NAS 用户就再也不用一遍又一遍地往浏览器地址栏里输入 NAS 的 IP,不用特地去记住各种服务的端口。要做的只是把它们都一一配置在 Home­page 里,各项服务就能一触即达。 \ 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