Skip to main content

Open WebUI: A Web Interface for Ollama on a VDS

AI Agents on VPS · 19.04.2026 · 6 min read
Illustration for “Open WebUI: A Web Interface for Ollama on a VDS”

What is Open WebUI?

Open WebUI is a self-hosted web interface for interacting with language models. It supports Ollama, the OpenAI API, and other backends.

Installing via Docker

curl -fsSL https://get.docker.com | sh

docker run -d \
  --name open-webui \
  --network=host \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  --restart always \
  ghcr.io/open-webui/open-webui:main
--network=host lets the container reach Ollama directly via localhost without extra configuration.

Configuring the Nginx Reverse Proxy

server {
    listen 80;
    server_name ai.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_read_timeout 300s;
    }
}
certbot --nginx -d ai.yourdomain.com

Key Features

  • Chat with any Ollama model in a polished interface
  • Upload documents (PDF, DOCX) for RAG
  • Create system prompts
  • Multi-user mode with roles
  • Chat history with search
  • Image support (multimodal models)

First Login

Open http://YOUR_SERVER_IP:8080. The first registered account automatically becomes the administrator.

Security: Install an SSL certificate before opening this up for external access. Without HTTPS, passwords are sent in plain text.

Common setup errors

The interface opens but the model list is empty

Failed to fetch models: Network Error

Most often the cause is an incorrect OLLAMA_BASE_URL, or Ollama and Open WebUI simply cannot see each other over the network. Without --network=host, the address 127.0.0.1 inside a container points to the container itself, not to the host running Ollama — you need host.docker.internal or a shared Docker network.

The site does not open over HTTPS after running certbot

502 Bad Gateway

A 502 means Nginx accepted the request but could not get a response from the backend. Check that the Open WebUI container is actually listening on the port named in proxy_pass, and that it did not crash after starting — look at docker logs open-webui.

Uploading a PDF for RAG hangs with no response

Turning large documents into embeddings is CPU-heavy work. On a weak VDS without a GPU, processing a sizeable PDF can take a noticeable amount of time; that is resource pressure, not a hang. Watch CPU usage with docker stats during the upload.

«Sign up is disabled» when trying to register a second user

Sign up is disabled

After the first administrator is created, or when an environment variable explicitly forbids open registration, the sign-up form is disabled by default for security reasons. New users in this mode are added manually by an administrator through the admin panel, or sign-up needs to be temporarily re-enabled in settings.

Open WebUI and alternative interfaces

All three options give you a chat layer on top of an LLM, but they differ in how much you can customize and how much of the interface's code you own.

CriterionOpen WebUILibreChatCustom frontend
Learning curveLowLowHigh
Support for multiple LLM backendsYesYesDepends on the implementation
UI customization for a brandLimitedLimitedFull
Multi-user mode out of the boxYesYesBuilt by hand

When Open WebUI is not a good fit

A ready-made interface saves weeks of development, but it does not solve tasks that need full control over markup and logic.

  • You need a branded interface for the company — Open WebUI can be re-themed, but that is not a substitute for full custom frontend development
  • The product is embedded as a widget on an existing site — that needs its own component calling the API directly
  • The only requirement is programmatic access to models with no UI — then a web interface is just an extra layer; Ollama's REST API is enough
  • You need tightly controlled multi-tenant token billing — that requires a separate proxy layer on top of Open WebUI
  • User sign-up must go through corporate SSO with no manual admin steps — out of the box that scenario needs extra setup

Verifying the result

Before giving the team access, walk through a new user's path from login to the model's first response.

  1. Open the interface in a browser and confirm the models loaded into Ollama show up in the dropdown
  2. Send a test message and wait for the full response without the connection dropping
  3. Check that HTTPS works without any browser certificate warnings
  4. Upload a test document and confirm RAG search finds relevant passages in it
  5. Log in with a second account to confirm multi-user mode is configured correctly

Related: the model behind this interface — installing Ollama, answering questions over documents without a UI — RAG on a VDS.

Frequently asked questions

What happens if a stranger manages to register on the server before the owner does?

The first account registered on the system automatically becomes the administrator, with no identity check at all. If the server is reachable before the owner signs up, a random visitor could beat them to it and claim the admin role. Sign-up should be closed, or network access restricted, right after installation instead of leaving the port open until first login.

Can Open WebUI connect to models from sources other than Ollama?

Yes, the interface supports several backends at once from the start: besides Ollama that includes an OpenAI-compatible API and other model sources. This makes it possible to gather models from different places in one chat without a separate tool for each one, switching between them right inside the interface instead of changing an address or restarting the container.

Does the interface itself need a powerful GPU, or is that only required for running the model?

The interface itself is a lightweight web panel and needs no GPU as such. GPU load comes from the model running inside Ollama and from turning documents into embeddings for search: on a weak server without a GPU, uploading large files can noticeably stall, not the chat itself. Keep that in mind when choosing a server configuration for the install.

What should be used if a fully branded chat design is needed instead of a ready-made theme?

The ready-made interface can only be changed through theme settings and does not turn into full custom development for a company's brand. When control over markup, logic, and style down to detail matters, it makes more sense to build a custom frontend calling the API directly, rather than bending a ready tool to tasks it was never meant for.

Was this article helpful?
← Back to Knowledge Base Ask Support