Install on Linux
This is the reference install path for Ragz — every other platform guide reduces to this one. It runs the infrastructure services in Docker and the Ragz backend/frontend directly on the host, which is the fastest loop for development and the basis for a production deployment.
What you'll end up with
Postgres, Redis, Qdrant, MinIO, and LiteLLM running in Docker; a FastAPI
backend, a Celery worker + beat scheduler, and a React frontend running
natively — talking to each other over localhost.
Prerequisites
| Requirement | Version | Used for |
|---|---|---|
| Docker Engine + Compose plugin | recent | Postgres, Redis, Qdrant, MinIO, LiteLLM |
| Python | 3.12+ | Backend (FastAPI, Celery) |
| uv | latest | Python dependency + venv management |
| Node.js | 20+ | Frontend (Vite/React) |
| pnpm | latest | Frontend package management |
Install Docker Engine (Ubuntu/Debian)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker "$USER"
newgrp docker # or log out/in to pick up the group changeDocker Engine ships the Compose plugin (docker compose, no hyphen) by
default. Confirm both are working:
docker version
docker compose versionInstall Python 3.12 + uv
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.12uv manages its own Python toolchain, so this works even if your
distribution ships an older system Python.
Install Node 20+ and pnpm
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
corepack enable
corepack prepare pnpm@latest --activateAlready have Node?
If you already manage Node with nvm, fnm, or asdf, just make sure the
active version is 20 or newer, then run corepack enable to get pnpm.
1. Clone the repository
git clone https://github.com/marketcalls/raghub.git
cd raghub2. Start infrastructure
Bring up Postgres, Redis, Qdrant, MinIO, and LiteLLM with Docker Compose:
docker compose -f deploy/compose.yaml up -dAll services bind to 127.0.0.1 only. Give the containers a few seconds to
pass their health checks before moving on:
docker compose -f deploy/compose.yaml ps3. Backend
From backend/, install dependencies, run migrations, and create the first
superadmin:
cd backend
uv sync
uv run alembic upgrade head
RAGZ_BOOTSTRAP_EMAIL=admin@example.com RAGZ_BOOTSTRAP_PASSWORD=changeme12345 \
uv run python -m ragz.bootstrapBootstrap runs once
ragz.bootstrap creates the first superadmin account from
RAGZ_BOOTSTRAP_EMAIL / RAGZ_BOOTSTRAP_PASSWORD. Use a real password
(12+ characters) even in development — this account can create other
organizations and admins.
Start the API:
uv run uvicorn --factory ragz.api.app:create_app --port 80004. Celery worker and beat scheduler
The worker handles document ingestion (parsing, embedding, OCR); beat syncs
the model catalog on a schedule. Run each in its own terminal, from
backend/:
# Worker
uv run celery -A ragz.worker.celery_app:celery_app worker -Q interactive,default -l info# Beat scheduler
uv run celery -A ragz.worker.celery_app:celery_app beat -l infoScanned PDFs need OCR
The first time a scanned/image-only PDF is ingested, the worker downloads
~90 MB of EasyOCR models to ~/.EasyOCR on the worker host. This happens
once per host. Disable OCR entirely with RAGZ_OCR_ENABLED=false if you
don't need it.
5. Frontend
From frontend/, with the backend already running (step 3 exposes the
OpenAPI schema the client generator reads):
cd ../frontend
pnpm install
pnpm generate:api
pnpm devpnpm dev serves the app at http://localhost:5173.
6. First run
Open http://localhost:5173 and sign in with the bootstrap superadmin credentials from step 3. Then:
- Admin › Models — add a model (e.g. an OpenAI API key, or point at a local provider).
- Create a workspace.
- Upload a document — watch it move through
parsing→embedding→ready. - Chat — ask a question and get a cited answer.
You're running Ragz
From here, see Configuration to tune model placement and parsing, or RBAC to set up workspaces, groups, and custom roles before inviting other users.
Next steps
- System Requirements — RAM/disk budgeting by model placement.
- Parsers & OCR — choosing a document parser.
- Production — hardening this install for real traffic.