Skip to content

Open WebUI Install Guide: Survive v0.11.0 Upgrades

Open WebUI install walkthrough for v0.11.0 - pinned Docker image, WEBUI_SECRET_KEY, /health verify, Ollama networking fixes, upgrade and uninstall.

7 min readIntermediate

Most local LLM stacks die the first time you recreate a container. Chats vanish, sessions expire, Ollama goes dark, and you’re staring at an empty model picker. This Open WebUI install walkthrough targets that failure mode for v0.11.0 (released July 27, 2026) – the redesign release with real database migrations.

It’s a self-hosted chat front end. Ollama, OpenAI-compatible APIs, other runners stay the engines; Open WebUI is the multi-user browser UI, RAG layer, tools, and admin surface that still works offline. Source of truth sits in the Quick Start docs and GitHub releases.

System requirements before you pull anything

The UI is lighter than people budget for. The model backend is what eats RAM and disk.

Resource Minimum (UI + cloud/API models) Practical with local Ollama
OS macOS, Windows, Linux (x86_64/ARM64) Same; Linux host networking quirks below
CPU 1-2 cores 4+ cores if CPU inference
RAM ~1-2 GB for the UI alone; 2 GB+ if you use embeddings/RAG 16 GB+ common for 7B-13B class models
Disk Several GB for the image + volume 50 GB+ once you store multiple model weights
Runtime Docker (recommended) or Python 3.11/3.12 NVIDIA Container Toolkit for :cuda
Network WebSocket-capable path to the UI Reachability from container → model API

Performance notes in the docs (as of the v0.11.0 docs set) treat 1 GB as a tight squeeze once embeddings/RAG kick in. Budget hardware for the biggest model you actually load, not for the chat chrome. Community hardware threads often cite 16 GB+ when Ollama runs beside the UI.

Pick the right image tag (this is where tutorials lie)

Images ship from ghcr.io/open-webui/open-webui and Docker Hub openwebui/open-webui – same content either way (Quick Start tag table).

  • :v0.11.0 – immutable pin for this guide
  • :main / :latest – rolling main-branch builds; digests move when code lands, and :latest does not mean “newest GitHub stable tag”
  • :cuda – NVIDIA GPU path (add --gpus all)
  • :ollama – bundles Ollama in one container
  • :main-slim – smaller image; pulls Whisper/embedding weights on first use

Want the v0.11.0 bits only? Pin :v0.11.0. Want whatever landed on main yesterday? :main – knowing the digest can change under a rebuild.

Install Open WebUI v0.11.0 with Docker

Install Docker first. Generate a secret you’ll reuse on every recreate:

openssl rand -hex 32

Save the hex string. Pull and run the pinned release:

docker pull ghcr.io/open-webui/open-webui:v0.11.0

docker run -d 
 -p 3000:8080 
 --add-host=host.docker.internal:host-gateway 
 -v open-webui:/app/backend/data 
 -e WEBUI_SECRET_KEY="PASTE_YOUR_HEX_KEY_HERE" 
 --name open-webui 
 --restart always 
 ghcr.io/open-webui/open-webui:v0.11.0

Keep these three: named volume open-webui → /app/backend/data (chats/users/settings live there), host port 3000 → container 8080, and that same WEBUI_SECRET_KEY on every future docker run. GPU path: use the matching :cuda tag from releases plus --gpus all.

No Docker? Official path is Python 3.11 or 3.12 only (3.13 not supported yet as of the project README/dev docs), then pip install open-webui and open-webui serve – UI on http://localhost:8080.

First-time configuration that won’t bite you later

Open http://localhost:3000. Create the first account immediately; that user becomes Administrator. Later sign-ups stay Pending until you approve them (Quick Start after-install behavior).

Pro tip: Skip -e WEBUI_AUTH=False “just to try it.” On the same data volume you cannot flip single-user mode back to multi-account later – called out in the Quick Start docs.

