Better Search Lab

Run Better Search Lab in about five minutes.

Docker and curl are the only requirements. One command creates a folder, generates a secret, starts Postgres, the app, and the worker, and prints the address.

curl -fsSL https://gitlab.com/betterbrainlab/better-search-lab/-/raw/main/install.sh | sh
  1. Run the command

    It creates a better-search-lab folder, generates a secret, and starts Postgres, the app, and the worker.

  2. Open localhost:3000

    First run redirects to /setup: create your admin account, connect DataForSEO (a $5 balance is plenty), profile your site, and pick competitors.

  3. Get the first picture

    Active time about 5 minutes; about $0.37 of DataForSEO spend for a 150-keyword site. The weekly refresh runs on its own.

Look before you connect anything.

Demo mode runs a read-only copy with two synthetic sites and ninety days of history. No keys required.

curl -fsSL https://gitlab.com/betterbrainlab/better-search-lab/-/raw/main/install.sh | sh -s -- --demo

Or skip the install

The hosted demo is the same build, already running, with the same synthetic sites.

Try the live demo

Other ways to run it.

Same app, same worker. Pick the host you already have.

From source

Clone the repo, cp .env.example .env, set AUTH_SECRET, then run:

docker compose up -d --build

Railway

The repo ships railway.json for the web service and railway.worker.json for the worker.

Bare metal

Node 22, pnpm, Postgres 16. The worker runs in its own process.

pnpm install && pnpm db:migrate && pnpm build && pnpm start
pnpm worker

Required configuration

Only DATABASE_URL and AUTH_SECRET are required. Every integration is configured in the app; each can also be set by environment variable, and the environment wins.

Keeping it updated

Pull the latest images and restart, or opt in to hands-off updates with Watchtower. The app also notices when a newer release is available.

docker compose pull && docker compose up -d

What it costs to run.

You pay DataForSEO directly, pay-as-you-go. No credits, no markup. The in-app Usage page shows spend by day and endpoint.

WhatCost
Rank check$0.002 per keyword
Keyword & competitor research~$0.012 per call
Backlinks refresh~$0.06
First build of a 150-keyword site~$0.37
Weekly refresh of that site~$0.34

Look first, or run it now.

Free, open source, and yours to keep.