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

# Deployment guide

The following guide will walk you through the steps to deploy Sourcebot on your own infrastructure. Sourcebot is distributed as a [single docker container](/docs/overview#architecture) that can be deployed to a k8s cluster, a VM, or any platform that supports docker.

<Note>Hit an issue? Please let us know on [GitHub](https://github.com/sourcebot-dev/sourcebot/issues/new/choose) or by [emailing us](mailto:team@sourcebot.dev).</Note>

<Steps>
  <Step title="Requirements">
    * Docker -> use [Docker Desktop](https://www.docker.com/products/docker-desktop/) on Mac or Windows.
  </Step>

  <Step title="Create a config.json">
    Create a `config.json` file that tells Sourcebot which repositories to sync and index:

    ```bash wrap icon="terminal" Create example config
    touch config.json
    echo '{
        "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json",
        "connections": {
            // comments are supported 
            "starter-connection": {
                "type": "github",
                "repos": [
                    "sourcebot-dev/sourcebot"
                ]
            }
        }
    }' > config.json
    ```

    This config creates a single GitHub connection named `starter-connection` that specifies [Sourcebot](https://github.com/sourcebot-dev/sourcebot) as a repo to sync. [Learn more about the config file](/docs/configuration/config-file).
  </Step>

  <Step title="Launch your instance">
    <Warning>If you're deploying Sourcebot behind a domain, you must set the [AUTH\_URL](/docs/configuration/environment-variables) environment variable.</Warning>

    In the same directory as `config.json`, run the following command to start your instance:

    ```bash icon="terminal" Start the Sourcebot container
    docker run \
        -p 3000:3000 \
        --pull=always \
        --rm \
        -v $(pwd):/data \
        -e CONFIG_PATH=/data/config.json \
        --name sourcebot \
        ghcr.io/sourcebot-dev/sourcebot:latest
    ```

    <Accordion title="Details">
      **This command**:

      * pulls the latest version of the `sourcebot` docker image.
      * mounts the working directory to `/data` in the container to allow Sourcebot to persist data across restarts, and to access the `config.json`. In your local directory, you should see a `.sourcebot` folder created that contains all persistent data.
      * runs any pending database migrations.
      * starts up all services, including the webserver exposed on port 3000.
      * reads `config.json` and starts syncing.
    </Accordion>
  </Step>

  <Step title="Complete onboarding">
    Navigate to `http://localhost:3000` and complete the onboarding flow.
  </Step>

  <Step title="Done">
    You're all set! If you'd like to setup [Ask Sourcebot](/docs/features/ask/overview), configure a language model [provider](/docs/configuration/language-model-providers).
  </Step>
</Steps>

## Next steps

***

<CardGroup cols={3}>
  <Card title="Index your code" icon="code" href="/docs/connections/overview">
    Learn how to index your code using Sourcebot
  </Card>

  <Card title="Language models" icon="brain" href="/docs/configuration/language-model-providers">
    Learn how to configure language model providers to start using [Ask Sourcebot](/docs/features/ask/overview)
  </Card>

  <Card title="Authentication" icon="lock" href="/docs/configuration/auth/overview">
    Learn more about how to setup SSO, email codes, and other authentication providers.
  </Card>
</CardGroup>
