> Source: https://www.gitdash.info/docs/deployment · GitDash v4.7.1

# Deployment

## Docker

Images are published to Docker Hub as `dinhdobathi/gitdash`: `latest` follows `main`, and every release adds `4.5.2`-style and `4.5`-style tags.

```bash
docker run -d --name gitdash -p 3000:3000 \
  -e MODE=standalone \
  -e SESSION_SECRET=your_32_char_secret_here \
  --restart unless-stopped \
  dinhdobathi/gitdash:latest
```

```bash
docker run -d --name gitdash -p 3000:3000 \
  -e MODE=organization \
  -e SESSION_SECRET=your_32_char_secret_here \
  -e GITHUB_CLIENT_ID=... -e GITHUB_CLIENT_SECRET=... \
  -e DATABASE_URL=postgres://... \
  -e GITDASH_ADMIN_GITHUB_IDS=12345678 \
  -e NEXT_PUBLIC_APP_URL=https://gitdash.example.com \
  --restart unless-stopped \
  dinhdobathi/gitdash:latest
```

The repository's `docker-compose.yml` builds the image locally and reads `.env.local`:

```bash
cp .env.local.example .env.local   # fill in your values
docker compose up --build -d
docker compose logs -f
docker compose down
```

## Kubernetes (Helm)

```bash
helm upgrade --install gitdash ./helm/gitdash -n gitdash --create-namespace -f my-values.yaml
```

Everything is set in `helm/gitdash/values.yaml`. For organization mode set `config.mode`, `config.adminGithubIds` (a quoted string of numeric ids), `config.allowedOrgs`, `config.rbacEnforce` and `secret.databaseUrl`. The chart's values schema rejects organization mode without admin ids, and the image tag defaults to the chart's `appVersion`.

## Vercel

1

#### Import the repository

New Project → Import Git Repository.

2

#### Set environment variables

Add them under Settings → Environment Variables. Changes only apply to new deployments — redeploy after editing.

3

#### Point the OAuth App at Vercel

Set the callback URL to `https://your-domain/api/auth/callback`. Use one canonical host: the sign-in cookie belongs to the host that started sign-in.

`vercel.json` schedules the two nightly sync crons; they need `CRON_SECRET` and `GITHUB_TOKEN`.

## Behind a reverse proxy

Set `NEXT_PUBLIC_APP_URL` to the public URL, update the OAuth App callback to match, and forward `X-Forwarded-Proto` and `X-Forwarded-Host`. Health probes can use `/api/health`, which answers 503 while required configuration is missing.
