From e59a6a91e9f9398a73fc740f797d9b1c8bed6caa Mon Sep 17 00:00:00 2001 From: QYG2297248353 Date: Mon, 10 Feb 2025 09:20:49 +0000 Subject: [PATCH] Synced apps from source repository via GitHub Actions --- apps/casdoor/{1.828.0 => 1.831.0}/.env | 0 .../config/init_data.json | 0 apps/casdoor/{1.828.0 => 1.831.0}/data.yml | 0 .../{1.828.0 => 1.831.0}/docker-compose.yml | 2 +- .../{1.828.0 => 1.831.0}/envs/casdoor.env | 0 .../{1.828.0 => 1.831.0}/envs/default.env | 0 .../{1.828.0 => 1.831.0}/envs/global.env | 0 .../{1.828.0 => 1.831.0}/scripts/init.sh | 0 .../{1.828.0 => 1.831.0}/scripts/uninstall.sh | 0 .../{1.828.0 => 1.831.0}/scripts/upgrade.sh | 0 apps/dashdot-gpu/5.9.0/docker-compose.yml | 2 + apps/deeplx/{1.0.3.1 => 1.0.4.1}/.env | 0 apps/deeplx/{1.0.3.1 => 1.0.4.1}/data.yml | 0 .../{1.0.3.1 => 1.0.4.1}/docker-compose.yml | 2 +- .../{1.0.3.1 => 1.0.4.1}/envs/default.env | 0 .../{1.0.3.1 => 1.0.4.1}/envs/global.env | 0 .../{1.0.3.1 => 1.0.4.1}/scripts/init.sh | 0 .../{1.0.3.1 => 1.0.4.1}/scripts/uninstall.sh | 0 .../{1.0.3.1 => 1.0.4.1}/scripts/upgrade.sh | 0 apps/ollama/0.5.7/.env | 21 ++++ apps/ollama/0.5.7/data.yml | 71 +++++++++++++ apps/ollama/0.5.7/docker-compose.yml | 30 ++++++ .../0.5.7}/envs/default.env | 0 .../0.5.7}/envs/global.env | 0 .../0.5.7}/scripts/init.sh | 0 .../0.5.7}/scripts/uninstall.sh | 0 .../0.5.7}/scripts/upgrade.sh | 0 apps/ollama/README.md | 96 ++++++++++++++++++ apps/ollama/data.yml | 15 +++ apps/ollama/logo.png | Bin 0 -> 50341 bytes apps/open-webui/0.5.10/.env | 30 ++++++ apps/open-webui/0.5.10/data.yml | 78 ++++++++++++++ apps/open-webui/0.5.10/docker-compose.yml | 27 +++++ apps/open-webui/0.5.10/envs/default.env | 2 + apps/open-webui/0.5.10/envs/global.env | 2 + apps/open-webui/0.5.10/scripts/init.sh | 17 ++++ apps/open-webui/0.5.10/scripts/uninstall.sh | 10 ++ apps/open-webui/0.5.10/scripts/upgrade.sh | 17 ++++ apps/open-webui/README.md | 61 +++++++++++ apps/open-webui/data.yml | 15 +++ apps/open-webui/logo.png | Bin 0 -> 10655 bytes apps/rsshub/{2025-02-08 => 2025-02-09}/.env | 0 .../{2025-02-08 => 2025-02-09}/data.yml | 0 .../docker-compose.yml | 2 +- apps/rsshub/2025-02-09/envs/default.env | 2 + apps/rsshub/2025-02-09/envs/global.env | 2 + apps/rsshub/2025-02-09/scripts/init.sh | 17 ++++ apps/rsshub/2025-02-09/scripts/uninstall.sh | 10 ++ apps/rsshub/2025-02-09/scripts/upgrade.sh | 17 ++++ 49 files changed, 545 insertions(+), 3 deletions(-) rename apps/casdoor/{1.828.0 => 1.831.0}/.env (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/config/init_data.json (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/data.yml (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/docker-compose.yml (93%) rename apps/casdoor/{1.828.0 => 1.831.0}/envs/casdoor.env (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/envs/default.env (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/envs/global.env (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/scripts/init.sh (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/scripts/uninstall.sh (100%) rename apps/casdoor/{1.828.0 => 1.831.0}/scripts/upgrade.sh (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/.env (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/data.yml (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/docker-compose.yml (88%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/envs/default.env (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/envs/global.env (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/scripts/init.sh (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/scripts/uninstall.sh (100%) rename apps/deeplx/{1.0.3.1 => 1.0.4.1}/scripts/upgrade.sh (100%) create mode 100644 apps/ollama/0.5.7/.env create mode 100644 apps/ollama/0.5.7/data.yml create mode 100644 apps/ollama/0.5.7/docker-compose.yml rename apps/{rsshub/2025-02-08 => ollama/0.5.7}/envs/default.env (100%) rename apps/{rsshub/2025-02-08 => ollama/0.5.7}/envs/global.env (100%) rename apps/{rsshub/2025-02-08 => ollama/0.5.7}/scripts/init.sh (100%) rename apps/{rsshub/2025-02-08 => ollama/0.5.7}/scripts/uninstall.sh (100%) rename apps/{rsshub/2025-02-08 => ollama/0.5.7}/scripts/upgrade.sh (100%) create mode 100644 apps/ollama/README.md create mode 100644 apps/ollama/data.yml create mode 100644 apps/ollama/logo.png create mode 100644 apps/open-webui/0.5.10/.env create mode 100644 apps/open-webui/0.5.10/data.yml create mode 100644 apps/open-webui/0.5.10/docker-compose.yml create mode 100644 apps/open-webui/0.5.10/envs/default.env create mode 100644 apps/open-webui/0.5.10/envs/global.env create mode 100644 apps/open-webui/0.5.10/scripts/init.sh create mode 100644 apps/open-webui/0.5.10/scripts/uninstall.sh create mode 100644 apps/open-webui/0.5.10/scripts/upgrade.sh create mode 100644 apps/open-webui/README.md create mode 100644 apps/open-webui/data.yml create mode 100644 apps/open-webui/logo.png rename apps/rsshub/{2025-02-08 => 2025-02-09}/.env (100%) rename apps/rsshub/{2025-02-08 => 2025-02-09}/data.yml (100%) rename apps/rsshub/{2025-02-08 => 2025-02-09}/docker-compose.yml (97%) create mode 100644 apps/rsshub/2025-02-09/envs/default.env create mode 100644 apps/rsshub/2025-02-09/envs/global.env create mode 100644 apps/rsshub/2025-02-09/scripts/init.sh create mode 100644 apps/rsshub/2025-02-09/scripts/uninstall.sh create mode 100644 apps/rsshub/2025-02-09/scripts/upgrade.sh diff --git a/apps/casdoor/1.828.0/.env b/apps/casdoor/1.831.0/.env similarity index 100% rename from apps/casdoor/1.828.0/.env rename to apps/casdoor/1.831.0/.env diff --git a/apps/casdoor/1.828.0/config/init_data.json b/apps/casdoor/1.831.0/config/init_data.json similarity index 100% rename from apps/casdoor/1.828.0/config/init_data.json rename to apps/casdoor/1.831.0/config/init_data.json diff --git a/apps/casdoor/1.828.0/data.yml b/apps/casdoor/1.831.0/data.yml similarity index 100% rename from apps/casdoor/1.828.0/data.yml rename to apps/casdoor/1.831.0/data.yml diff --git a/apps/casdoor/1.828.0/docker-compose.yml b/apps/casdoor/1.831.0/docker-compose.yml similarity index 93% rename from apps/casdoor/1.828.0/docker-compose.yml rename to apps/casdoor/1.831.0/docker-compose.yml index 39e82b1..e302579 100644 --- a/apps/casdoor/1.828.0/docker-compose.yml +++ b/apps/casdoor/1.831.0/docker-compose.yml @@ -14,7 +14,7 @@ services: - verificationCodeTimeout=10 - appname=casdoor - authState=casdoor - image: casbin/casdoor:v1.828.0 + image: casbin/casdoor:v1.831.0 labels: createdBy: Apps networks: diff --git a/apps/casdoor/1.828.0/envs/casdoor.env b/apps/casdoor/1.831.0/envs/casdoor.env similarity index 100% rename from apps/casdoor/1.828.0/envs/casdoor.env rename to apps/casdoor/1.831.0/envs/casdoor.env diff --git a/apps/casdoor/1.828.0/envs/default.env b/apps/casdoor/1.831.0/envs/default.env similarity index 100% rename from apps/casdoor/1.828.0/envs/default.env rename to apps/casdoor/1.831.0/envs/default.env diff --git a/apps/casdoor/1.828.0/envs/global.env b/apps/casdoor/1.831.0/envs/global.env similarity index 100% rename from apps/casdoor/1.828.0/envs/global.env rename to apps/casdoor/1.831.0/envs/global.env diff --git a/apps/casdoor/1.828.0/scripts/init.sh b/apps/casdoor/1.831.0/scripts/init.sh similarity index 100% rename from apps/casdoor/1.828.0/scripts/init.sh rename to apps/casdoor/1.831.0/scripts/init.sh diff --git a/apps/casdoor/1.828.0/scripts/uninstall.sh b/apps/casdoor/1.831.0/scripts/uninstall.sh similarity index 100% rename from apps/casdoor/1.828.0/scripts/uninstall.sh rename to apps/casdoor/1.831.0/scripts/uninstall.sh diff --git a/apps/casdoor/1.828.0/scripts/upgrade.sh b/apps/casdoor/1.831.0/scripts/upgrade.sh similarity index 100% rename from apps/casdoor/1.828.0/scripts/upgrade.sh rename to apps/casdoor/1.831.0/scripts/upgrade.sh diff --git a/apps/dashdot-gpu/5.9.0/docker-compose.yml b/apps/dashdot-gpu/5.9.0/docker-compose.yml index 45133b1..307f9ba 100644 --- a/apps/dashdot-gpu/5.9.0/docker-compose.yml +++ b/apps/dashdot-gpu/5.9.0/docker-compose.yml @@ -10,6 +10,8 @@ services: devices: - capabilities: - gpu + devices: + - /dev/dri:/dev/dri env_file: - ./envs/global.env - .env diff --git a/apps/deeplx/1.0.3.1/.env b/apps/deeplx/1.0.4.1/.env similarity index 100% rename from apps/deeplx/1.0.3.1/.env rename to apps/deeplx/1.0.4.1/.env diff --git a/apps/deeplx/1.0.3.1/data.yml b/apps/deeplx/1.0.4.1/data.yml similarity index 100% rename from apps/deeplx/1.0.3.1/data.yml rename to apps/deeplx/1.0.4.1/data.yml diff --git a/apps/deeplx/1.0.3.1/docker-compose.yml b/apps/deeplx/1.0.4.1/docker-compose.yml similarity index 88% rename from apps/deeplx/1.0.3.1/docker-compose.yml rename to apps/deeplx/1.0.4.1/docker-compose.yml index a4c16de..636edd1 100644 --- a/apps/deeplx/1.0.3.1/docker-compose.yml +++ b/apps/deeplx/1.0.4.1/docker-compose.yml @@ -9,7 +9,7 @@ services: - .env environment: - PORT=1188 - image: qyg2297248353/deeplx:v1.0.3.1 + image: qyg2297248353/deeplx:v1.0.4.1 labels: createdBy: Apps networks: diff --git a/apps/deeplx/1.0.3.1/envs/default.env b/apps/deeplx/1.0.4.1/envs/default.env similarity index 100% rename from apps/deeplx/1.0.3.1/envs/default.env rename to apps/deeplx/1.0.4.1/envs/default.env diff --git a/apps/deeplx/1.0.3.1/envs/global.env b/apps/deeplx/1.0.4.1/envs/global.env similarity index 100% rename from apps/deeplx/1.0.3.1/envs/global.env rename to apps/deeplx/1.0.4.1/envs/global.env diff --git a/apps/deeplx/1.0.3.1/scripts/init.sh b/apps/deeplx/1.0.4.1/scripts/init.sh similarity index 100% rename from apps/deeplx/1.0.3.1/scripts/init.sh rename to apps/deeplx/1.0.4.1/scripts/init.sh diff --git a/apps/deeplx/1.0.3.1/scripts/uninstall.sh b/apps/deeplx/1.0.4.1/scripts/uninstall.sh similarity index 100% rename from apps/deeplx/1.0.3.1/scripts/uninstall.sh rename to apps/deeplx/1.0.4.1/scripts/uninstall.sh diff --git a/apps/deeplx/1.0.3.1/scripts/upgrade.sh b/apps/deeplx/1.0.4.1/scripts/upgrade.sh similarity index 100% rename from apps/deeplx/1.0.3.1/scripts/upgrade.sh rename to apps/deeplx/1.0.4.1/scripts/upgrade.sh diff --git a/apps/ollama/0.5.7/.env b/apps/ollama/0.5.7/.env new file mode 100644 index 0000000..068b1ff --- /dev/null +++ b/apps/ollama/0.5.7/.env @@ -0,0 +1,21 @@ +# 数据持久化路径 [必填] +OLLAMA_ROOT_PATH=/home/ollama + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=11434 + +# 最大加载模型数量 [必填] +OLLAMA_MAX_LOADED_MODELS=1 + +# 最大队列长度 [必填] +OLLAMA_MAX_QUEUE=512 + +# 并行推理数量 [必填] +OLLAMA_NUM_PARALLEL=1 + +# 缓存类型 [必填] +OLLAMA_KV_CACHE_TYPE=f16 + +# 启用 Flash Attention [必填] +OLLAMA_FLASH_ATTENTION=0 + diff --git a/apps/ollama/0.5.7/data.yml b/apps/ollama/0.5.7/data.yml new file mode 100644 index 0000000..5ba0061 --- /dev/null +++ b/apps/ollama/0.5.7/data.yml @@ -0,0 +1,71 @@ +additionalProperties: + formFields: + - default: "/home/ollama" + edit: true + envKey: OLLAMA_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 11434 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 1 + edit: true + envKey: OLLAMA_MAX_LOADED_MODELS + labelZh: 最大加载模型数量 + labelEn: Maximum number of loaded models + required: true + rule: paramPort + type: number + - default: 512 + edit: true + envKey: OLLAMA_MAX_QUEUE + labelZh: 最大队列长度 + labelEn: Maximum queue length + required: true + rule: paramPort + type: number + - default: "1" + edit: true + envKey: OLLAMA_NUM_PARALLEL + labelZh: 并行推理数量 + labelEn: Number of parallel inferences + required: true + type: select + values: + - label: "1" + value: "1" + - label: "4" + value: "4" + - default: "f16" + edit: true + envKey: OLLAMA_KV_CACHE_TYPE + labelZh: 缓存类型 + labelEn: Cache type + required: true + type: select + values: + - label: "f16" + value: "f16" + - label: "q8_0" + value: "q8_0" + - label: "q4_0" + value: "q4_0" + - default: "0" + edit: true + envKey: OLLAMA_FLASH_ATTENTION + labelZh: 启用 Flash Attention + labelEn: Enable Flash Attention + required: true + type: select + values: + - label: "启用" + value: "1" + - label: "禁用" + value: "0" diff --git a/apps/ollama/0.5.7/docker-compose.yml b/apps/ollama/0.5.7/docker-compose.yml new file mode 100644 index 0000000..a8b3a9c --- /dev/null +++ b/apps/ollama/0.5.7/docker-compose.yml @@ -0,0 +1,30 @@ +networks: + 1panel-network: + external: true +services: + ollama: + container_name: ollama + devices: + - /dev/dri:/dev/dri + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - OLLAMA_HOST=0.0.0.0 + - OLLAMA_PORT=11434 + - OLLAMA_MAX_LOADED_MODELS=1 + - OLLAMA_NUM_PARALLEL=1 + - OLLAMA_MAX_QUEUE=512 + - OLLAMA_FLASH_ATTENTION=0 + - OLLAMA_KV_CACHE_TYPE=f16 + image: ollama/ollama:0.5.7 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:11434 + restart: always + volumes: + - ${OLLAMA_ROOT_PATH}/data:/root/.ollama diff --git a/apps/rsshub/2025-02-08/envs/default.env b/apps/ollama/0.5.7/envs/default.env similarity index 100% rename from apps/rsshub/2025-02-08/envs/default.env rename to apps/ollama/0.5.7/envs/default.env diff --git a/apps/rsshub/2025-02-08/envs/global.env b/apps/ollama/0.5.7/envs/global.env similarity index 100% rename from apps/rsshub/2025-02-08/envs/global.env rename to apps/ollama/0.5.7/envs/global.env diff --git a/apps/rsshub/2025-02-08/scripts/init.sh b/apps/ollama/0.5.7/scripts/init.sh similarity index 100% rename from apps/rsshub/2025-02-08/scripts/init.sh rename to apps/ollama/0.5.7/scripts/init.sh diff --git a/apps/rsshub/2025-02-08/scripts/uninstall.sh b/apps/ollama/0.5.7/scripts/uninstall.sh similarity index 100% rename from apps/rsshub/2025-02-08/scripts/uninstall.sh rename to apps/ollama/0.5.7/scripts/uninstall.sh diff --git a/apps/rsshub/2025-02-08/scripts/upgrade.sh b/apps/ollama/0.5.7/scripts/upgrade.sh similarity index 100% rename from apps/rsshub/2025-02-08/scripts/upgrade.sh rename to apps/ollama/0.5.7/scripts/upgrade.sh diff --git a/apps/ollama/README.md b/apps/ollama/README.md new file mode 100644 index 0000000..6755732 --- /dev/null +++ b/apps/ollama/README.md @@ -0,0 +1,96 @@ +# Ollama + +一站式大模型部署平台 + + + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 模型列表 + +Ollama支持可用的型号列表 [ollama.com/library](https://ollama.com/library 'Ollama 模型库) + +下面是一些可以下载的示例模型: + +| Model | Parameters | Size | Download | +|--------------------|------------|-------|----------------------------------| +| DeepSeek-R1 | 7B | 4.7GB | `ollama run deepseek-r1` | +| DeepSeek-R1 | 671B | 404GB | `ollama run deepseek-r1:671b` | +| Llama 3.3 | 70B | 43GB | `ollama run llama3.3` | +| Llama 3.2 | 3B | 2.0GB | `ollama run llama3.2` | +| Llama 3.2 | 1B | 1.3GB | `ollama run llama3.2:1b` | +| Llama 3.2 Vision | 11B | 7.9GB | `ollama run llama3.2-vision` | +| Llama 3.2 Vision | 90B | 55GB | `ollama run llama3.2-vision:90b` | +| Llama 3.1 | 8B | 4.7GB | `ollama run llama3.1` | +| Llama 3.1 | 405B | 231GB | `ollama run llama3.1:405b` | +| Phi 4 | 14B | 9.1GB | `ollama run phi4` | +| Phi 3 Mini | 3.8B | 2.3GB | `ollama run phi3` | +| Gemma 2 | 2B | 1.6GB | `ollama run gemma2:2b` | +| Gemma 2 | 9B | 5.5GB | `ollama run gemma2` | +| Gemma 2 | 27B | 16GB | `ollama run gemma2:27b` | +| Mistral | 7B | 4.1GB | `ollama run mistral` | +| Moondream 2 | 1.4B | 829MB | `ollama run moondream` | +| Neural Chat | 7B | 4.1GB | `ollama run neural-chat` | +| Starling | 7B | 4.1GB | `ollama run starling-lm` | +| Code Llama | 7B | 3.8GB | `ollama run codellama` | +| Llama 2 Uncensored | 7B | 3.8GB | `ollama run llama2-uncensored` | +| LLaVA | 7B | 4.5GB | `ollama run llava` | +| Solar | 10.7B | 6.1GB | `ollama run solar` | + +> 您应该至少有8 GB的RAM来运行7B型号,16 GB来运行13B型号,32 GB来运行33B型号。 + +## 基本命令 + +### 拉取一个模型 + +```sh +ollama pull llama3.2 +``` + +此命令也可用于更新本地模型。仅拉取差异。 + +### 移除一个模型 + +```sh +ollama rm llama3.2 +``` + +### 复制一个模型 + +```sh +ollama cp llama3.2 my-model +``` + +### 显示模型信息 + +```sh +ollama show llama3.2 +``` + +### 列出你电脑上的所有模型 + +```sh +ollama list +``` + +### 列出当前已加载的模型 + +```sh +ollama ps +``` + +### 停止正在运行的模型 + +```sh +ollama stop llama3.2 +``` + +### 启动 Ollama + +```sh +ollama serve +``` + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/ollama/data.yml b/apps/ollama/data.yml new file mode 100644 index 0000000..96a7a5f --- /dev/null +++ b/apps/ollama/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: ollama + name: Ollama + tags: + - WebSite + - AI + - Local + shortDescZh: 一站式大模型部署平台 + shortDescEn: Get up and running with large language models + type: website + crossVersionUpdate: true + limit: 0 + website: https://ollama.com/ + github: https://github.com/ollama/ollama/ + document: https://ollama.com/ diff --git a/apps/ollama/logo.png b/apps/ollama/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..213da6d826132cde77e0ae23e8daac9f58338807 GIT binary patch literal 50341 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

v*ZKJPfRB$4*WKM+;Oy*d@8ICzAP@+g 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 .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/open-webui/0.5.10/scripts/uninstall.sh b/apps/open-webui/0.5.10/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/open-webui/0.5.10/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/open-webui/0.5.10/scripts/upgrade.sh b/apps/open-webui/0.5.10/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/open-webui/0.5.10/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/open-webui/README.md b/apps/open-webui/README.md new file mode 100644 index 0000000..cf62077 --- /dev/null +++ b/apps/open-webui/README.md @@ -0,0 +1,61 @@ +# Open Webui + +用户友好的 AI 界面 + +![Open Webui](https://file.lifebus.top/imgs/open-webui_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +Open WebUI 是一个可扩展的、功能丰富且用户友好的自托管 AI 平台,旨在完全离线运行。它支持各种 LLM 运行器,如 Ollama 和兼容 +OpenAI 的 API,内置 RAG 推理引擎,使其成为强大的 AI 部署解决方案。 + +## 特性 + +🚀 轻松设置:使用 Docker 或 Kubernetes(kubectl、kustomize 或 helm)无缝安装,以获得无烦恼的体验,支持带有:ollama和:cuda标签的镜像。 + +🤝 奥拉马/开放 AI API 集成:轻松集成与奥拉马模型兼容的 API,实现多功能的对话。自定义开放 AI API URL,以连接到 +LMStudio、GroqCloud、Mistral、OpenRouter 等。 + +🛡️ 细粒度权限和用户组:通过允许管理员创建详细的用户角色和权限,我们确保了一个安全用户环境。这种细粒度不仅增强了安全性,还允许定制用户体验,培养用户之间的所有权和责任感。 + +手机 响应式设计:在桌面电脑、笔记本电脑和移动设备上享受无缝体验。 + +手机 渐进式 Web 应用(PWA):使用我们的 PWA,在您的移动设备上享受原生应用般的体验,提供本地主机上的离线访问和无缝的用户界面。 + +✒️🔢 全 Markdown 和 LaTeX 支持:通过全面的 Markdown 和 LaTeX 功能提升您的 LLM 体验,丰富您的交互。 + +🎤📹 免提语音/视频通话:体验集成免提语音和视频通话功能的无缝通信,让您享受更加生动和互动的聊天环境。 + +🛠️ 模型构建器:通过 Web 界面轻松创建 Ollama 模型。创建和添加自定义角色/代理,自定义聊天元素,并通过开放 WebUI 社区集成轻松导入模型。 + +🐍 原生 Python 函数调用工具:通过工具工作区内置代码编辑器支持,增强您的 LLMs。通过简单添加您的纯 Python 函数,实现与 LLMs +的无缝集成。 + +📚 本地 RAG 集成:深入了解聊天交互的未来,利用突破性的检索增强生成(RAG)支持。此功能无缝将文档交互集成到您的聊天体验中。 +您可以直接将文档加载到聊天中,或将文件添加到您的文档库中,使用查询前的#命令轻松访问它们。 + +🔍 Web Search for RAG:使用 SearXNG、Google PSE、Brave Search、serpstack、serper、Serply、DuckDuckGo、TavilySearch、SearchApi 和 +Bing 等提供商进行网络搜索,并将结果直接注入到您的聊天体验中。 + +🌐 网页浏览功能:使用#命令后跟 URL,无缝将网站集成到您的聊天体验中。此功能允许您直接将网络内容融入对话中,增强您互动的丰富性和深度。 + +🎨 图像生成集成:无缝集成图像生成功能,使用 AUTOMATIC1111 API 或 ComfyUI(本地)以及 OpenAI 的 +DALL-E(外部)等选项,通过动态视觉内容丰富您的聊天体验。 + +⚙️ 多种模型对话:轻松同时与各种模型互动,利用它们的独特优势以获得最佳响应。通过并行利用多样化的模型集来提升您的体验。 + +基于角色的访问控制(RBAC):通过受限权限确保安全访问;只有授权人员可以访问您的 Ollama,且模型创建/提取的专属权限仅限于管理员。 + +🌐🌍 多语言支持:使用我们的国际化(i18n)支持,用您喜欢的语言体验 Open WebUI。加入我们,扩展我们的支持语言!我们正在积极寻找贡献者! + +🧩 管道,开放 WebUI 插件支持:通过管道插件框架无缝将自定义逻辑和 Python 库集成到 Open WebUI 中。启动您的管道实例,将 OpenAI +URL 设置为管道 URL,探索无限可能。示例包括函数调用、用户速率限制以控制访问、使用 Langfuse 等工具进行使用监控、与 +LibreTranslate 的实时翻译以支持多语言、有毒信息过滤等更多功能。 + +🌟 持续更新:我们致力于通过定期更新、修复和新功能来改进 Open WebUI。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/open-webui/data.yml b/apps/open-webui/data.yml new file mode 100644 index 0000000..a5fd6e9 --- /dev/null +++ b/apps/open-webui/data.yml @@ -0,0 +1,15 @@ +additionalProperties: + key: open-webui + name: Open Webui + tags: + - WebSite + - AI + - Local + shortDescZh: 用户友好的 AI 界面 + shortDescEn: User-friendly AI interface + type: website + crossVersionUpdate: true + limit: 0 + website: https://openwebui.com/ + github: https://github.com/open-webui/open-webui/ + document: https://docs.openwebui.com/ diff --git a/apps/open-webui/logo.png b/apps/open-webui/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63735ad4616fa452325af0fe351139dca01ca0ab GIT binary patch literal 10655 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 FV1kY|K2HDu literal 0 KcmV+b0RR6000031 diff --git a/apps/rsshub/2025-02-08/.env b/apps/rsshub/2025-02-09/.env similarity index 100% rename from apps/rsshub/2025-02-08/.env rename to apps/rsshub/2025-02-09/.env diff --git a/apps/rsshub/2025-02-08/data.yml b/apps/rsshub/2025-02-09/data.yml similarity index 100% rename from apps/rsshub/2025-02-08/data.yml rename to apps/rsshub/2025-02-09/data.yml diff --git a/apps/rsshub/2025-02-08/docker-compose.yml b/apps/rsshub/2025-02-09/docker-compose.yml similarity index 97% rename from apps/rsshub/2025-02-08/docker-compose.yml rename to apps/rsshub/2025-02-09/docker-compose.yml index d41de1c..881ac30 100644 --- a/apps/rsshub/2025-02-08/docker-compose.yml +++ b/apps/rsshub/2025-02-09/docker-compose.yml @@ -57,7 +57,7 @@ services: - -f - http://localhost:1200/healthz?key=${ACCESS_KEY} timeout: 10s - image: diygod/rsshub:2025-02-08 + image: diygod/rsshub:2025-02-09 labels: createdBy: Apps networks: diff --git a/apps/rsshub/2025-02-09/envs/default.env b/apps/rsshub/2025-02-09/envs/default.env new file mode 100644 index 0000000..cd05f46 --- /dev/null +++ b/apps/rsshub/2025-02-09/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/rsshub/2025-02-09/envs/global.env b/apps/rsshub/2025-02-09/envs/global.env new file mode 100644 index 0000000..e10989f --- /dev/null +++ b/apps/rsshub/2025-02-09/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/rsshub/2025-02-09/scripts/init.sh b/apps/rsshub/2025-02-09/scripts/init.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/rsshub/2025-02-09/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/rsshub/2025-02-09/scripts/uninstall.sh b/apps/rsshub/2025-02-09/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/rsshub/2025-02-09/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/rsshub/2025-02-09/scripts/upgrade.sh b/apps/rsshub/2025-02-09/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/rsshub/2025-02-09/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