Skip to main content

Quick Start

Get Open WebUI running on your machine. Pick your preferred method below.

Open WebUI works on macOS, Linux (x86_64 and ARM64, including Raspberry Pi and NVIDIA DGX Spark), and Windows.

  • Docker: Officially supported and recommended for most users. Requires Docker installed.
  • Python: Suitable for low-resource environments or manual setups
  • Kubernetes: Ideal for enterprise deployments requiring scaling and orchestration

Quick Start with Docker

:dev is the pre-release build, and the newest fixes are in it

Think of :dev as the nightly: it is rebuilt from the dev branch every time a change lands, and it becomes the next release unchanged. Fixes reach it the day they are made, which is often weeks before they reach :main.

Swap the tag on any command on this page:

docker run -d -p 3000:8080 -v open-webui-dev:/app/backend/data --name open-webui-dev ghcr.io/open-webui/open-webui:dev

Installing it is your call, and it is a genuinely useful one: pre-release builds are tested by the people who choose to run them. Give it its own volume, as above, and run it beside your normal instance rather than in place of it. Full details in Using the Dev Branch.

info

WebSocket support is required. Ensure your network configuration allows WebSocket connections.

Docker Hub Now Available

Open WebUI images are published to both registries:

  • GitHub Container Registry: ghcr.io/open-webui/open-webui
  • Docker Hub: openwebui/open-webui

Both contain identical images. Replace ghcr.io/open-webui/open-webui with openwebui/open-webui in any command below.

1. Pull the image

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

2. Run the container

docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
FlagPurpose
-v open-webui:/app/backend/dataPersistent storage. Prevents data loss between restarts.
-p 3000:8080Exposes the UI on port 3000 of your machine.

3. Open the UI

Visit http://localhost:3000.


Image Variants

TagUse case
:mainStandard image (recommended)
:devPre-release (nightly) build from the dev branch. Fixes and features arrive here first.
:main-slimSmaller image, downloads Whisper and embedding models on first use
:cudaNvidia GPU support (add --gpus all to docker run)
:ollamaBundles Ollama inside the container for an all-in-one setup

How the tags update

:main and :latest are the same rolling image: both point to the newest build from the main branch and are rebuilt every time a change lands there, so their digest moves forward as development continues. Note that :latest follows main; it does not point to the newest stable release.

:dev is the same idea for the dev branch, also rolling. That is the pre-release, effectively a nightly build, and it carries fixes and features weeks before they appear under :main.

Version tags, such as :vX.Y.Z and the shorter :X.Y.Z and :X.Y, are pinned to one stable release and never change. :git-<commit-sha> pins one exact commit.

This is why :main and a specific release tag can show different image digests at the same time: :main already includes everything merged since that release, while the version tag stays frozen at it.

TagPoints toImmutable?
:main, :latestNewest build of the main branchNo (rolling)
:devNewest build of the dev branch, the pre-releaseNo (rolling)
:vX.Y.Z, :X.Y.Z, :X.YA specific stable releaseYes
:git-<sha>One exact commitYes

For reproducible or production deployments, pin a version tag. For the newest build, use :main (or the identical :latest). For the next release before it is released, use :dev.

Specific release versions

For production environments, pin a specific version instead of using floating tags. Replace X.Y.Z with a version from the releases page:

docker pull ghcr.io/open-webui/open-webui:vX.Y.Z
docker pull ghcr.io/open-webui/open-webui:vX.Y.Z-cuda
docker pull ghcr.io/open-webui/open-webui:vX.Y.Z-ollama

Common Configurations

GPU support (Nvidia)

docker run -d -p 3000:8080 --gpus all -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:cuda

Bundled with Ollama

A single container with Open WebUI and Ollama together:

With GPU:

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

CPU only:

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

Connecting to Ollama on a different server

docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Single-user mode (no login)

docker run -d -p 3000:8080 -e WEBUI_AUTH=False -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
warning

You cannot switch between single-user mode and multi-account mode after this change.


Using the Dev Branch

:dev is Open WebUI's pre-release channel, and in practice a nightly build: the image is rebuilt from the dev branch as changes land, and every change lands there before it lands anywhere else. There is no separate beta programme, because dev fills that role. Changes that reach it are not reverted, so the next release is dev as it stands on release day.

