docs/develop/launch_ragflow_from_source.md
A guide explaining how to set up a RAGFlow service from its source code. By following this guide, you'll be able to debug using the source code.
Developers who have added new features or modified existing code and wish to debug using the source code, provided that their machine has the target deployment environment set up.
:::tip NOTE If you have not installed Docker on your local machine (Windows, Mac, or Linux), see the Install Docker Engine guide. :::
To launch a RAGFlow service from source code:
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
Install uv:
pipx install uv
Install RAGFlow service's Python dependencies:
uv sync --python 3.12 --frozen
A virtual environment named .venv is created, and all Python dependencies are installed into the new environment.
If you need to run tests against the RAGFlow service, install the test dependencies:
uv sync --python 3.12 --group test --frozen && uv pip install sdk/python --group test
The following command launches the 'base' services (MinIO, Elasticsearch, Redis, and MySQL) using Docker Compose:
docker compose -f docker/docker-compose-base.yml up -d
host and port Settings for Third-party ServicesAdd the following line to /etc/hosts to resolve all hosts specified in docker/service_conf.yaml.template to 127.0.0.1:
127.0.0.1 es01 infinity mysql minio redis
In docker/service_conf.yaml.template, update mysql port to 5455 and es port to 1200, as specified in docker/.env.
Comment out the nginx line in docker/entrypoint.sh.
# /usr/sbin/nginx
Activate the Python virtual environment:
source .venv/bin/activate
export PYTHONPATH=$(pwd)
Optional: If you cannot access HuggingFace, set the HF_ENDPOINT environment variable to use a mirror site:
export HF_ENDPOINT=https://hf-mirror.com
Check the configuration in conf/service_conf.yaml, ensuring all hosts and ports are correctly set.
Run the entrypoint.sh script to launch the backend service:
JEMALLOC_PATH=$(pkg-config --variable=libdir jemalloc)/libjemalloc.so;
LD_PRELOAD=$JEMALLOC_PATH python rag/svr/task_executor.py 1;
python api/ragflow_server.py;
Navigate to the web directory and install the frontend dependencies:
cd web
npm install
Update server.proxy.target in vite.config.ts to http://127.0.0.1:9380:
vim vite.config.ts
Start up the RAGFlow frontend service:
npm run dev
The following message appears, showing the IP address and port number of your frontend service:
In your web browser, enter http://127.0.0.1:<PORT>/, ensuring the port number matches that shown in the screenshot above.
Stop the RAGFlow frontend service:
pkill npm
Stop the RAGFlow backend service:
pkill -f "docker/entrypoint.sh"