feat(config): 添加离线部署和前后端分离配置支持

- 新增 config.yaml 配置文件,包含数据库、模型、Redis等完整配置项
- 添加 package-lock.json 锁定依赖版本
- 创建 README_OFFLINE_DEPLOY.md 离线部署指南文档
- 创建 README_SEPARATE.md 前后端分离启动说明文档
- 添加 start_backend.sh 后端服务启动脚本
- 添加 start_frontend.sh 前端服务启动脚本
- 配置 Docker 离线镜像构建和运行说明
- 提供完整的系统要求和故障排除指南
v3.2
tanlianwang 2026-02-04 16:28:01 +08:00
parent 4bbef59df8
commit d327de5f0f
6 changed files with 259 additions and 0 deletions

View File

@ -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. 生产环境部署建议使用外部数据库以提高稳定性

54
README_SEPARATE.md 100644
View File

@ -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. 已经修复了跨域问题,现在可以正常登录。

44
config.yaml 100644
View File

@ -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

6
package-lock.json generated 100644
View File

@ -0,0 +1,6 @@
{
"name": "MaxKB",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

8
start_backend.sh 100755
View File

@ -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"

18
start_frontend.sh 100755
View File

@ -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