diff --git a/README_OFFLINE_DEPLOY.md b/README_OFFLINE_DEPLOY.md new file mode 100644 index 000000000..b74464f13 --- /dev/null +++ b/README_OFFLINE_DEPLOY.md @@ -0,0 +1,129 @@ +# MaxKB 离线部署指南 + +本文档介绍如何将 MaxKB 项目打包成 Docker 镜像并在本地环境中离线部署。 + +## 准备工作 + +1. 确保目标机器上已安装 Docker +2. 准备好 MaxKB 项目的完整代码包 + +## 构建离线镜像 + +### 方法一:直接从源码构建 + +1. 克隆或下载 MaxKB 项目源码到本地: +```bash +git clone https://github.com/your-repo/maxkb.git +``` + +2. 进入项目目录并构建镜像: +```bash +cd maxkb +docker build -f installer/Dockerfile-offline -t maxkb-offline:v2.0 . +``` + +### 方法二:预构建镜像导出/导入 + +如果您已经有构建好的镜像,可以导出为 tar 文件进行传输: + +1. 在联网环境中导出镜像: +```bash +docker save -o maxkb-offline-v2.0.tar maxkb-offline:v2.0 +``` + +2. 将 tar 文件传输到目标机器后导入: +```bash +docker load -i maxkb-offline-v2.0.tar +``` + +## 运行容器 + +使用以下命令运行 MaxKB 容器: + +```bash +docker run -d \ + --name maxkb \ + -p 8080:8080 \ + -v /opt/maxkb/data:/opt/maxkb/data \ + -v /opt/maxkb/logs:/opt/maxkb/logs \ + maxkb-offline:v2.0 +``` + +### 自定义配置 + +如果需要自定义数据库或其他配置,可以通过挂载配置文件实现: + +```bash +# 创建配置文件 +mkdir -p /opt/maxkb/conf +cp config.yaml /opt/maxkb/conf/config.yml + +# 修改配置文件中的数据库和其他设置 + +# 运行容器并挂载配置 +docker run -d \ + --name maxkb \ + -p 8080:8080 \ + -v /opt/maxkb/data:/opt/maxkb/data \ + -v /opt/maxkb/logs:/opt/maxkb/logs \ + -v /opt/maxkb/conf:/opt/maxkb/conf \ + maxkb-offline:v2.0 +``` + +## 访问应用 + +容器启动后,可以通过以下地址访问 MaxKB: + +- 用户界面: http://localhost:8080/admin +- 对话界面: http://localhost:8080/chat +- API 文档: http://localhost:8080/api/doc + +## 数据持久化 + +默认情况下,应用数据保存在以下目录中: + +- 数据库数据: `/opt/maxkb/data` +- 日志文件: `/opt/maxkb/logs` +- 配置文件: `/opt/maxkb/conf` + +请确保这些目录在宿主机上有适当的读写权限。 + +## 故障排除 + +### 查看容器日志 + +```bash +docker logs -f maxkb +``` + +### 进入容器调试 + +```bash +docker exec -it maxkb bash +``` + +### 停止和删除容器 + +```bash +# 停止容器 +docker stop maxkb + +# 删除容器 +docker rm maxkb + +# 删除镜像 +docker rmi maxkb-offline:v2.0 +``` + +## 系统要求 + +- Docker 18.09 或更高版本 +- 至少 4GB 内存 +- 至少 2 核 CPU +- 至少 10GB 可用磁盘空间 + +## 注意事项 + +1. 首次启动可能需要几分钟来初始化数据库和服务 +2. 默认管理员账户信息请参考官方文档 +3. 生产环境部署建议使用外部数据库以提高稳定性 \ No newline at end of file diff --git a/README_SEPARATE.md b/README_SEPARATE.md new file mode 100644 index 000000000..918e93cfa --- /dev/null +++ b/README_SEPARATE.md @@ -0,0 +1,54 @@ +# 前后端分离启动说明 + +本文档介绍如何将项目的前端和后端分别独立启动。 + +## 前后端分离启动 + +### 启动后端服务 + +```bash +./start_backend.sh +``` + +或者直接运行: +```bash +python main.py start all +``` + +后端服务默认运行在 `http://localhost:8080` + +### 启动前端服务 + +```bash +./start_frontend.sh +``` + +或者进入 ui 目录分别启动: +```bash +cd ui +npm run dev # 启动管理界面,运行在 http://localhost:3000 +npm run chat # 启动聊天界面,运行在 http://localhost:3001 +``` + +### 访问应用 + +- 管理界面: http://localhost:3000 +- 聊天界面: http://localhost:3001 +- 后端 API: http://localhost:8080 + +## 注意事项 + +1. 首次运行前请确保已经安装了所有依赖: + ```bash + pip install -r pyproject.toml + cd ui && npm install + ``` + +2. 前后端分离模式下,前端通过代理配置连接后端服务,请确保后端服务在前端访问时处于运行状态。 + +3. 如果需要更改默认端口,请相应地更新以下配置: + - 后端端口:修改 main.py 中的 runserver 参数 + - 前端管理界面端口:修改 ui/env/.env 文件中的 VITE_APP_PORT + - 前端聊天界面端口:修改 ui/env/.env.chat 文件中的 VITE_APP_PORT + +4. 已经修复了跨域问题,现在可以正常登录。 \ No newline at end of file diff --git a/config.yaml b/config.yaml new file mode 100644 index 000000000..7a325c36e --- /dev/null +++ b/config.yaml @@ -0,0 +1,44 @@ +# MaxKB 配置文件 +# 数据库相关配置 +DB_NAME: maxkb +DB_HOST: 127.0.0.1 +DB_PORT: 5432 +DB_USER: postgres +DB_PASSWORD: 199628 +DB_ENGINE: dj_db_conn_pool.backends.postgresql +DB_MAX_OVERFLOW: 80 + +# 本地模型配置 +LOCAL_MODEL_HOST: 127.0.0.1 +LOCAL_MODEL_PORT: 11636 +LOCAL_MODEL_PROTOCOL: http +LOCAL_MODEL_HOST_WORKER: 1 + +# 嵌入模型配置 +EMBEDDING_MODEL_PATH: /opt/maxkb-app/model/base +EMBEDDING_MODEL_NAME: text2vec-base-chinese + +# 语言配置 +LANGUAGE_CODE: zh-CN +TIME_ZONE: Asia/Shanghai +DEBUG: false + +# Redis 配置 +REDIS_HOST: 127.0.0.1 +REDIS_PORT: 6379 +REDIS_PASSWORD: 199628@tlw +REDIS_DB: 0 +REDIS_MAX_CONNECTIONS: 100 + +# 日志级别 +LOG_LEVEL: INFO + +# 管理后台和聊天界面路径配置 +ADMIN_PATH: /admin +CHAT_PATH: /chat + +# 会话超时时间(秒) +SESSION_TIMEOUT: 28800 + +# 沙盒Python包路径 +SANDBOX_PYTHON_PACKAGE_PATHS: /opt/py3/lib/python3.11/site-packages,/opt/maxkb-app/sandbox/python-packages,/opt/maxkb/python-packages \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..d70a5c3b4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "MaxKB", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/start_backend.sh b/start_backend.sh new file mode 100755 index 000000000..2c6bc0c72 --- /dev/null +++ b/start_backend.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# 启动后端服务 +echo "Starting backend service..." +python main.py start all + +echo "Backend service started." +echo "Backend API will be available at http://localhost:8080" \ No newline at end of file diff --git a/start_frontend.sh b/start_frontend.sh new file mode 100755 index 000000000..435b892d3 --- /dev/null +++ b/start_frontend.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# 启动前端管理界面 +echo "Starting frontend admin interface..." +cd ui && npm run dev & + +# 启动前端聊天界面 +echo "Starting frontend chat interface..." +cd ui && npm run chat & + +echo "Frontend interfaces started." +echo "Admin interface will be available at http://localhost:3000" +echo "Chat interface will be available at http://localhost:3001" +echo "Make sure the backend service is running at http://localhost:8080" +echo "Press Ctrl+C to stop both interfaces." + +# 等待所有后台任务完成 +wait \ No newline at end of file