Prerequisites
Install Docker Desktop or a current Docker Engine + Docker Compose setup.
Quick Start
The fastest way to run Resume Matcher is the prebuilt image. It ships as a single container image on Docker Hub, where it’s a Docker-Sponsored Open Source image, and on GitHub Container Registry. Both are built for linux/amd64 and linux/arm64.
# Docker Hub
docker run --name resume-matcher -p 3000:3000 \
-v resume-data:/app/backend/data \
srbhr/resume-matcher:latest
# or GitHub Container Registry
docker run --name resume-matcher -p 3000:3000 \
-v resume-data:/app/backend/data \
ghcr.io/srbhr/resume-matcher:latest
Then open http://localhost:3000/settings to connect a model. The resume-data volume holds your database and settings, so your data survives container upgrades. The database is SQLite and needs no setup; to keep your data in PostgreSQL instead, see Use PostgreSQL Instead of SQLite. Pin a version (for example :1.3.0) if you want repeatable deployments.
To run it from a clone of the repo with Docker Compose instead:
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
docker compose up -d
The checked-in Docker flow exposes Resume Matcher on a single public origin.
Default URLs
| Surface | URL |
|---|---|
| App | http://localhost:3000 |
| Settings | http://localhost:3000/settings |
| Health | http://localhost:3000/api/v1/health |
| API docs | http://localhost:3000/docs |
In the default Docker setup, the UI and public API routes are served from the same origin.
Common Commands
With Docker Compose:
docker compose up -d
docker compose logs -f
docker compose down
Resume Matcher runs on donations.
More than 200,000 job seekers have used it, free, with no ads and no paywall. If it saved you time or helped you land an interview, sponsoring or buying a coffee keeps it that way.
Change the Public Port
Use the PORT environment variable instead of editing the compose file:
PORT=4000 docker compose up -d
Then use:
http://localhost:4000http://localhost:4000/settingshttp://localhost:4000/api/v1/healthhttp://localhost:4000/docs
Provider Configuration
After the containers are up, open Settings and choose your provider:
- OpenAI
- Anthropic
- OpenRouter
- Google Gemini
- DeepSeek
- Groq
- Azure AI Foundry
- Ollama
- Any OpenAI-compatible server (llama.cpp, vLLM, LM Studio)
- ChatGPT plan, signed in from a browser on the machine that runs the container
The Claude plan option needs a local install: the Claude Code CLI isn’t in the image. See Bring Your Own AI Key for each provider’s settings. For local-model usage, follow Docker + Ollama.
Troubleshooting
The app does not load
Check logs:
docker compose logs -f
You changed the port
Route all app, settings, health, and docs URLs through the same public port.