Quickstart
Ganek ships as a Docker Compose stack: a FastAPI backend, a Next.js frontend, a background worker, Postgres, Redis and MinIO for CV storage. Everything runs on your machine; nothing phones home.
Requirements
Section titled “Requirements”- Docker with Compose v2 (
docker compose versionworks). - About 2 GB of RAM for the full stack.
- x86-64 or arm64 (Apple Silicon, Graviton and Raspberry Pi 5 all work; the compose stack builds the images from source).
Start the stack
Section titled “Start the stack”git clone https://github.com/ganek-dev/ganek && cd ganekcp .env.example .env # edit as needed, see Configurationdocker compose upOn the first start the migrate service applies the database migrations and seeds the open question bank, then the app comes up. Open http://localhost:3000 and follow the setup wizard: it creates your company and the first admin account.
Ports on the host:
| Service | Address | Notes |
|---|---|---|
| Frontend | localhost:3000 |
the only port you need |
| Backend API | 127.0.0.1:8000 |
bound to localhost; keep it behind the frontend or a proxy |
| MinIO | 127.0.0.1:9000, console 9001 |
localhost only; candidates upload through the presigned endpoint you configure |
Postgres and Redis are not published on the host.
Pre-built images
Section titled “Pre-built images”Every release publishes ghcr.io/ganek-dev/ganek-backend and ghcr.io/ganek-dev/ganek-frontend tagged with the version (0.5.0) and latest. Pin a version tag in production and read the upgrade notes before moving.
The images are self-contained: the backend image carries the open question bank, so a compose file that only references the published images seeds it without a repository checkout. The ./questions bind mount in the bundled compose file is optional; it exists so a checkout can seed locally edited YAML.
Your own database
Section titled “Your own database”Ganek expects a database of its own. The bundled Postgres has an isolated volume and no published port. If you point Ganek at an existing server instead, create a dedicated database for it and set GANEK_DATABASE_URL; do not share a database with another application.
- Configuration: every environment variable with its default.
- Self-hosting: the production checklist, reverse proxy, upgrades, backups.
- Compliance pack: what to do before your first candidate.