RAGFlow部署教程:Ubuntu24.04

前言

这两年深切的感受到AI的大爆发,干活越来越快也越来越懂自己了,但是完全依靠外在力量总感觉会对个人的成长不利,有工具不用也更像个傻子。AI本身不会形成壁垒,你能用别人也会用,想要在当前环境更突出,个人技术实力当然是一方面,毕竟AI是个人能力放大器;同时,同样的工具用的更好我觉得也是一方面,建立自己或者企业的知识库,让你的AI更懂自己,更贴近生产需要,作为知识沉淀我觉得是一个很好的方向。

本文记录一次在 Ubuntu 24.04 上部署 RAGFlow 的过程,部署方式为 Docker Compose,并启用 NVIDIA GPU 与 Docling 解析器。整体思路是:先准备 Docker 与 NVIDIA Container Toolkit,再拉取 RAGFlow 官方仓库,最后通过 .env 调整 GPU、端口和 Docling 配置。

文中的端口、软件源和访问地址均为示例,请按自己的环境替换。

部署环境

项目 说明
操作系统 Ubuntu 24.04 LTS
部署方式 Docker Compose
RAGFlow 镜像 infiniflow/ragflow:latest
检索引擎 Elasticsearch
文档解析 Docling
GPU NVIDIA GPU,宿主机 nvidia-smi 可正常输出
Web 端口 示例使用 8080

最低建议配置:

项目 建议
CPU 4 核及以上
内存 16 GB 及以上
磁盘 50 GB 以上可用空间,建议预留更多
GPU NVIDIA 显卡,并已安装驱动
网络 能访问 GitHub、Docker 镜像仓库和相关依赖源

一、安装基础依赖

bash 复制代码
sudo apt-get update -qq
sudo apt-get install -y git ca-certificates curl gnupg lsb-release

二、安装 Docker Engine

2.1 添加 Docker 软件源

如果访问 Docker 官方源稳定,可以使用官方文档中的安装方式。国内网络环境下,也可以切换为可访问的镜像源。下面以阿里云 Docker CE 源为例:

bash 复制代码
sudo bash -c '
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt-get update -qq
'

2.2 安装 Docker 和 Compose 插件

bash 复制代码
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2.3 配置 Docker 权限和镜像加速

将当前用户加入 docker 组:

bash 复制代码
sudo usermod -aG docker $USER

加入用户组后,需要重新登录 shell,或者临时使用 sg docker -c '<command>' 执行 Docker 命令。

如果拉取镜像速度较慢,可以配置 Docker 镜像加速器。下面的地址只是示例,请替换成自己可用的镜像源:

bash 复制代码
sudo bash -c 'cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}
EOF'

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

验证:

bash 复制代码
docker --version
docker compose version

三、安装 NVIDIA Container Toolkit

RAGFlow 启用 GPU 时,容器需要能访问宿主机 NVIDIA 驱动。

bash 复制代码
sudo bash -c '
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed "s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g" > /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt-get update -qq
apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
'

验证容器内是否可以访问 GPU:

bash 复制代码
sg docker -c 'docker run --rm --gpus all nvidia/cuda:12.6.3-base-ubuntu24.04 nvidia-smi'

如果能看到完整的 nvidia-smi 输出,说明 Docker GPU 运行时配置成功。

四、部署 RAGFlow

4.1 克隆 RAGFlow 仓库

bash 复制代码
cd ~
git clone https://github.com/infiniflow/ragflow.git

如果直连 GitHub 不稳定,可以使用自己信任的代理或镜像方式拉取仓库。

4.2 修改 .env

进入 Docker 配置目录:

bash 复制代码
cd ~/ragflow/docker
cp .env .env.bak

修改关键配置:

bash 复制代码
sed -i 's/^DEVICE=${DEVICE:-cpu}/DEVICE=${DEVICE:-gpu}/' .env
sed -i 's/^USE_DOCLING=false/USE_DOCLING=true/' .env
sed -i 's/^SVR_WEB_HTTP_PORT=80$/SVR_WEB_HTTP_PORT=8080/' .env
sed -i 's/^SVR_WEB_HTTPS_PORT=443$/SVR_WEB_HTTPS_PORT=8443/' .env

配置说明:

