Local LLMs

How to Run Open WebUI with Ollama (Docker)

3 min read

Open WebUI is a self-hosted chat interface. Point it at Ollama and you get chat history, file uploads, and multiple users on top of your local models.

1. Check Ollama is up

curl http://localhost:11434/api/tags

Returns JSON listing your installed models. If it fails, start Ollama first — see Ollama on macOS and Linux or on Windows.

2. Start Open WebUI

docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

Runs the container in the background on port 3000, makes your host machine reachable from inside the container as host.docker.internal (needed on Linux), and stores all data in a named volume so it survives restarts and upgrades.

On Windows, run the same command in PowerShell as one line, or swap the trailing \ for backticks.

No Docker? pip install open-webui then open-webui serve works on Python 3.11 and serves on port 8080 instead.

3. First login

Open http://localhost:3000 and sign up. The first account created becomes the administrator — it controls user management and system settings, so make it yours before sharing the URL.

Running it only for yourself and want no login screen at all? Add -e WEBUI_AUTH=False to the docker run command. You cannot switch that setting back later.

4. Pick a model

The model selector sits at the top of a new chat and lists every model Ollama has. Type a name that is not installed yet — for example gemma3:4b — and Open WebUI offers to pull it for you.

If the list is empty, Open WebUI is not reaching Ollama. Go to Settings > Admin > Connections, find Manage Ollama API Connections, and set the URL to:

http://host.docker.internal:11434

That is the container’s route back to Ollama on your host. A plain localhost there means inside the container, which is why the default sometimes finds nothing.

Upgrading

docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:main

Removes the container and fetches the newer image; re-run the command from step 2. Your chats live in the open-webui volume, not the container, so nothing is lost.


Next: call Ollama from your own code or serve a model with vLLM.

Open the full interactive version (with copy buttons) ↗

← All guides