Installation
Run Open Reporting locally in under 5 minutes — with Docker or manually.
Installation
You can run Open Reporting with Docker Compose (easiest) or start each service manually.
Option A — Docker Compose
Clone the repo
git clone https://github.com/fhagelund/open-reporting.git
cd open-reportingConfigure environment variables
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.envAt minimum, set a strong SECRET_KEY in backend/.env:
# backend/.env
SECRET_KEY=your-very-long-random-secretGenerate one with: openssl rand -hex 32
Start the stack
docker-compose up --build| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8000 |
| API Docs (Swagger) | http://localhost:8000/docs |
Seed demo data (optional)
docker-compose exec backend uv run python -m app.seedThis populates the database with sample agents, spaces, and reports so you can explore the UI immediately.
Option B — Manual Setup
Run each service in a separate terminal.
Backend
cd backend
# Install dependencies (requires uv — https://docs.astral.sh/uv/)
uv sync
# Copy and edit environment variables
cp .env.example .env
# Start the API server
uv run uvicorn app.main:app --reloadThe API is available at http://localhost:8000. Swagger UI is at /docs.
Frontend
cd frontend
npm install
# Copy and edit environment variables
cp .env.example .env
npm run devThe frontend is available at http://localhost:5173.
Seed demo data
cd backend
uv run python -m app.seedFirst login
Once the stack is running, open http://localhost:5173.
By default the app uses local auth (email + password). Register an account — the first account created is automatically given the ADMIN role.
To enable Google OAuth instead, set AUTH_PROVIDER=google and configure your Google client credentials in backend/.env. See the Configuration reference for details.