WeKnora Docker 部署实战:10 分钟上线一个私有 RAG 知识库
【免费下载链接】WeKnoraOpen-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.项目地址: https://gitcode.com/GitHub_Trending/we/WeKnora
WeKnora 是一个开源 LLM 知识平台,能把原始文档变成可检索的 RAG 库、会推理的 Agent 和自动维护的 Wiki。本文只讲一件事:用 Docker Compose 在一台机器上把它从克隆代码跑到打开网页能用,顺利的话 10 分钟内搞定。
先自检机器,再动手
WeKnora 本身是应用层,重活落在文档解析和向量检索上。只要 LLM 走 API,一台 4 核 8GB 的机器就够;要本机跑 Ollama 大模型,内存主要看你加载多大的模型。
| 场景 | CPU | 内存 |
|---|---|---|
| 本地开发(LLM 走 API) | 2 核 | 8GB |
| 生产环境 | 4 核 | 16GB |
| 本机跑 Ollama 大模型 | 8 核 | 32GB |
先跑一条命令自检,Docker 和 Compose 都能过就行:
# 检查 CPU、内存、磁盘和 Docker 状态 nproc; free -h; df -h .; docker compose versiondocker compose version报失败,多半是 Docker 没装或用户没加组,见后面踩坑。
四步把核心服务拉起来
全程在项目根目录执行,只需四条命令。
1. 克隆仓库
# 克隆 WeKnora 代码仓库并进入目录 git clone https://gitcode.com/GitHub_Trending/we/WeKnora && cd WeKnora2. 复制并配置环境变量
# 复制环境变量模板(文件内每个变量都有中文注释) cp .env.example .env编辑.env时只盯下面关键配置表里那几项,其余保持默认。
3. 拉镜像并后台启动
# 拉取镜像并后台启动核心服务 docker compose pull && docker compose up -d首次会拉一堆镜像,耐心等。默认只起核心四件套,可选组件后面按需叠加。
4. 打开浏览器访问
# 查看容器状态,app 显示 healthy 才算就绪 docker compose ps前端在http://localhost,API 在http://localhost:8080。首次进入要在系统设置里配一个模型(API 或 Ollama 均可)。
只改这几项 .env 配置
.env里有上百个变量,但 90% 你都不需要碰。真正要动的是下面五项,其余保持默认:
| 变量 | 默认值 | 你要做什么 |
|---|---|---|
DB_PASSWORD | postgres123!@# | 必改,换成你的强密码 |
REDIS_PASSWORD | redis123!@# | 必改,同上 |
SYSTEM_AES_KEY | 32 字节占位值 | 必改,openssl rand -hex 16生成;它加密数据库里 API Key 等敏感字段,丢了就解不开 |
DISABLE_REGISTRATION | false | 生产设true,用户走管理员邀请 |
OLLAMA_BASE_URL | http://host.docker.internal:11434 | 指向你的 Ollama;不用 Ollama 可忽略 |
💡STORAGE_TYPE=local、RETRIEVE_DRIVER=postgres这两项默认就行,别动:文件存本地卷最省事,向量检索直接复用 ParadeDB 版 Postgres。FRONTEND_PORT=80被占用才改。
验收:看到 healthy 才算跑起来
# 逐个确认容器状态 docker compose ps成功标准看两点:frontend、app、postgres、redis、docreader全部running,其中app状态列出现healthy才算真正就绪(它内部每 30 秒探测一次/health)。再补一条接口自检更稳:
# 直接探活后端接口 curl -f http://localhost:8080/health && echo OK看到OK,浏览器打开http://localhost就是这个登录页:
按需叠加可选组件
默认up -d只起核心服务,其余能力用--profile按需叠加,可组合:
# 例:同时启用知识图谱和对象存储 docker compose --profile neo4j --profile minio pull && docker compose --profile neo4j --profile minio up -d| Profile | 作用 |
|---|---|
full | 一次拉起全部组件 |
neo4j | 知识图谱,文档语义关联网络 |
minio | 对象存储,图片外链和多模态常用 |
langfuse | 链路追踪与 token 消耗统计 |
searxng | 自建网页搜索,供 Agent 联网用 |
踩坑速查
高频启动问题(点我展开)
Q: 报docker: command not found?A: 装 Docker 后重跑docker compose version复查。
Q: 报permission denied连不上 daemon?A:sudo usermod -aG docker $USER,然后重开终端。
Q: 80 端口被占用,前端起不来?A:.env里FRONTEND_PORT改成8088,再docker compose up -d重建。
Q: app 容器反复重启?A:docker compose logs -f app定位;多数是DB_USER/DB_PASSWORD/DB_NAME和 postgres 容器对不上。
上线前过一遍安全清单
默认配置里不少密码是占位符,暴露到公网前务必逐项勾掉:
- 改掉
DB_PASSWORD和REDIS_PASSWORD的示例值 - 设置
SYSTEM_AES_KEY(32 字节随机值),并离线妥善保管,丢了不可恢复 - 设
DISABLE_REGISTRATION=true,关闭公开注册 - 给前端挂 HTTPS(反代 nginx/caddy 终止证书即可)
- 确认备份方案可用,数据都在 Docker 卷里
数据库备份一条命令(用户名/库名按.env实际值替换):
# 导出数据库到当日日期命名的 SQL 文件 docker compose exec postgres pg_dump -U postgres -d WeKnora > weknora_$(date +%F).sql顺手做两处调优:稳定后把LOG_LEVEL从debug降到info减少日志噪音;机器余量大就把WEKNORA_ASYNQ_CORE_CONCURRENCY从默认 8 提到 16,批量导入文档明显变快。改完统一用docker compose up -d app重建生效。升级则走docker compose pull && docker compose up -d,注意先pull再up,否则会复用旧镜像。更多问题参考 常见问题排查。
从资源自检、四步启动、按需叠加到这份安全清单走一遍,WeKnora 就能从「跑起来」稳定过渡到「长期跑」。下一步就是往知识库里灌第一批文档,然后开始提问。
【免费下载链接】WeKnoraOpen-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.项目地址: https://gitcode.com/GitHub_Trending/we/WeKnora
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考