# Quick Start

:::info
This guide uses docker-compose to run Jitsu locally. It's suitable for testing purposes only, and it servers as a reference implementation to demonstrate how Jitsu components interact with each other.
For production deployments, please see [Production Deployment](/docs/self-hosting/production-deployment) guide.
:::

## Requirements

* [Git](https://git-scm.com/downloads)
* [Docker Engine](https://docs.docker.com/engine/install/) >= 19.03.0
* Kubernetes cluster (Optional. Required for [connectors syncs](https://jitsu.com/integrations/connectors))

## Step 1: Clone the repository

```shell
# Clone the repository
git clone -b newjitsu --single-branch --depth 1 https://github.com/jitsucom/jitsu
cd jitsu/docker
# Copy .env.example to .env
cp .env.example .env
```

## Step 2: Edit `.env` file

:::note
Please see [Production Deployment](/docs/self-hosting/production-deployment#configuration) for the reference of all variables.
:::

<EnvironmentVariables>
  <Variable name={['SEED_USER_EMAIL', 'SEED_USER_PASSWORD']} required={true}>
    Initial user login and password. The very first user will be created with those credentials, and it will become an admin user. <b>Please change the password right after first login</b>.
  </Variable>
  <Variable name={[`GITHUB_CLIENT_ID`,`GITHUB_CLIENT_SECRET`]} optional={true}>
    Use github instead password auth or in addition to it if you want several users to access Jitsu UI.
  </Variable>
  <Variable name={`JITSU_PUBLIC_URL`} defaultValue={"http://localhost:3000"}>
    This is a URL where Jitsu UI will be available. When UI is deployed on remote server, set it with your remote server URL, e.g.: <code>{'http://your-domain:3000'}</code>. For production
    deployments, it is recommended to put it behind an HTTPs load balancer or reverse proxy. In this case, this value must be set to a public URL, such as: <code>{'https://jitsu.my-company.com'}</code>.
  </Variable>
  <Variable name={`JITSU_INGEST_PUBLIC_URL`} defaultValue={"http://localhost:8080"}>
    This is a URL where Jitsu Ingest will be available. When Jitsu is deployed on remote server, set it with your remote server URL, e.g.: <code>{'http://your-domain:8080'}</code>. For production
    deployments, it is recommended to put it behind an HTTPs load balancer or reverse proxy. In this case, this value must be set to a public URL, such as: <code>{'https://jitsu.my-company.com'}</code>.
  </Variable>
  <Variable name={[`CONSOLE_TOKEN`, `POSTGRES_PASSWORD`, `BULKER_TOKEN`, `SYNCCTL_TOKEN`]} required={true}>
    Those secrets are used mostly for internal communication between Jitsu components. Please make sure to generate random values for those variables.
  </Variable>
</EnvironmentVariables>


## Run Jitsu

In `jitsu/docker` directory run:
```shell
docker-compose up
```

Open [Jitsu URL](#jitsu-url) (e.g.: `http://localhost:3000/`) in your browser, login with the credentials you've set in `.env` or with GitHub if you've set `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET` variables. See
data ingestion instructions right in the UI.

## Further steps

Those steps are optional, but they might make sense for you:

 * Set up [Connectors Syncs](/docs/self-hosting/quick-start/syncs).
 * Set `DISABLE_SIGNUP` in `.env` to `true` if you don't want to allow users to sign up.
 * See reference for other variables in [Production Deployment](/docs/self-hosting/configuration) guide.