跳转到主内容
版本:开发版

配置

通过 Docker 部署 RAGFlow 的配置。

指南

在系统配置方面,您需要管理以下文件

  • .env:包含 Docker 的重要环境变量。
  • service_conf.yaml.template:配置后端服务。它指定了 RAGFlow 的系统级配置,并由其 API 服务器和任务执行器使用。在容器启动时,将根据此模板文件生成 service_conf.yaml 文件。此过程会替换模板中的任何环境变量,从而实现根据容器环境动态配置。
  • docker-compose.yml:用于启动 RAGFlow 服务的 Docker Compose 文件。

要更新默认的 HTTP 服务端口(80),请前往 docker-compose.yml 并将 80:80 更改为 <YOUR_SERVING_PORT>:80

注意

对上述配置的更新需要重启所有容器才能生效。

docker compose -f docker/docker-compose.yml up -d

Docker Compose

  • docker-compose.yml
    为 RAGFlow 及其依赖项设置环境。
  • docker-compose-base.yml
    为 RAGFlow 的依赖项设置环境:Elasticsearch/Infinity、MySQL、MinIO 和 Redis。
重要提示

我们不积极维护 docker-compose-CN-oc9.ymldocker-compose-gpu-CN-oc9.ymldocker-compose-gpu.yml,因此使用它们需自担风险。但是,我们欢迎您提交拉取请求以改进其中任何一个。

Docker 环境变量

.env 文件包含 Docker 的重要环境变量。

Elasticsearch

  • STACK_VERSION
    Elasticsearch 的版本。默认为 8.11.3
  • ES_PORT
    用于将 Elasticsearch 服务暴露给主机的端口,允许从外部访问 Docker 容器内运行的服务。默认为 1200
  • ELASTIC_PASSWORD
    Elasticsearch 的密码。

Kibana

  • KIBANA_PORT
    用于将 Kibana 服务暴露给主机的端口,允许从外部访问 Docker 容器内运行的服务。默认为 6601
  • KIBANA_USER
    Kibana 的用户名。默认为 rag_flow
  • KIBANA_PASSWORD
    Kibana 的密码。默认为 infini_rag_flow

资源管理

  • MEM_LIMIT
    特定 Docker 容器在运行时可以使用的最大内存量(以字节为单位)。默认为 8073741824

MySQL

  • MYSQL_PASSWORD
    MySQL 的密码。
  • MYSQL_PORT
    用于将 MySQL 服务暴露给主机的端口,允许从外部访问 Docker 容器内运行的 MySQL 数据库。默认为 5455

MinIO

RAGFlow 利用 MinIO 作为其对象存储解决方案,利用其可扩展性来存储和管理所有上传的文件。

  • MINIO_CONSOLE_PORT
    用于将 MinIO 控制台界面暴露给主机的端口,允许从外部访问 Docker 容器内运行的 Web 控制台。默认为 9001
  • MINIO_PORT
    用于将 MinIO API 服务暴露给主机的端口,允许从外部访问 Docker 容器内运行的 MinIO 对象存储服务。默认为 9000
  • MINIO_USER
    MinIO 的用户名。
  • MINIO_PASSWORD
    MinIO 的密码。

Redis

  • REDIS_PORT
    用于将 Redis 服务暴露给主机的端口,允许从外部访问 Docker 容器内运行的 Redis 服务。默认为 6379
  • REDIS_PASSWORD
    Redis 的密码。

RAGFlow

  • SVR_HTTP_PORT
    用于将 RAGFlow 的 HTTP API 服务暴露给主机的端口,允许从外部访问 Docker 容器内运行的服务。默认为 9380

  • RAGFLOW-IMAGE
    Docker 镜像版本。可用版本:

    • infiniflow/ragflow:v0.20.0-slim(默认):不含嵌入模型的 RAGFlow Docker 镜像。
    • infiniflow/ragflow:v0.20.0:包含嵌入模型的 RAGFlow Docker 镜像,其中包括:
      • 内置嵌入模型
        • BAAI/bge-large-zh-v1.5
        • maidalun1020/bce-embedding-base_v1
注意

如果无法下载 RAGFlow Docker 镜像,请尝试以下镜像地址。

  • 对于 nightly-slim 版本
    • RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly-slim 或,
    • RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim.
  • 对于 nightly 版本
    • RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly 或,
    • RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly.

时区

  • TIMEZONE
    本地时区。默认为 'Asia/Shanghai'

