Skip to content

Operations

All operations go through bin/vol at the repository root. A full command list is in Self-hosting with bin/vol.

bin/vol up performs, in order:

  1. docker start of the RAGFlow stack: ragflow-mysql, ragflow-redis, ragflow-es-01, ragflow-minio, ragflow-server; waits for Elasticsearch (yellow) and the RAGFlow API.
  2. docker start of ollama and tei-reranker; connects Ollama to the docker_ragflow network and warms bge-m3 with keep_alive: -1 so the first query is fast.
  3. docker compose up -d --build --wait for vol-api and cloudflared (infra/compose/compose.yml).
  4. Prints bin/vol status.

bin/vol down stops only VOL services; bin/vol down --all also stops GPU and RAGFlow — always with docker stop, never removing containers or volumes.

Terminal window
bin/vol install-service

prints the sudo commands that install a vol.service systemd unit (Type=oneshot, ExecStart=bin/vol up, ExecStop=bin/vol down). Run them once as an administrator.

Check Command
Everything bin/vol status
API curl -s localhost:8010/v1/health
Logs bin/vol logs vol-api, bin/vol logs cloudflared
Restart one service bin/vol restart vol-api

bin/vol obs up starts the shared observability stack: Grafana + Loki for logs and dashboards, Langfuse for LLM traces (prompts, latency, token usage per chat), and GlitchTip (Sentry-compatible) for frontend and API errors. The app reports errors when VITE_SENTRY_DSN is set.

Terminal window
git pull
bin/vol restart vol-api # code-only changes
bin/vol up # rebuilds images when Dockerfiles or dependencies change

Frontends deploy automatically to Cloudflare Pages from GitHub (main → production, develop → preview).

After changing these docs, regenerate the RAGFlow export and re-upload it to the vol-docs dataset — see Ask AI pipeline.

The state that matters lives in RAGFlow’s MySQL, MinIO and Elasticsearch volumes, the vol-api SQLite file (API keys) and the graph artifacts. Back them up with the containers stopped (bin/vol down --all), then bin/vol up.