Docker Quickstart¶
Run GoGetEm with a single command — no Go toolchain, no Python venv, no manual setup.
Prerequisites¶
- Docker (v20.10+)
- Docker Compose (v2.0+, included with Docker Desktop)
Quick start¶
Open http://localhost:8080 in your browser.
First-boot setup¶
- Navigate to
/setup(you'll be redirected automatically on first visit) - Create your account (username + password)
- The setup wizard walks you through: match profile, scrape profiles, and your first scrape
Configuration¶
Copy the example env file to customize settings:
Key variables:
| Variable | Default | Description |
|---|---|---|
HOST_PORT |
8080 |
Port exposed on your machine |
MCP_TOKEN |
(empty) | Bearer token for /api/mcp endpoint. Generate with openssl rand -hex 32 |
PAGE_SIZE |
25 |
Jobs per page (10-50) |
After editing .env, restart the container:
MCP endpoint (optional)¶
To use GoGetEm as a Claude MCP server over HTTP:
- Set
MCP_TOKENin your.envfile: - Restart:
docker compose up -d - Configure Claude Code's
.mcp.json:
Building from source¶
# Build and run locally
docker compose build
docker compose up -d
# Dev mode (bind-mounts ./db for direct SQLite access)
docker compose -f docker-compose.dev.yml up --build
Dev mode uses a bind mount (./db:/app/db) so you can inspect the SQLite database from the host. It automatically sets SQLITE_JOURNAL_MODE=DELETE because WAL mode requires POSIX advisory file locks that don't work on macOS Docker bind mounts (VirtioFS).
Data persistence¶
Job data is stored in a Docker named volume (gogetem-data). This survives docker compose down and container rebuilds.
To back up:
docker compose exec gogetem cp /app/db/jobs.sqlite3 /app/db/backup.sqlite3
docker compose cp gogetem:/app/db/backup.sqlite3 ./backup.sqlite3
To start fresh:
Troubleshooting¶
Port conflict:
Change the host port in .env:
Permission errors on volume:
The container runs as UID/GID 1000. If your db/ directory (dev mode) has different ownership:
"database disk image is malformed" on macOS Docker:
This happens when using WAL journal mode with bind mounts. macOS Docker (VirtioFS) doesn't support the POSIX advisory file locks that WAL requires. Use docker-compose.dev.yml which sets SQLITE_JOURNAL_MODE=DELETE automatically, or add the env var to your own compose file:
docker-compose.yml uses named volumes and WAL mode — this issue only affects bind mounts.
SQLite on network filesystems: SQLite requires a local filesystem for WAL mode. Docker named volumes (default) work fine. Do not mount the database from NFS, SMB, or similar network shares.
Container won't start: Check logs:
Updating to a new version: