diff --git a/README.md b/README.md index 7e2f4c9..fca71fb 100644 --- a/README.md +++ b/README.md @@ -274,6 +274,15 @@ + +OpenDeepWiki +
OpenDeepWiki +
+ +AI驱动的开源代码知识库与文档协作平台,支持多模型、多数据库、智能文档生成 + +latest • [官网链接](https://opendeep.wiki/) + diff --git a/apps/opendeepwiki/README.md b/apps/opendeepwiki/README.md new file mode 100644 index 0000000..df17505 --- /dev/null +++ b/apps/opendeepwiki/README.md @@ -0,0 +1,225 @@ +# OpenDeepWiki + +AI驱动的代码知识库 + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/OpenDeepWiki.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +### 功能 Features +- **快速转换**:支持将所有GitHub、GitLab、Gitee、Gitea等代码仓库几分钟内转换为知识库。 +- **多语言支持**:支持所有编程语言的代码分析和文档生成。 +- **代码结构图**:自动生成Mermaid图,帮助理解代码结构。 +- **自定义模型支持**:支持自定义模型和自定义API,灵活扩展。 +- **AI智能分析**:基于AI进行代码分析和代码关系理解。 +- **SEO友好**:基于Next.js生成SEO友好型文档和知识库,方便搜索引擎抓取。 +- **对话式交互**:支持与AI对话,获取代码详细信息和使用方法,深入理解代码。 + + +### 特性清单 Feature List + +- [x] 支持多代码仓库(GitHub、GitLab、Gitee、Gitea等) +- [x] 支持多编程语言(Python、Java、C#、JavaScript等) +- [x] 支持仓库管理(增删改查仓库) +- [x] 支持多AI提供商(OpenAI、AzureOpenAI、Anthropic等) +- [x] 支持多数据库(SQLite、PostgreSQL、SqlServer、MySQL等) +- [x] 支持多语言(中文、英文、法文等) +- [x] 支持上传ZIP文件和本地文件 +- [x] 提供数据微调平台,生成微调数据集 +- [x] 支持目录级仓库管理,动态生成目录和文档 +- [x] 支持仓库目录修改管理 +- [x] 支持用户管理(增删改查用户) +- [x] 支持用户权限管理 +- [x] 支持仓库级别生成不同微调框架数据集 + +--- + +### 项目介绍 Project Introduction + +OpenDeepWiki是一个开源项目,灵感来源于[DeepWiki](https://deepwiki.com/),基于.NET 9和Semantic Kernel开发。旨在帮助开发者更好地理解和利用代码库,提供代码分析、文档生成和知识图谱构建等功能。 + +主要功能: + +- 分析代码结构 +- 理解仓库核心概念 +- 生成代码文档 +- 自动生成代码的README.md +- 支持MCP(Model Context Protocol)协议 + +--- + +### MCP支持 + +OpenDeepWiki支持MCP协议: + +- 可以作为单仓库的MCPServer,进行仓库分析。 + +示例配置: + +```json +{ + "mcpServers": { + "OpenDeepWiki":{ + "url": "http://Your OpenDeepWiki service IP:port/sse?owner=AIDotNet&name=OpenDeepWiki" + } + } +} +``` + +- owner:仓库所属组织或拥有者名称 +- name:仓库名称 + +添加仓库后,可通过提问测试,如“什么是OpenDeepWiki?”,效果如下图所示: + +![](img/mcp.png) + +这样,OpenDeepWiki可作为MCPServer,供其他AI模型调用,方便分析和理解开源项目。 + +--- + +### 🚀 快速开始 Quick Start + +1. 克隆仓库 + +```bash +git clone https://github.com/AIDotNet/OpenDeepWiki.git +cd OpenDeepWiki +``` + +2. 修改 `docker-compose.yml` 中环境变量配置: + +- OpenAI示例: + +```yaml +services: + koalawiki: + environment: + - KOALAWIKI_REPOSITORIES=/repositories + - TASK_MAX_SIZE_PER_USER=5 # AI每用户最大并行文档生成任务数 + - CHAT_MODEL=DeepSeek-V3 # 模型需支持函数调用 + - ANALYSIS_MODEL= # 用于生成仓库目录结构的分析模型 + - CHAT_API_KEY= # 你的API Key + - LANGUAGE= # 默认生成语言,如“Chinese” + - ENDPOINT=https://api.token-ai.cn/v1 + - DB_TYPE=sqlite + - MODEL_PROVIDER=OpenAI # 模型提供商,支持OpenAI、AzureOpenAI、Anthropic + - DB_CONNECTION_STRING=Data Source=/data/KoalaWiki.db + - EnableSmartFilter=true # 是否启用智能过滤,影响AI获取仓库文件目录能力 + - UPDATE_INTERVAL # 仓库增量更新间隔,单位天 + - MAX_FILE_LIMIT=100 # 上传文件最大限制,单位MB + - DEEP_RESEARCH_MODEL= # 深度研究模型,空则使用CHAT_MODEL + - ENABLE_INCREMENTAL_UPDATE=true # 是否启用增量更新 + - ENABLE_CODED_DEPENDENCY_ANALYSIS=false # 是否启用代码依赖分析,可能影响代码质量 + - ENABLE_WAREHOUSE_COMMIT=true # 是否启用仓库提交 + - ENABLE_FILE_COMMIT=true # 是否启用文件提交 + - REFINE_AND_ENHANCE_QUALITY=true # 是否精炼并提高质量 + - ENABLE_WAREHOUSE_FUNCTION_PROMPT_TASK=true # 是否启用仓库功能提示任务 + - ENABLE_WAREHOUSE_DESCRIPTION_TASK=true # 是否启用仓库描述任务 + - CATALOGUE_FORMAT=compact # 目录结构格式 (compact, json, pathlist, unix) + - ENABLE_CODE_COMPRESSION=false # 是否启用代码压缩 +``` + +- AzureOpenAI和Anthropic配置类似,仅需调整 `ENDPOINT` 和 `MODEL_PROVIDER`。 + +### 数据库配置 + +#### SQLite (默认) +```yaml +- DB_TYPE=sqlite +- DB_CONNECTION_STRING=Data Source=/data/KoalaWiki.db +``` + +#### PostgreSQL +```yaml +- DB_TYPE=postgres +- DB_CONNECTION_STRING=Host=localhost;Database=KoalaWiki;Username=postgres;Password=password +``` + +#### SQL Server +```yaml +- DB_TYPE=sqlserver +- DB_CONNECTION_STRING=Server=localhost;Database=KoalaWiki;Trusted_Connection=true; +``` + +### MySQL +```yaml +- DB_TYPE=mysql +- DB_CONNECTION_STRING=Server=localhost;Database=KoalaWiki;Uid=root;Pwd=password; +``` + +### 🔍 工作原理 How It Works + +OpenDeepWiki利用AI实现: + +- 克隆代码仓库本地 +- 读取.gitignore配置,忽略无关文件 +- 递归扫描目录获取所有文件和目录 +- 判断文件数量是否超过阈值,超过则调用AI模型智能过滤目录 +- 解析AI返回的目录JSON数据 +- 生成或更新README.md +- 调用AI模型生成仓库分类信息与项目总览 +- 清理项目分析标签内容并保存项目总览到数据库 +- 调用AI生成思考目录(任务列表) +- 递归处理目录任务,生成文档目录结构 +- 保存目录结构到数据库 +- 处理未完成的文档任务 +- 若为Git仓库,清理旧提交记录,调用AI生成更新日志并保存 + +--- + +### OpenDeepWiki 仓库解析成文档详细流程图 + +```mermaid +graph TD + A[克隆代码仓库] --> B[读取.gitignore配置忽略文件] + B --> C[递归扫描目录获取所有文件和目录] + C --> D{文件数量是否超过阈值} + D -- 否 --> E[直接返回目录结构] + D -- 是 --> F[调用AI模型进行目录结构智能过滤] + F --> G[解析AI返回的目录JSON数据] + E --> G + G --> H[生成或更新README.md] + H --> I[调用AI模型生成仓库分类信息] + I --> J[调用AI模型生成项目总览信息] + J --> K[清理项目分析标签内容] + K --> L[保存项目总览到数据库] + L --> M[调用AI生成思考目录任务列表] + M --> N[递归处理目录任务,生成DocumentCatalog] + N --> O[保存目录结构到数据库] + O --> P[处理未完成的文档任务] + P --> Q{仓库类型是否为Git} + Q -- 是 --> R[清理旧的提交记录] + R --> S[调用AI生成更新日志] + S --> T[保存更新日志到数据库] + Q -- 否 --> T +``` + +--- + +### 高级配置 Advanced Configuration + +#### 环境变量 Environment Variables + +- `KOALAWIKI_REPOSITORIES`:仓库存储路径 +- `TASK_MAX_SIZE_PER_USER`:AI每用户最大并行文档生成任务数 +- `CHAT_MODEL`:聊天模型(需支持函数调用) +- `ENDPOINT`:API端点 +- `ANALYSIS_MODEL`:用于生成仓库目录结构的分析模型 +- `CHAT_API_KEY`:API密钥 +- `LANGUAGE`:生成文档语言 +- `DB_TYPE`:数据库类型,支持sqlite、postgres、sqlserver、mysql(默认:sqlite) +- `MODEL_PROVIDER`:模型提供商,默认OpenAI,支持AzureOpenAI、Anthropic +- `DB_CONNECTION_STRING`:数据库连接字符串 +- `EnableSmartFilter`:是否启用智能过滤,影响AI获取仓库目录能力 +- `UPDATE_INTERVAL`:仓库增量更新间隔(天) +- `MAX_FILE_LIMIT`:上传文件最大限制(MB) +- `DEEP_RESEARCH_MODEL`:深度研究模型,空则使用CHAT_MODEL +- `ENABLE_INCREMENTAL_UPDATE`:是否启用增量更新 +- `ENABLE_CODED_DEPENDENCY_ANALYSIS`:是否启用代码依赖分析,可能影响代码质量 +- `ENABLE_WAREHOUSE_COMMIT`:是否启用仓库提交 +- `ENABLE_FILE_COMMIT`:是否启用文件提交 +- `REFINE_AND_ENHANCE_QUALITY`:是否精炼并提高质量 +- `ENABLE_WAREHOUSE_FUNCTION_PROMPT_TASK`:是否启用仓库功能提示任务 +- `ENABLE_WAREHOUSE_DESCRIPTION_TASK`:是否启用仓库描述任务 +- `CATALOGUE_FORMAT`:目录结构格式 (compact, json, pathlist, unix) +- `ENABLE_CODE_COMPRESSION`:是否启用代码压缩 diff --git a/apps/opendeepwiki/README_en.md b/apps/opendeepwiki/README_en.md new file mode 100644 index 0000000..8c1734a --- /dev/null +++ b/apps/opendeepwiki/README_en.md @@ -0,0 +1,210 @@ +# OpenDeepWiki + +AI-driven Code Knowledge Base + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/OpenDeepWiki.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +### Features +- **Quick Conversion**: Convert all code repositories (GitHub, GitLab, Gitee, Gitea, etc.) into knowledge bases within minutes. +- **Multi-language Support**: Analyze and generate documentation for all programming languages. +- **Code Structure Diagrams**: Automatically generate Mermaid diagrams to help understand code structure. +- **Custom Model Support**: Support for custom models and APIs for flexible extension. +- **AI Intelligent Analysis**: AI-based code analysis and relationship understanding. +- **SEO Friendly**: Generates SEO-friendly documentation and knowledge bases based on Next.js. +- **Conversational Interaction**: Chat with AI to get detailed code information and usage. + +### Feature List +- [x] Multiple code repositories (GitHub, GitLab, Gitee, Gitea, etc.) +- [x] Multiple programming languages (Python, Java, C#, JavaScript, etc.) +- [x] Repository management (CRUD) +- [x] Multiple AI providers (OpenAI, AzureOpenAI, Anthropic, etc.) +- [x] Multiple databases (SQLite, PostgreSQL, SqlServer, MySQL, etc.) +- [x] Multiple languages (Chinese, English, French, etc.) +- [x] Upload ZIP and local files +- [x] Data fine-tuning platform +- [x] Directory-level repository management +- [x] Repository directory modification +- [x] User management (CRUD) +- [x] User permission management +- [x] Generate fine-tuning datasets for different frameworks + +--- + +### Project Introduction + +OpenDeepWiki is an open-source project inspired by [DeepWiki](https://deepwiki.com/), developed with .NET 9 and Semantic Kernel. It helps developers better understand and utilize code repositories, providing code analysis, documentation generation, and knowledge graph construction. + +Main features: +- Analyze code structure +- Understand repository core concepts +- Generate code documentation +- Automatically generate README.md for code +- Support MCP (Model Context Protocol) + +--- + +### MCP Support + +OpenDeepWiki supports the MCP protocol: +- Can serve as a single repository MCPServer for repository analysis. + +Example configuration: +```json +{ + "mcpServers": { + "OpenDeepWiki":{ + "url": "http://Your OpenDeepWiki service IP:port/sse?owner=AIDotNet&name=OpenDeepWiki" + } + } +} +``` +- owner: Repository organization or owner name +- name: Repository name + +After adding the repository, you can test by asking questions like "What is OpenDeepWiki?", as shown below: + +![](img/mcp.png) + +This way, OpenDeepWiki can serve as an MCPServer for other AI models to call, facilitating analysis and understanding of open-source projects. + +--- + +### 🚀 Quick Start + +1. Clone the repository +```bash +git clone https://github.com/AIDotNet/OpenDeepWiki.git +cd OpenDeepWiki +``` + +2. Modify environment variables in `docker-compose.yml`: +- OpenAI example: +```yaml +services: + koalawiki: + environment: + - KOALAWIKI_REPOSITORIES=/repositories + - TASK_MAX_SIZE_PER_USER=5 # Maximum parallel document generation tasks per user for AI + - CHAT_MODEL=DeepSeek-V3 # Model must support function calling + - ANALYSIS_MODEL= # Analysis model for generating repository directory structure + - CHAT_API_KEY= # Your API Key + - LANGUAGE= # Default generation language, e.g., "Chinese" + - ENDPOINT=https://api.token-ai.cn/v1 + - DB_TYPE=sqlite + - MODEL_PROVIDER=OpenAI # Model provider, supports OpenAI, AzureOpenAI, Anthropic + - DB_CONNECTION_STRING=Data Source=/data/KoalaWiki.db + - EnableSmartFilter=true # Whether to enable smart filtering, affects AI's ability to get repository file directories + - UPDATE_INTERVAL # Repository incremental update interval in days + - MAX_FILE_LIMIT=100 # Maximum upload file limit in MB + - DEEP_RESEARCH_MODEL= # Deep research model, if empty uses CHAT_MODEL + - ENABLE_INCREMENTAL_UPDATE=true # Whether to enable incremental updates + - ENABLE_CODED_DEPENDENCY_ANALYSIS=false # Whether to enable code dependency analysis, may affect code quality + - ENABLE_WAREHOUSE_COMMIT=true # Whether to enable warehouse commit + - ENABLE_FILE_COMMIT=true # Whether to enable file commit + - REFINE_AND_ENHANCE_QUALITY=true # Whether to refine and enhance quality + - ENABLE_WAREHOUSE_FUNCTION_PROMPT_TASK=true # Whether to enable warehouse function prompt task + - ENABLE_WAREHOUSE_DESCRIPTION_TASK=true # Whether to enable warehouse description task + - CATALOGUE_FORMAT=compact # Directory structure format (compact, json, pathlist, unix) + - ENABLE_CODE_COMPRESSION=false # Whether to enable code compression +``` +- AzureOpenAI and Anthropic configurations are similar, just adjust `ENDPOINT` and `MODEL_PROVIDER`. + +### Database Configuration +#### SQLite (Default) +```yaml +- DB_TYPE=sqlite +- DB_CONNECTION_STRING=Data Source=/data/KoalaWiki.db +``` +#### PostgreSQL +```yaml +- DB_TYPE=postgres +- DB_CONNECTION_STRING=Host=localhost;Database=KoalaWiki;Username=postgres;Password=password +``` +#### SQL Server +```yaml +- DB_TYPE=sqlserver +- DB_CONNECTION_STRING=Server=localhost;Database=KoalaWiki;Trusted_Connection=true; +``` +#### MySQL +```yaml +- DB_TYPE=mysql +- DB_CONNECTION_STRING=Server=localhost;Database=KoalaWiki;Uid=root;Pwd=password; +``` + +--- + +### How It Works + +OpenDeepWiki leverages AI to: +- Clone code repository locally +- Read .gitignore configuration to ignore irrelevant files +- Recursively scan directories to get all files and directories +- Determine if file count exceeds threshold; if so, call AI model for intelligent directory filtering +- Parse AI-returned directory JSON data +- Generate or update README.md +- Call AI model to generate repository classification information and project overview +- Clean project analysis tag content and save project overview to database +- Call AI to generate thinking directory (task list) +- Recursively process directory tasks to generate document directory structure +- Save directory structure to database +- Process incomplete document tasks +- If Git repository, clean old commit records, call AI to generate update log and save + +--- + +### OpenDeepWiki Repository Parsing to Documentation Detailed Flow Chart + +```mermaid +graph TD + A[Clone code repository] --> B[Read .gitignore configuration to ignore files] + B --> C[Recursively scan directories to get all files and directories] + C --> D{Does file count exceed threshold?} + D -- No --> E[Directly return directory structure] + D -- Yes --> F[Call AI model for intelligent directory structure filtering] + F --> G[Parse AI-returned directory JSON data] + E --> G + G --> H[Generate or update README.md] + H --> I[Call AI model to generate repository classification information] + I --> J[Call AI model to generate project overview information] + J --> K[Clean project analysis tag content] + K --> L[Save project overview to database] + L --> M[Call AI to generate thinking directory task list] + M --> N[Recursively process directory tasks to generate DocumentCatalog] + N --> O[Save directory structure to database] + O --> P[Process incomplete document tasks] + P --> Q{Is repository type Git?} + Q -- Yes --> R[Clean old commit records] + R --> S[Call AI to generate update log] + S --> T[Save update log to database] + Q -- No --> T +``` + +--- + +### Advanced Configuration +#### Environment Variables +- `KOALAWIKI_REPOSITORIES`: Repository storage path +- `TASK_MAX_SIZE_PER_USER`: Maximum parallel document generation tasks per user for AI +- `CHAT_MODEL`: Chat model (must support function calling) +- `ENDPOINT`: API endpoint +- `ANALYSIS_MODEL`: Analysis model for generating repository directory structure +- `CHAT_API_KEY`: API key +- `LANGUAGE`: Document generation language +- `DB_TYPE`: Database type, supports sqlite, postgres, sqlserver, mysql (default: sqlite) +- `MODEL_PROVIDER`: Model provider, default OpenAI, supports AzureOpenAI, Anthropic +- `DB_CONNECTION_STRING`: Database connection string +- `EnableSmartFilter`: Whether to enable smart filtering, affects AI's ability to get repository directories +- `UPDATE_INTERVAL`: Repository incremental update interval (days) +- `MAX_FILE_LIMIT`: Maximum upload file limit (MB) +- `DEEP_RESEARCH_MODEL`: Deep research model, if empty uses CHAT_MODEL +- `ENABLE_INCREMENTAL_UPDATE`: Whether to enable incremental updates +- `ENABLE_CODED_DEPENDENCY_ANALYSIS`: Whether to enable code dependency analysis, may affect code quality +- `ENABLE_WAREHOUSE_COMMIT`: Whether to enable warehouse commit +- `ENABLE_FILE_COMMIT`: Whether to enable file commit +- `REFINE_AND_ENHANCE_QUALITY`: Whether to refine and enhance quality +- `ENABLE_WAREHOUSE_FUNCTION_PROMPT_TASK`: Whether to enable warehouse function prompt task +- `ENABLE_WAREHOUSE_DESCRIPTION_TASK`: Whether to enable warehouse description task +- `CATALOGUE_FORMAT`: Directory structure format (compact, json, pathlist, unix) +- `ENABLE_CODE_COMPRESSION`: Whether to enable code compression diff --git a/apps/opendeepwiki/data.yml b/apps/opendeepwiki/data.yml new file mode 100644 index 0000000..e011797 --- /dev/null +++ b/apps/opendeepwiki/data.yml @@ -0,0 +1,28 @@ +name: OpenDeepWiki +tags: + - 知识库 + - AI +title: 开源AI知识库与文档协作平台 +description: OpenDeepWiki 是一款支持多模型、多数据库、智能文档生成的开源AI知识库系统,适合企业和个人搭建智能文档与知识协作平台。 +additionalProperties: + key: opendeepwiki + name: OpenDeepWiki + tags: + - KnowledgeBase + - AI + type: website + crossVersionUpdate: true + limit: 0 + recommend: 80 + shortDescZh: 开源AI知识库与文档协作平台 + shortDescEn: Open-source AI-powered knowledge base and documentation platform + website: https://opendeep.wiki/ + github: https://github.com/AIDotNet/OpenDeepWiki + document: https://github.com/AIDotNet/OpenDeepWiki#readme + architectures: + - amd64 + - arm64 + memoryRequired: 1024 + description: + zh: OpenDeepWiki 是一款支持多模型、多数据库、智能文档生成的开源AI知识库系统,适合企业和个人搭建智能文档与知识协作平台。 + en: OpenDeepWiki is an open-source AI-powered knowledge base and documentation platform, supporting multi-model, multi-database, and intelligent document generation for teams and individuals. \ No newline at end of file diff --git a/apps/opendeepwiki/latest/data.yml b/apps/opendeepwiki/latest/data.yml new file mode 100644 index 0000000..027aaf7 --- /dev/null +++ b/apps/opendeepwiki/latest/data.yml @@ -0,0 +1,33 @@ +additionalProperties: + formFields: + - default: 8090 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: Web 端口 + required: true + rule: paramPort + type: number + - default: "https://your-api-endpoint/v1" + edit: true + envKey: ENDPOINT + labelZh: API接口地址 + required: true + type: text + - default: "your-api-key" + edit: true + envKey: CHAT_API_KEY + labelZh: API Key + required: true + type: password + - default: "DeepSeek-V3" + edit: true + envKey: CHAT_MODEL + labelZh: 对话模型 + required: true + type: text + - default: "" + edit: true + envKey: ANALYSIS_MODEL + labelZh: 分析模型 + required: true + type: text \ No newline at end of file diff --git a/apps/opendeepwiki/latest/docker-compose.yml b/apps/opendeepwiki/latest/docker-compose.yml new file mode 100644 index 0000000..01fc720 --- /dev/null +++ b/apps/opendeepwiki/latest/docker-compose.yml @@ -0,0 +1,76 @@ +services: + opendeepwiki: + image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/koala-wiki + container_name: ${CONTAINER_NAME} + restart: always + environment: + - KOALAWIKI_REPOSITORIES=/repositories + - TASK_MAX_SIZE_PER_USER=5 # 每个用户AI处理文档生成的最大数量 + - REPAIR_MERMAID=1 # 是否进行Mermaid修复,1修复,其余不修复 + - CHAT_MODEL=${CHAT_MODEL} # 必须要支持function的模型 + - ANALYSIS_MODEL=${ANALYSIS_MODEL} # 分析模型,用于生成仓库目录结构,这个很重要,模型越强,生成的目录结构越好,为空则使用ChatModel + # 分析模型建议使用GPT-4.1 , CHAT模型可以用其他模型生成文档,以节省 token 开销 + - CHAT_API_KEY=${CHAT_API_KEY} #您的APIkey + - LANGUAGE= # 设置生成语言默认为“中文”, 英文可以填写 English 或 英文 + - ENDPOINT=${ENDPOINT} + - DB_TYPE=sqlite + - DB_CONNECTION_STRING=Data Source=/data/KoalaWiki.db + - UPDATE_INTERVAL=5 # 仓库增量更新间隔,单位天 + - EnableSmartFilter=true # 是否启用智能过滤,这可能影响AI得到仓库的文件目录 + - ENABLE_INCREMENTAL_UPDATE=true # 是否启用增量更新 + - ENABLE_CODED_DEPENDENCY_ANALYSIS=false # 是否启用代码依赖分析?这可能会对代码的质量产生影响。 + - ENABLE_WAREHOUSE_FUNCTION_PROMPT_TASK=false # 是否启用MCP Prompt生成 + - ENABLE_WAREHOUSE_DESCRIPTION_TASK=false # 是否启用仓库Description生成 + - OTEL_SERVICE_NAME=koalawiki + - OTEL_EXPORTER_OTLP_PROTOCOL=grpc + - OTEL_EXPORTER_OTLP_ENDPOINT=http://aspire-dashboard:18889 + volumes: + - ./repositories:/app/repositories + - ./data:/data + networks: + - 1panel-network + labels: + createdBy: "Apps" + + opendeepwiki-web: + image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/koala-wiki-web + container_name: ${CONTAINER_NAME}-web + restart: always + environment: + - NEXT_PUBLIC_API_URL=http://opendeepwiki:8080 # 用于提供给server的地址 + networks: + - 1panel-network + labels: + createdBy: "Apps" + + nginx: # 需要nginx将前端和后端代理到一个端口 + image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/nginx:alpine + container_name: ${CONTAINER_NAME}-nginx + restart: always + ports: + - ${PANEL_APP_PORT_HTTP}:80 + volumes: + - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf + depends_on: + - opendeepwiki + - opendeepwiki-web + networks: + - 1panel-network + labels: + createdBy: "Apps" + + aspire-dashboard: + image: mcr.microsoft.com/dotnet/aspire-dashboard + container_name: ${CONTAINER_NAME}-aspire-dashboard + restart: always + environment: + - TZ=Asia/Shanghai + - Dashboard:ApplicationName=Aspire + networks: + - 1panel-network + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/opendeepwiki/latest/nginx/nginx.conf b/apps/opendeepwiki/latest/nginx/nginx.conf new file mode 100644 index 0000000..77e2a26 --- /dev/null +++ b/apps/opendeepwiki/latest/nginx/nginx.conf @@ -0,0 +1,37 @@ +server { + listen 80; + server_name localhost; + + # 设置上传文件大小限制为 100MB + client_max_body_size 100M; + + # 日志配置 + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + # 代理所有 /api/ 请求到后端服务 + location /api/ { + proxy_pass http://opendeepwiki:8080/api/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # 其他所有请求转发到前端服务 + location / { + proxy_pass http://opendeepwiki-web:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } +} diff --git a/apps/opendeepwiki/logo.png b/apps/opendeepwiki/logo.png new file mode 100644 index 0000000..f54d871 Binary files /dev/null and b/apps/opendeepwiki/logo.png differ