> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.privategpt.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.privategpt.dev/_mcp/server.

# Docker

> Run PrivateGPT with Docker — isolated, reproducible, production-ready.

The published Docker image installs the `core` package by default:

```text
zylonai/private-gpt:latest
```

---

## Auto mode

Point PrivateGPT at your LLM server. Models are discovered automatically — no config file needed.

#### Start your LLM server

Make sure your LLM server is running. See [Providers](/providers/overview) for setup guides.

#### Run the container

#### macOS / Linux

```bash
docker run -p 8080:8080 \
  -e OPENAI_API_BASE=http://host.docker.internal:11434/v1 \
  zylonai/private-gpt:latest
```

#### Windows (PowerShell)

```powershell
docker run -p 8080:8080 `
  -e OPENAI_API_BASE=http://host.docker.internal:11434/v1 `
  zylonai/private-gpt:latest
```

> **Note**
>
> `host.docker.internal` resolves to the host machine from inside Docker on macOS and Windows. On Linux, use `--network host` and `http://localhost:11434/v1` instead.

```bash
# Linux alternative
docker run --network host \
  -e OPENAI_API_BASE=http://localhost:11434/v1 \
  zylonai/private-gpt:latest
```

#### Open the UI

Navigate to [http://localhost:8080/ui](http://localhost:8080/ui).

### Passing an API key

If your LLM server requires authentication:

```bash
docker run -p 8080:8080 \
  -e OPENAI_API_BASE=http://host.docker.internal:8000/v1 \
  -e OPENAI_API_KEY=your-api-key \
  zylonai/private-gpt:latest
```

---

## Build locally

If you want to build the image from source (e.g. after code changes):

#### Build from source

```bash
git clone https://github.com/zylon-ai/private-gpt
cd private-gpt
docker build -t private-gpt .
```

Then replace `zylonai/private-gpt:latest` with `private-gpt` in any `docker run` command above.

To add optional features when building your own image, pass explicit extras:

```bash
docker build \
  --build-arg EXTRAS="core queue observability-opik" \
  -t private-gpt .
```

---

## Persisting data

By default, ingested documents and local data are stored inside the container and lost on restart. Mount a volume to persist them:

```bash
docker run -p 8080:8080 \
  -e OPENAI_API_BASE=http://host.docker.internal:11434/v1 \
  -v ./local_data:/home/worker/app/local_data \
  zylonai/private-gpt:latest
```