Empty model picker after login? The UI is fine; the container still can’t reach a provider. For Ollama on the same machine, point Connections at a URL the container can open – often http://host.docker.internal:11434 on Docker Desktop. On Linux, if the list stays empty, check Ollama’s bind address in the errors section. Cloud OpenAI-compatible keys go under Admin → Connections.

Think of Open WebUI as the control panel and Ollama (or an API) as the engine: a perfect panel with no reachable engine still shows an empty garage.

Verify the install actually works

Don’t trust “container is Up” alone.

  1. docker ps – name open-webui, ports 0.0.0.0:3000->8080/tcp
  2. docker logs open-webui 2>&1 | head -40 – look for a clean start/version banner for this image
  3. curl -s http://localhost:3000/health – unauthenticated liveness; community checks often look for "status": true (see also the monitoring reference)
  4. Browser: login works, admin account works, at least one model shows after provider config
  5. One-line chat: streaming tokens, thread still there after a hard refresh

Rolling tags feel convenient until a Sunday rebuild pulls migrations you never read. Pinned :v0.11.0 is boring on purpose – same digest tomorrow, same failure surface you tested tonight. How much surprise do you want on a box other people log into?

Common Open WebUI install errors and fixes

Server connection error / no models (Ollama on host)
Turns out the container is not your laptop. Ollama bound only to 127.0.0.1:11434 means host.docker.internal hits the docker bridge IP where port 11434 is closed. Connection troubleshooting docs and GitHub threads converge on: set OLLAMA_HOST=0.0.0.0 on the host, or run Open WebUI with --network=host and -e OLLAMA_BASE_URL=http://127.0.0.1:11434 (UI then on 8080, not 3000).

Everyone logged out after every update
The catch is a new container without the same WEBUI_SECRET_KEY. Updating docs: generate once with openssl rand -hex 32, pass it on every recreate, or sessions die.

Port 3000 already allocated
-p 3001:8080, then http://localhost:3001.

Container Up but UI unreachable / unhealthy
Logs first – migration errors, proxy env vars breaking health, reverse proxy without WebSockets. Inside the container the app listens on 8080; curling 3000 inside the container is the wrong address.

pip install fails on modern Python
3.13 → use 3.11 or 3.12.

Upgrade from an older version (and uninstall cleanly)

v0.11.0 runs schema migrations. Back up the volume first:

docker run --rm -v open-webui:/data -v "$(pwd)":/backup 
 alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /data

Swap the image; data stays in the volume:

docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:v0.11.0
docker run -d -p 3000:8080 
 --add-host=host.docker.internal:host-gateway 
 -v open-webui:/app/backend/data 
 -e WEBUI_SECRET_KEY="SAME_KEY_AS_BEFORE" 
 --name open-webui --restart always 
 ghcr.io/open-webui/open-webui:v0.11.0

Roll the image backward and the schema still stays forward – migrations are one-way per the updating docs. Restore the tarball if you must retreat. Multi-instance / multi-worker: move every node together; mixed versions on this class of release aren’t supported.

Uninstall (Quick Start):

docker rm -f open-webui
docker rmi ghcr.io/open-webui/open-webui:v0.11.0 # optional
docker volume rm open-webui # deletes all data

FAQ

Is Docker required for Open WebUI?

No. Docker is recommended; pip install open-webui + open-webui serve works on Python 3.11/3.12.

Why pin v0.11.0 instead of :main?

Rebuild the box next month with :main and you may pull a newer main-branch build – migrations included – without noticing. :v0.11.0 keeps the digest still until you change the tag on purpose. Solo homelab can chase :main; shared boxes should pin, read the v0.11.0 interface notes, then move.

Does Open WebUI store my chats in the cloud?

Default is local only – Docker volume or local DB on your machine, no outbound product telemetry required for basic chat. People still trip over the parts that aren’t magic: reverse-proxy TLS, who can hit port 3000, and any cloud API keys you paste into Connections. Private models stay private until you share them; the UI won’t do that for you.

Next action: run the openssl + pinned docker run block, hit /health, create the admin user, then touch Ollama’s bind address only if the model list is empty.