Getting Started
Installation
Set up QANATIX — EU Cloud or self-hosted on your infra.
Installation
QANATIX runs two ways. Same engine, same API, same code.
EU Cloud (managed)
Sign up at qanatix.com and get an API key. No infrastructure to manage.
| Data residency | Frankfurt + Amsterdam |
| Uptime SLA | 99.9% |
| Compliance | GDPR native, ISO 27001 |
| Setup time | < 5 minutes |
Your base URL: https://api.qanatix.com
Self-hosted (Docker Compose)
Run QANATIX on your own infrastructure. Full control, air-gapped support.
Prerequisites
- Docker and Docker Compose
- 4 GB RAM minimum
- CPU only — no GPU required
Setup
Create a docker-compose.yml:
services:
qanatix-api:
image: ghcr.io/softure/qanatix:latest
ports: ["8000:8000"]
environment:
DATABASE_URL: postgresql+asyncpg://qanatix:secret@postgres:5432/qanatix
REDIS_URL: redis://redis:6379
SECRET_KEY: your-random-64-char-secret # openssl rand -hex 32
API_KEY_SALT: your-random-salt-here
DEPLOYMENT_MODE: self_hosted
REQUIRE_EMAIL_VERIFICATION: "false" # set true + configure SMTP for email verification
depends_on: [postgres, redis]
postgres:
image: postgres:17
environment:
POSTGRES_USER: qanatix
POSTGRES_PASSWORD: secret
POSTGRES_DB: qanatix
volumes: ["pgdata:/var/lib/postgresql/data"]
redis:
image: redis:7-alpine
volumes: ["redisdata:/data"]
volumes:
pgdata:
redisdata:Start everything:
docker compose up -dRun database migrations:
docker compose exec qanatix-api alembic upgrade headVerify:
curl http://localhost:8000/api/v1/health
# {"status": "ok", "version": "0.1.0"}Your base URL: http://localhost:8000
Next steps
- Authentication — generate your first API key
- Configuration — all environment variables
- Air-gapped — classified environment setup