配置 (Configuration)
通过 Docker 部署 RAGFlow 的相关配置。
指南
关于系统配置,您需要管理以下文件:
- .env:包含 Docker 的重要环境变量。
- service_conf.yaml.template:配置后端服务。它指定了 RAGFlow 的系统级配置,并由其 API 服务端(API Server)和任务执行器(Task Executor)使用。在容器启动时,将根据该模板文件生成
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.yml、docker-compose-macos.yml,使用它们需要您自行承担风险。不过,欢迎您提交 Pull Request (PR) 来改进它们。
Docker 环境变量
.env 文件包含 Docker 的重要环境变量。
Elasticsearch
STACK_VERSIONElasticsearch 的版本。默认为8.11.3。ES_PORT用于将 Elasticsearch 服务暴露给宿主机的端口,从而允许外部访问 Docker 容器内部运行的服务。默认为1200。ELASTIC_PASSWORDElasticsearch 的密码。
Kibana
KIBANA_PORT用于将 Kibana 服务暴露给宿主机的端口,允许从外部访问容器内运行的服务。默认为6601。KIBANA_USERKibana 的用户名。默认为rag_flow。KIBANA_PASSWORDKibana 的密码。默认为infini_rag_flow。
资源管理
MEM_LIMIT特定 Docker 容器在运行期间可以使用的最大内存量(以字节为单位)。默认为8073741824。
MySQL
MYSQL_PASSWORDMySQL 的密码。MYSQL_PORT从 RAGFlow 容器连接到 MySQL 的端口。默认为3306。如果您使用外部 MySQL,请修改此项。EXPOSE_MYSQL_PORT用于将 MySQL 服务暴露给宿主机的端口,允许从外部访问 Docker 容器内运行的 MySQL 数据库。默认为5455。
MinIO
RAGFlow 使用 MinIO 作为其对象存储解决方案,利用其可扩展性来存储和管理所有上传的文件。
MINIO_CONSOLE_PORT用于将 MinIO 控制台界面暴露给宿主机的端口,允许从外部访问 Docker 容器内部运行的基于 Web 的控制台。默认为9001。MINIO_PORT用于将 MinIO API 服务暴露给宿主机的端口,允许从外部访问 Docker 容器内运行的 MinIO 对象存储服务。默认为9000。MINIO_USERMinIO 的用户名。MINIO_PASSWORDMinIO 的密码。
Redis
REDIS_PORT用于将 Redis 服务暴露给宿主机的端口,允许从外部访问 Docker 容器内运行的 Redis 服务。默认为6379。REDIS_USERNAME使用 Redis 6+ 认证时的可选 Redis ACL 用户名。REDIS_PASSWORDRedis 的密码。
RAGFlow
SVR_HTTP_PORT用于将 RAGFlow 的 HTTP API 服务暴露给宿主机的端口,允许从外部访问 Docker 容器内部运行的服务。默认为9380。RAGFLOW_IMAGEDocker 镜像版本。默认为infiniflow/ragflow:v0.25.2(不含嵌入模型的 RAGFlow Docker 镜像)。
如果您无法下载 RAGFlow Docker 镜像,请尝试以下镜像站。
- 对于
nightly版本:RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly,或者RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly。
嵌入服务 (Embedding service)
-
TEI_MODEL由 text-embeddings-inference 提供的嵌入模型 (Embedding Model)。允许的值为Qwen/Qwen3-Embedding-0.6B(默认值)、BAAI/bge-m3和BAAI/bge-small-en-v1.5之一。 -
TEI_PORT用于将 text-embeddings-inference 服务暴露给宿主机的端口,允许从外部访问 Docker 容器内部运行的 text-embeddings-inference 服务。默认为6380。
时区
TZ本地时区。默认为Asia/Shanghai。
Hugging Face 镜像站
HF_ENDPOINThuggingface.co 的镜像站。默认禁用。如果您访问 Hugging Face 主域名的网络受限,可以取消此行的注释。
MacOS
MACOS针对 macOS 的优化。默认禁用。如果您的操作系统是 macOS,可以取消此行的注释。
用户注册
REGISTER_ENABLED1:(默认)启用用户注册。0:禁用用户注册。
服务配置
service_conf.yaml.template 指定了 RAGFlow 的系统级配置,并由其 API 服务端和任务执行器使用。
ragflow
host:API 服务端在 Docker 容器内部的 IP 地址。默认为0.0.0.0。port:API 服务端在 Docker 容器内部的服务端口。默认为9380。
mysql
name:MySQL 数据库名称。默认为rag_flow。user:MySQL 的用户名。password:MySQL 的密码。port:MySQL 在 Docker 容器内部的服务端口。默认为3306。max_connections:连接到 MySQL 数据库的最大并发连接数。默认为100。stale_timeout:超时时间(以秒为单位)。
minio
user:MinIO 的用户名。password:MinIO 的密码。host:MinIO 在 Docker 容器内部的服务 IP 及端口。默认为minio:9000。
redis
host:Redis 在 Docker 容器内部的服务 IP 及端口。默认为redis:6379。db:使用的 Redis 数据库索引。默认为1。username:可选的 Redis ACL 用户名(Redis 6+)。password:指定 Redis 用户的密码。
oauth
使用第三方账户注册或登录 RAGFlow 的 OAuth 配置。
<channel>:自定义渠道 ID。type:身份验证类型,选项包括oauth2、oidc、github。默认是oauth2;当提供issuer参数时,默认是oidc。icon:图标 ID,选项包括github、sso,默认是sso。display_name:渠道名称,默认是渠道 ID 的首字母大写格式。client_id:必填项,分配给客户端应用程序的唯一标识符。client_secret:必填项,客户端应用程序的密钥,用于与身份验证服务器进行通信。authorization_url:获取用户授权的基础 URL。token_url:用于兑换授权码(Authorization Code)并获取访问令牌(Access Token)的 URL。userinfo_url:用于获取用户信息(用户名、邮箱等)的 URL。issuer:身份提供商(Identity Provider)的基础 URL。OIDC 客户端可以通过issuer动态获取身份提供商的元数据(authorization_url、token_url、userinfo_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://docs.github.com/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 新用户使用的默认大语言模型 (Large Language Model, LLM)。此功能默认禁用。要启用此功能,请取消 service_conf.yaml.template 中对应行的注释。
factory:LLM 供应商。可用选项包括:"OpenAI""DeepSeek""Moonshot""Tongyi-Qianwen""VolcEngine""ZHIPU-AI"
api_key:指定大模型的 API 密钥 (API Key)。您需要在线申请您所选模型的 API 密钥。allowed_factories:如果设置了此项,则仅允许用户添加列表中指定的模型厂商。"OpenAI""DeepSeek""Moonshot"
如果您没有在此处设置默认 LLM,您也可以在 RAGFlow UI 的**系统设置(Settings)**页面配置默认 LLM。