Tool overview
Open WebUI is a browser interface for local and remote AI models. It is especially popular with Ollama users because it gives local models a polished chat UI, user accounts, document upload, knowledge bases, admin settings, and provider connections without requiring a custom app.
Use it when you want a ChatGPT-like interface for models running on your own machine or local network.
Step-by-step setup
Quick requirements
Prepare:
- Docker Desktop or Docker Engine for the recommended setup
- Ollama if you want local models
- A model already pulled in Ollama
- Enough disk space for model files and uploaded documents
- A browser
Check Ollama first:
ollama pull llama3.2
ollama list
curl http://localhost:11434/api/tags
Step 1: Install Open WebUI with Docker
Run:
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
Open:
http://localhost:3000
The first account you create becomes the admin account. After that, manage users, groups, providers, models, and permissions from the admin area.
Step 2: Connect Open WebUI to Ollama
If Open WebUI and Ollama are in the same bundled container, the :ollama image handles that path for you.
If Ollama runs on the host and Open WebUI runs in Docker, the container needs a host-reachable URL. On Linux, the common Docker command is:
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
On Docker Desktop for Windows and macOS, host.docker.internal is normally available. If the UI does not show your models, go to the admin connection settings and set the Ollama URL to:
http://host.docker.internal:11434
If Open WebUI is installed directly with Python on the same host as Ollama, use:
http://localhost:11434
Step 3: Use the bundled Ollama image when you want the least networking pain
The all-in-one image is useful for simple local testing:
docker run -d \
-p 3000:8080 \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:ollama
With Nvidia GPU support:
docker run -d \
-p 3000:8080 \
--gpus=all \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:ollama
Use this if you want one container to manage both the UI and Ollama data. Use separate Ollama and Open WebUI installs if you already manage Ollama on the host or share it with other tools.
Step 4: Install Open WebUI with Python instead of Docker
Docker is the most common path, but Python works for manual setups:
python -m venv .venv
source .venv/bin/activate
pip install open-webui
open-webui serve
Open:
http://localhost:8080
On Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install open-webui
open-webui serve
If you want a specific data directory:
DATA_DIR=./data open-webui serve
On Windows:
$env:DATA_DIR=".\data"; open-webui serve
Step 5: Preserve chat history and uploads
For Docker, this flag preserves Open WebUI data:
-v open-webui:/app/backend/data
That data can include user accounts, settings, chat history, uploaded files, knowledge bases, and local database state.
Avoid this unless you intend to delete data:
docker volume rm open-webui
For Python installs, keep the configured DATA_DIR. If you do not set one, Open WebUI uses its default local data location for that install method.
Step 6: Upload documents and use local RAG
Open WebUI supports document workflows through chat file uploads and reusable knowledge bases.
For quick one-off use:
- Open a chat.
- Upload a file.
- Ask questions about that file.
For reusable document collections:
- Go to Workspace.
- Open Knowledge.
- Create a knowledge base.
- Upload documents.
- Attach or reference that knowledge base in chats or models.
RAG uses embeddings and retrieval. If document answers are poor, check the embedding model, file parsing, chunking behavior, and whether file upload permissions are enabled for the user or model.
Step 7: Manage users, roles, and permissions
Open WebUI has three main role states:
- Admin: full system control.
- User: normal access controlled by permissions.
- Pending: no access until approved.
The first account becomes admin. For multi-user local installs, set new users to pending by default and approve them manually.
Admins can manage groups and permissions for features such as file upload, model access, image generation, tools, and shared resources. Groups are additive: if one group grants a capability, the user gets that capability.
For a family, team, or small office setup, a good default is:
- One admin account.
- New registrations as pending.
- A normal user group with limited model and file permissions.
- Separate groups for trusted power users.
Updating Open WebUI
For Docker:
docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:main
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
Do not remove the open-webui volume during an update.
For Python:
pip install -U open-webui
open-webui serve
If you run multiple workers or replicas, perform migrations with one worker first to avoid database problems.
Common problems
Open WebUI cannot connect to Ollama
Use the right URL for your install:
- Docker to host Ollama:
http://host.docker.internal:11434 - Python install on same host:
http://localhost:11434 - Podman host access:
http://host.containers.internal:11434 - Bundled image: use the bundled connection path
Test Ollama:
curl http://localhost:11434/api/tags
The UI opens but models are missing
Check the admin connection settings. Also confirm that you have pulled at least one model:
ollama list
Data disappeared after reinstall
You likely removed or changed the data volume or DATA_DIR. Restore from backup if available and restart with the same persistent storage path.
Document upload works but answers are weak
Test with a small, clean text document. Then check embedding settings, RAG permissions, and whether the model has file context enabled.
Background, planning, and caveats
Approximate planning cost (U.S.)
For Open WebUI local installs, most cost is local infrastructure and provider usage:
- Hardware: enough RAM/VRAM for model serving and document processing.
- Storage: chat history, uploaded files, embeddings, and SQLite/other backend data.
- Optional VPS: useful if you want always-on service or separate team access.
- API/provider costs: cloud providers add monthly or token-based costs even when Open WebUI is local.
- Optional managed hosting: Open WebUI can be deployed with orchestrators for teams who need scaling and observability.
If your use is a single-user workstation, local Docker/Python is usually cheaper than managed service.
Cost breakdown
- one-time:
- host hardware or monthly instance,
- secure storage capacity,
- optional TLS/domain if exposing externally.
- recurring:
- external model or retrieval API costs,
- backups and monitoring overhead.
Data persistence and backups
Use persistent storage intentionally:
- Docker: keep
open-webui:/app/backend/dataacross restarts. - Python: keep
DATA_DIRstable and backed up.
Back up chat history, user settings, and knowledge folders before major updates.
Credential handling
- Keep admin/user credentials in a password manager.
- Do not keep provider API keys in plain shell history or shared scripts.
- For shared installs, create role-based access and review admin users before enabling new teams.
Security risk and operational cautions
- Local browser-based UIs are often exposed accidentally; avoid binding to open interfaces unless you intend network access.
- Restrict document tools and file upload features for untrusted users.
- Review admin role permissions before enabling integrations that can call external systems.
Questions before installing
- Do you need low-latency local inference or shared chat access?
- Are model providers local-only or cloud-backed?
- Do you have a stable backup and restore path for
/app/backend/data? - How many users will need separate roles from day one?
Red flags
- Reinstalling without retaining the same volume/data path.
- Unclear ownership of uploaded user documents.
- No plan for authentication before inviting collaborators.
Rollback and update guidance
For rollback:
- keep snapshots of your data volume (Docker) or
DATA_DIR. - test a restore on a fresh container path before replacing a working system.
For updates:
- back up data, pull the latest image, and recreate the container,
- keep your mounted volume and compare behavior with a short smoke test before full rollout.
Bottom line
For most users, install Open WebUI with Docker, keep -v open-webui:/app/backend/data, connect Ollama through a host-reachable URL, and create the first admin account locally. After that, enable document RAG and multi-user permissions only as needed.