That has two consequences worth knowing:

  • If you are waiting on a fix, it is probably already available. Check the changelog on dev, then run :dev rather than waiting for the release.
  • If you run Open WebUI for other people, testing the pre-release is how you avoid surprises. A second instance on :dev shows you the next release before your users meet it, and tells you whether your plugins, your models and your configuration still behave.

Whether to run it is entirely your decision, and running it is what makes releases good. A pre-release is only as well tested as the number of people who choose to install it, and that number is currently small.

Setup is the same as any other image, with the tag changed:

docker run -d -p 3000:8080 -v open-webui-dev:/app/backend/data --name open-webui-dev --restart always ghcr.io/open-webui/open-webui:dev
Use a separate volume

Never share a data volume between dev and production. Dev builds may include database migrations that a release image cannot read back, so a shared volume can leave you unable to go back to :main. The -v open-webui-dev:/app/backend/data above is a different volume from the open-webui one used elsewhere on this page, and that is deliberate. The container name differs too, so both can run at once.

Anything that looks wrong on :dev is worth reporting on GitHub. Reports at that stage get fixed before the release instead of after it, which is the whole point of a pre-release existing.

If Docker is not your preference, follow the Developing Open WebUI.


Uninstall

  1. Stop and remove the container:

    docker rm -f open-webui
  2. Remove the image (optional):

    docker rmi ghcr.io/open-webui/open-webui:main
  3. Remove the volume (optional, deletes all data):

    docker volume rm open-webui

Updating

To update your local Docker installation to the latest version, you can either use Watchtower or manually update the container.

Option 1: Using Watchtower

With Watchtower, you can automate the update process:

docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock nickfedor/watchtower --run-once open-webui

(Replace open-webui with your container's name if it's different.)

Option 2: Manual Update

  1. Stop and remove the current container:

    docker rm -f open-webui
  2. Pull the latest version:

    docker pull ghcr.io/open-webui/open-webui:main
  3. Start the container again:

    docker run -d -p 3000:8080 -v open-webui:/app/backend/data \
      -e WEBUI_SECRET_KEY="your-secret-key" \
      --name open-webui --restart always \
      ghcr.io/open-webui/open-webui:main
Set WEBUI_SECRET_KEY

Without a persistent WEBUI_SECRET_KEY, you'll be logged out every time the container is recreated. Generate one with openssl rand -hex 32.

For version pinning, rollback, automated update tools, and backup procedures, see the full update guide.


After You Install

First Login
  • Admin account: The first account created gets Administrator privileges and controls user management and system settings.
  • New sign-ups: Subsequent registrations start with Pending status and require Administrator approval.
  • Privacy: All data, including login details, is stored locally on your device by default. Open WebUI does not make external requests by default. All models are private by default and must be explicitly shared.

Connect a Model Provider

Open WebUI needs at least one model provider to start chatting. Choose yours:

ProviderGuide
Ollama (local models)Starting with Ollama →
OpenAIStarting with OpenAI →
Any OpenAI-compatible APIOpenAI-Compatible Providers →
AnthropicStarting with Anthropic →
llama.cppStarting with llama.cpp →
vLLMStarting with vLLM →

Connect an Agent

Want more than a model? AI agents can execute terminal commands, read and write files, search the web, maintain memory, and chain complex workflows, all through Open WebUI's familiar chat interface.

AgentDescriptionGuide
Hermes AgentAutonomous agent by Nous Research with terminal, file ops, web search, memory, and extensible skillsSet up Hermes Agent →
OpenClawOpen-source self-hosted agent with shell access, file operations, web browsing, and messaging integrationsSet up OpenClaw →

Learn more about how agents differ from providers in the Connect an Agent overview →

New to Open WebUI?

If this is your first time with Open WebUI, read the Essentials for Open WebUI guide next. It covers the six things every new user needs to know: plugins, tool calling, task models, context management, RAG, and Open Terminal.

Explore Features

Once connected, explore what Open WebUI can do: Features Overview →

Experimental: Open Responses

Open WebUI has experimental support for the Open Responses specification. See the Starting with Open Responses Guide to learn more.


Community

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.