> ## Documentation Index
> Fetch the complete documentation index at: https://verifyngo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# verifyngo — bot protection for your web service

> verifyngo is a reverse-proxy bot filter. Drop it in front of any web service to block bots and abusive traffic without changing your app.

verifyngo is a reverse-proxy bot filter written in Go. It sits in front of your web service and intercepts every incoming request before it reaches your app. Suspicious visitors are shown a CAPTCHA challenge — powered by [Cap](https://capjs.js.org), [Cloudflare Turnstile](https://developers.cloudflare.com/turnstile/), or [hCaptcha](https://www.hcaptcha.com/) — and only let through once they solve it. You do not need to change a single line of your application code.

<CardGroup cols={2}>
  <Card title="Introduction" icon="shield" href="/introduction">
    Understand how verifyngo works, what the challenge flow looks like, and which providers and rules are available.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Get verifyngo running in front of your service in under five minutes.
  </Card>

  <Card title="Configuration" icon="gear" href="/configuration/core">
    Explore every configuration option — ports, upstreams, CAPTCHA providers, rules, and more.
  </Card>

  <Card title="Guides" icon="book" href="/guides/docker">
    Step-by-step guides for deploying verifyngo with Docker, behind nginx, and other common setups.
  </Card>
</CardGroup>

## Get started in three steps

Follow the steps below to go from zero to a working bot-protection layer in front of your service.

<Steps>
  <Step title="Run the Docker image">
    Pull and start the verifyngo container, mapping port `8080` on your host to the proxy listener inside the container.

    ```bash theme={null}
    docker run -d \
      -p 8080:8080 \
      -v $(pwd)/config.json:/app/config.json \
      ghcr.io/verifyngo/verifyngo:latest
    ```
  </Step>

  <Step title="Edit config.json">
    Open `config.json` and set your upstream URL, choose a CAPTCHA provider, and paste in your site key and secret key.

    ```json theme={null}
    {
      "upstream": "http://your-app:3000",
      "captcha": {
        "provider": "turnstile",
        "siteKey": "YOUR_SITE_KEY",
        "secretKey": "YOUR_SECRET_KEY"
      }
    }
    ```
  </Step>

  <Step title="Point your reverse proxy at verifyngo">
    Update your existing reverse proxy (nginx, Caddy, a load balancer, etc.) so it forwards traffic to verifyngo on port `8080` instead of directly to your application. verifyngo handles the rest.
  </Step>
</Steps>