Hugging Face 镜像站

  • HF_ENDPOINT
    huggingface.co 的镜像站点。默认禁用。如果您对 Hugging Face 主域名的访问受限,可以取消此行的注释。

MacOS

  • MACOS
    针对 macOS 的优化。默认禁用。如果您的操作系统是 macOS,可以取消此行的注释。

用户注册

  • REGISTER_ENABLED
    • 1:(默认)启用用户注册。
    • 0:禁用用户注册。

服务配置

service_conf.yaml.template 指定了 RAGFlow 的系统级配置,并由其 API 服务器和任务执行器使用。

ragflow

  • host:Docker 容器内 API 服务器的 IP 地址。默认为 0.0.0.0
  • port:Docker 容器内 API 服务器的服务端口。默认为 9380

mysql

  • name:MySQL 数据库名称。默认为 rag_flow
  • user:MySQL 的用户名。
  • password:MySQL 的密码。
  • port:Docker 容器内 MySQL 的服务端口。默认为 3306
  • max_connections:到 MySQL 数据库的最大并发连接数。默认为 100
  • stale_timeout:超时时间(秒)。

minio

  • user:MinIO 的用户名。
  • password:MinIO 的密码。
  • host:Docker 容器内 MinIO 服务的 IP 端口。默认为 minio:9000

oauth

用于通过第三方账户注册或登录 RAGFlow 的 OAuth 配置。

  • <channel>:自定义渠道 ID。
    • type:认证类型,可选值为 oauth2oidcgithub。默认为 oauth2,当提供 issuer 参数时,默认为 oidc
    • icon:图标 ID,可选值为 githubsso,默认为 sso
    • display_name:渠道名称,默认为渠道 ID 的首字母大写格式。
    • client_id:必需,分配给客户端应用程序的唯一标识符。
    • client_secret:必需,客户端应用程序的密钥,用于与认证服务器通信。
    • authorization_url:获取用户授权的基础 URL。
    • token_url:用于交换授权码和获取访问令牌的 URL。
    • userinfo_url:用于获取用户信息(用户名、电子邮件等)的 URL。
    • issuer:身份提供者的基础 URL。OIDC 客户端可以通过 issuer 动态获取身份提供者的元数据(authorization_urltoken_urluserinfo_url)。
    • scope:请求的权限范围,一个以空格分隔的字符串。例如,openid profile email
    • redirect_uri:必需,认证服务器在认证流程中重定向以返回结果的 URI。必须与在认证服务器注册的回调 URI 匹配。格式:https://your-app.com/v1/user/oauth/callback/<channel>。对于本地配置,可以直接使用 http://127.0.0.1:80/v1/user/oauth/callback/<channel>
注意

以下是配置各种第三方认证方法的最佳实践。您可以为 Ragflow 配置一个或多个第三方认证方法。

oauth:
oauth2:
display_name: "OAuth2"
client_id: "your_client_id"
client_secret: "your_client_secret"
authorization_url: "https://your-oauth-provider.com/oauth/authorize"
token_url: "https://your-oauth-provider.com/oauth/token"
userinfo_url: "https://your-oauth-provider.com/oauth/userinfo"
redirect_uri: "https://your-app.com/v1/user/oauth/callback/oauth2"

oidc:
display_name: "OIDC"
client_id: "your_client_id"
client_secret: "your_client_secret"
issuer: "https://your-oauth-provider.com/oidc"
scope: "openid email profile"
redirect_uri: "https://your-app.com/v1/user/oauth/callback/oidc"

github:
# https://githubdocs.cn/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app
type: "github"
icon: "github"
display_name: "Github"
client_id: "your_client_id"
client_secret: "your_client_secret"
redirect_uri: "https://your-app.com/v1/user/oauth/callback/github"

user_default_llm

为 RAGFlow 新用户使用的默认 LLM。默认禁用。要启用此功能,请在 service_conf.yaml.template 中取消相应行的注释。

  • factory:LLM 供应商。可用选项:
    • "OpenAI"
    • "DeepSeek"
    • "Moonshot"
    • "Tongyi-Qianwen"
    • "VolcEngine"
    • "ZHIPU-AI"
  • api_key:指定 LLM 的 API 密钥。您需要在线申请您的模型 API 密钥。
注意

如果此处未设置默认 LLM,请在 RAGFlow UI 的设置页面配置默认 LLM。