OpenLogs

All tools

RAGFlow

Retrieval-augmented generation engine that parses documents and answers questions about them.

Replaces

Paid enterprise search and knowledge assistant services, such as Glean.

All open-source alternatives to Glean

Difficulty

Difficulty: Medium

1 service, 3 volume mounts, 6 env values to set, no elevated host access. Heuristic score 3 of 11: medium. The file includes other files, so counts may be low. A source checkout is needed, so the rating is at least medium.

Stack

Go (language)

Deployment

docker_compose

Requirements

Not stated.

License

Apache-2.0 (OSI-approved open source)

Read from github.com/infiniflow/ragflow/blob/4fd8c43/LICENSE

Business model

Unknown

The README at the pinned commit does not state a business model, so it stays unknown.

Source: github.com/infiniflow/ragflow/blob/4fd8c43/README.md, read on .

Repository

infiniflow/ragflow

GitHub stats

Stars
92,649
Forks
11,069
Open issues and pull requests
1,317
Last push
2026-10-22
Latest release
v1.0.0-rc2
Released
2026-10-16

From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as Apache-2.0.

Compose file

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yml Version 1
include:
  - ./docker-compose-base.yml
# To ensure that the container processes the locally modified `service_conf.yaml.template` instead of the one included in its image, you need to mount the local `service_conf.yaml.template` to the container.
services:

  ragflow-cpu:
    depends_on:
      mysql:
        condition: service_healthy
        required: false
    profiles:
      - cpu
    image: ${RAGFLOW_IMAGE}
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
      nproc:
        soft: 65535
        hard: 65535
    # MCP is served in-process by the API server (POST /mcp on the 9380 port).

    # Example configuration to start Admin server:
    command:
      - --enable-adminserver
      - --init-superuser
      #- --init-model-provider-tables
    ports:
      - ${SVR_WEB_HTTP_PORT}:80
      - ${SVR_WEB_HTTPS_PORT}:443
      - ${SVR_HTTP_PORT}:9380
      - ${ADMIN_SVR_HTTP_PORT}:9381
    volumes:
      - ./ragflow-logs:/ragflow/logs
      # - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf
      # - ./nginx/proxy.conf:/etc/nginx/proxy.conf
      # - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./service_conf.yaml.template:/ragflow/conf/service_conf.yaml.template
      - ./entrypoint.sh:/ragflow/entrypoint.sh
      # - ${RAGFLOW_SSH_KNOWN_HOSTS:-${HOME}/.ssh/known_hosts}:${SSH_KNOWN_HOSTS:-/etc/ragflow/ssh_known_hosts}:ro
    env_file: .env
    # Route the Go services' cache/queue backend to the separate Kvrocks service.
    # The Python services use the Valkey `redis` service, which the Go deployment
    # disables (see the `redis` profile override above). KVROCKS_HOST/KVROCKS_PORT
    # are the IN-NETWORK coordinates the Go process uses to reach `kvrocks:6379`; the
    # host-published port is KVROCKS_PORT (see docker-compose-base.yml), which CI
    # offsets per job and keeps distinct from REDIS_PORT.
    environment:
      - KVROCKS_HOST=kvrocks
      - KVROCKS_PORT=6379
    networks:
      - ragflow
    restart: unless-stopped
    # https://docs.docker.com/engine/daemon/prometheus/#create-a-prometheus-configuration
    # If you use Docker Desktop, the --add-host flag is optional. This flag ensures that the host's internal IP is exposed to the Prometheus container.
    extra_hosts:
      - "host.docker.internal:host-gateway"

From the app's own repository: github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml.

Compose file from infiniflow/ragflow, used inside a checkout of that repository (documented setup B).

Install

  1. Docker with the Compose plugin and git (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)

    A host with Docker, the Docker Compose plugin and git. This entry needs a checkout of the project repository.

  2. Get the source at commit 4fd8c43 (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
    git init ragflow
    cd ragflow
    git remote add origin https://github.com/infiniflow/ragflow.git
    git sparse-checkout init --cone
    git sparse-checkout set docker
    git fetch --depth 1 --filter=blob:none origin 4fd8c439af2cf31e19731675e27bbb9ccb854bf1
    git checkout FETCH_HEAD
  3. Go to the folder the docs use (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
    cd docker
  4. The compose file in the checkout: docker/docker-compose.yml (shown here for reading) (github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml)

    Use the compose file shown above.

  5. What the compose file check ran with (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)

    The compose file check ran in a checkout of infiniflow/ragflow at 4fd8c439af2cf31e19731675e27bbb9ccb854bf1 (a sparse checkout: the top-level files and the folder docker), in the folder docker. The README tells the reader to clone the repository, go into the docker folder and run docker compose up.

  6. Start it (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
    docker compose up -d
  7. Open the app (github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml)

    Open http://localhost:80. The compose file publishes host port 80 for the ragflow-cpu service. The README tells the reader to enter the IP address of the server in a browser and log in.

Compose file check: config_ok on 2026-10-22.

Gotchas and maintenance

Gotchas

Signals

  • Open issues and pull requests: 1317
  • Last push: 2026-10-22 (0 days before this page was built)
  • Latest release: v1.0.0-rc2 on 2026-10-16 (6 days before this page was built)