Self-hosting with bin/vol
The whole backend — RAGFlow, the GPU services, vol-api and the Cloudflare tunnel — is managed by one
script at the root of the monorepo: bin/vol. It replaces the old collection of screen sessions.
-
Configure — copy
infra/compose/.env.exampletoinfra/compose/.envand fill in the RAGFlow API key, Supabase project URL, tunnel token and other secrets. -
Start everything
Terminal window bin/vol upThis starts the existing RAGFlow containers (
docker startonly), Ollama and the reranker, warms upbge-m3on the GPU, then brings upvol-apiandcloudflaredwith Docker Compose and prints a status table. -
Check
Terminal window bin/vol statuscurl http://localhost:8010/v1/healthvol-api also serves interactive OpenAPI docs at
http://localhost:8010/docs.
Daily commands
Section titled “Daily commands”| Command | What it does |
|---|---|
bin/vol up |
Start RAGFlow, GPU services, vol-api and the tunnel |
bin/vol down [--all] |
Stop vol-api and the tunnel; --all also stops RAGFlow and GPU (never deletes) |
bin/vol status |
Status of every container plus a vol-api health check |
bin/vol logs [service] |
Follow logs (vol-api, cloudflared) |
bin/vol restart [service] |
Restart VOL services |
bin/vol dev |
Dev servers: web :4321, app :5173, docs :4322 |
bin/vol pnpm <args> |
Run pnpm inside the dev container |
bin/vol sh |
Shell inside the dev container |
bin/vol obs up|down |
Observability stack (Grafana, Loki, Langfuse, GlitchTip) |
bin/vol install-service |
Print the sudo commands to start VOL at boot with systemd |
Developing the frontends
Section titled “Developing the frontends”Node and pnpm run inside a dev container (infra/dev), with node_modules on Docker volumes. Never
run node or pnpm on the host:
bin/vol pnpm installbin/vol pnpm --filter @vol/docs buildbin/vol pnpm --filter @vol/sdk testbin/vol devThe architecture behind the public deployment is described in Architecture and Operations.