配置项 建议值 说明
DEVICE gpu 启用 GPU
USE_DOCLING true 启用 Docling 文档解析
SVR_WEB_HTTP_PORT 8080 避免占用宿主机 80 端口
SVR_WEB_HTTPS_PORT 8443 避免占用宿主机 443 端口
DOC_ENGINE elasticsearch 默认检索引擎
SVR_HTTP_PORT 9380 RAGFlow API 端口

安全提醒:.env 中包含 MySQL、Elasticsearch 等组件密码。测试环境可以先使用默认值,生产环境建议修改为强密码,并妥善保存。

4.3 拉取镜像

RAGFlow 相关镜像体积较大,首次拉取可能需要较长时间。建议放到后台执行,避免 SSH 会话断开导致任务中断:

bash 复制代码
cd ~/ragflow/docker
nohup sg docker -c 'docker compose pull' > ~/ragflow_pull.log 2>&1 &

查看进度:

bash 复制代码
tail -f ~/ragflow_pull.log
sg docker -c 'docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}"'

如果拉取过程中出现网络 EOF、连接重置或单个镜像层失败,通常可以重新执行 docker compose pull 继续拉取。

常见镜像包括:

镜像 用途
infiniflow/ragflow:latest RAGFlow 主服务
elasticsearch:8.11.3 检索与索引
mysql:8.0.39 元数据存储
minio 对象存储
valkey/valkey:8 缓存

4.4 启动服务

bash 复制代码
cd ~/ragflow/docker
sg docker -c 'docker compose up -d'

查看容器:

bash 复制代码
sg docker -c 'docker compose ps'

4.5 等待首次初始化

首次启动时,RAGFlow 容器可能会继续下载 GPU 依赖、Python 包或文档解析相关模型。这个阶段 Web UI 不一定马上可用,等待 10 到 20 分钟是正常的。

查看 RAGFlow 日志:

bash 复制代码
sg docker -c 'docker logs -f docker-ragflow-gpu-1'

看到类似下面的日志,说明服务基本就绪:

text 复制代码
RAGFlow server is ready after XX.Xs initialization.
task_executor_xxx reported heartbeat

五、验证部署

5.1 检查容器状态

bash 复制代码
cd ~/ragflow/docker
sg docker -c 'docker compose ps'

正常情况下,RAGFlow、Elasticsearch、MySQL、MinIO、Valkey 等容器应处于 Uphealthy 状态。

5.2 检查 Web UI

如果在服务器本机验证:

bash 复制代码
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://localhost:8080

如果从其他设备访问,将 SERVER_IP 替换为服务器 IP 或域名:

bash 复制代码
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://SERVER_IP:8080

浏览器访问:

text 复制代码
http://SERVER_IP:8080

5.3 检查 GPU 和 Docling

bash 复制代码
sg docker -c 'docker exec docker-ragflow-gpu-1 env' | grep -E 'DEVICE|DOCLING|DOC_ENGINE'

期望能看到:

text 复制代码
DEVICE=gpu
USE_DOCLING=true
DOC_ENGINE=elasticsearch

检查容器内 GPU:

bash 复制代码
sg docker -c 'docker exec docker-ragflow-gpu-1 nvidia-smi' | head -10

如果能显示 GPU 信息,说明容器已经正确挂载 NVIDIA 设备。

到此部署结束

六、端口说明

服务 容器端口 宿主机端口 说明
RAGFlow Web UI 80 8080 Web 入口
RAGFlow HTTPS 443 8443 HTTPS 入口,需要自行配置证书
RAGFlow API 9380 9380 后端 API
Admin Server 9381 9381 管理后端
MCP Server 9382 9382 MCP 服务
Elasticsearch 9200 1200 检索引擎
MySQL 3306 3306 元数据库
Valkey 6379 6379 缓存
MinIO API 9000 9000 对象存储 API
MinIO Console 9001 9001 对象存储控制台

实际端口以 ~/ragflow/docker/.env 和 Docker Compose 配置为准。如果服务器还有其他服务,建议先检查端口占用:

bash 复制代码
sudo ss -tulpen | grep -E ':80|:443|:8080|:8443|:9380'

七、常用运维命令

进入部署目录:

bash 复制代码
cd ~/ragflow/docker

查看日志:

bash 复制代码
sg docker -c 'docker logs -f docker-ragflow-gpu-1'
sg docker -c 'docker logs --tail 100 docker-ragflow-gpu-1'

查看状态:

bash 复制代码
sg docker -c 'docker compose ps'

停止服务:

bash 复制代码
sg docker -c 'docker compose down'

启动服务:

bash 复制代码
sg docker -c 'docker compose up -d'

重启 RAGFlow 主容器:

bash 复制代码
sg docker -c 'docker compose restart ragflow-gpu'

进入 RAGFlow 容器:

bash 复制代码
sg docker -c 'docker exec -it docker-ragflow-gpu-1 /bin/bash'

数据位置:

数据 位置
Elasticsearch Docker volume,例如 docker_esdata01
MySQL Docker volume,例如 docker_mysql_data
MinIO Docker volume,例如 docker_minio_data
Valkey Docker volume,例如 docker_redis_data
RAGFlow 日志 ~/ragflow/docker/ragflow-logs/

如果需要完全删除数据卷,务必先确认已有备份:

bash 复制代码
sg docker -c 'docker compose down -v'

-v 会删除 Compose 创建的数据卷,MySQL、Elasticsearch、MinIO 等数据都会被清理。

八、常见问题

1. Docker 官方源连接失败

症状可能是 curl: (35) Recv failure、连接重置或超时。可以换成当前网络可访问的软件源,例如阿里云、清华源或 Docker 官方推荐方式。

2. GitHub 克隆失败

如果出现 TLS 连接中断、超时等问题,可以换网络、配置代理,或使用可信的 GitHub 加速方式。仓库拉取成功后,后续主要依赖 Docker 镜像和容器启动。

3. Docker 镜像层拉取失败

大镜像拉取过程中偶发 EOF、timeout、not found 等错误时,可以重复执行:

bash 复制代码
sg docker -c 'docker compose pull'

Docker 会复用已经下载完成的镜像层。

4. 80 或 443 端口被占用

如果宿主机已经有 Nginx、Apache、面板程序或其他 Web 服务,直接使用 80/443 可能冲突。可以在 .env 中将 RAGFlow Web 端口改为 8080/8443,然后重新启动:

bash 复制代码
sg docker -c 'docker compose up -d'

5. 首次启动后 Web 页面打不开

首次启动会初始化数据库、下载依赖和加载模型,GPU + Docling 模式下耗时更明显。建议先看日志,不要急着反复重启:

bash 复制代码
sg docker -c 'docker logs -f docker-ragflow-gpu-1'

九、部署建议

  1. 生产环境不要直接使用默认数据库密码,应在 .env 中改成强密码。
  2. 对外开放 Web UI 前,建议增加反向代理、HTTPS 和访问控制。
  3. RAGFlow 镜像如果用于长期运行,建议固定版本标签,避免 latest 自动变化带来不可控差异。
  4. 重要数据在 Docker volume 中,升级或清理前先备份。
  5. 网络和 DNS 相关改动要谨慎,尤其是远程 SSH 部署时,建议保留一个可回滚的连接方式。

总结

这次部署的关键点主要有三个:Docker Compose 环境要干净可用,NVIDIA Container Toolkit 要让容器正确访问 GPU,RAGFlow 的 .env 要明确开启 DEVICE=gpuUSE_DOCLING=true。首次启动时间较长是正常现象,只要日志持续推进,等初始化完成后就可以通过 Web UI 使用 RAGFlow。

相关推荐
TENSORTEC腾视科技1 小时前
安全驾驶 智在掌控|腾视科技ES06终端,为车辆运营赋能
大数据·人工智能·科技·安全·ai·零售·无人叉车及智能调度系统解决方案
维元码簿1 小时前
Claude Code 深度拆解:远程模式 1 — 鉴权链与会话生命周期
ai·agent·claude code·ai coding
Android出海1 小时前
ChatGPT降智怎么恢复?GPT-5.4降智原因与恢复方法
人工智能·gpt·ai·chatgpt·openai
marsh02061 小时前
44 openclaw分布式事务:跨服务数据一致性解决方案
分布式·ai·编程·技术
AI原来如此2 小时前
2026最新Cursor零基础上手教程
ai·大模型·ai编程
huisheng_qaq2 小时前
【AI入门篇-03】深入理解神经网络的实现原理
人工智能·rnn·深度学习·神经网络·ai·transformer
maxmaxma2 小时前
Claude Code集成DeepSeek-V4-pro全栈开发 - Tauri应用TODO
ai
Beginner x_u2 小时前
MCP 实践 01|从 0 搭建 MCP Server:读取简历与 JD,并用 MCP Inspector 测试
ai·node.js·mcp
哥本哈士奇(aspnetx)10 小时前
Neo4j笔记(五):查询的处理流程
大模型