Skip to content

Solutions · Chat interface

A VPS for Open WebUI

Open WebUI is the self-hosted chat interface for Ollama and any OpenAI-compatible API: accounts, history, documents and web search in one browser tab. It publishes no hardware minimum, so the sizes here are ours and labelled. Pointed at a hosted model it is a light app, and C2-4-80 at $37.90 is plenty; with the Ollama it can bundle, the model has to fit in memory as well, and BD-8 at $12.90 is the cheapest machine that holds an 8B model with room to spare.

What it needs

Software from the docs, sizes labelled by source

The software and the security posture come from the project's own documentation. Where the project publishes no hardware figure, the sizes say whose they are.

From the Open WebUI README and docs.openwebui.com

  • Install with Docker: 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 The UI listens on port 8080 inside the container; the docs map it to 3000 on the host.
  • Does it include Ollama? Only in the :ollama image, which bundles both in one container. The :main image does not: it connects to an Ollama or any OpenAI-compatible API you point it at, by OLLAMA_BASE_URL.
  • The image is 1.66 GB to download, and the default embedding model for document search takes about 500 MB of RAM per worker. The docs publish no minimum for CPU, RAM or disk.
  • Everything you create lives in the /app/backend/data volume; the docs warn never to run without it. The first account you create becomes the administrator, and sign-up closes once it exists.

Sizes (ours: the docs publish no minimum)

Sizing by workload
WorkloadvCPURAM
Open WebUI against a hosted API or a separate OllamaOurs. The image, the app and the embedder for document search fit with room; a handful of users chatting.24 GB
Open WebUI with the bundled Ollama and an 8B modelOurs. An 8B model is a 4.9 GB download and has to fit in memory next to the app. A few tokens a second on a CPU.48 GB
Bundled Ollama with a 14B model, or several people at onceOurs. A 14B model is 9.3 GB; the rest is memory for the app, its embedder and concurrent chats.824 GB

The plans that fit

4 machines, priced live

Cheapest fitting machine first. Prices are today's, per month, read from the catalogue.

  • C2-4-80$37.90/mo

    2 vCPU · 4 GB · 80 GB disk · 3 TB

    Hosted models only: the light install. 2 vCPU / 4 GB / 80 GB. Open WebUI with an API key or an Ollama elsewhere. Pick it for the city, not the size.

  • BD-8$12.90/mo

    4 vCPU · 8 GB · 100 GB disk · 32 TB

    Cheapest with room for the bundled Ollama and an 8B model. 4 vCPU, 8 GB, 100 GB for the image and the model downloads. Twice the memory of the light install, for the model.

  • C4-8-160$75.90/mo

    4 vCPU · 8 GB · 160 GB disk · 3 TB

    The same shape with 160 GB, in more cities. 4 vCPU / 8 GB / 160 GB, for when the cheapest row's cities do not suit you or you want a bigger model library.

  • BD-24$31.90/mo

    8 vCPU · 24 GB · 300 GB disk · 32 TB

    8 vCPU / 24 GB for 14B models and a team. A 14B model and several concurrent chats, with disk for a document library.

There is no start-up preset for Open WebUI yet: the install is the four steps below, typed by you. They are the commands from its own docs, with one labelled change.

The install

Four steps, from the Open WebUI docs

Docker, the container, the admin account, then a model. Do step 3 straight away: the first account created is the administrator.

  1. Docker. curl -fsSL https://get.docker.com | sh Check it with docker --version.
  2. Make a secret key and start it. Run openssl rand -hex 32 and keep the output; the docs pass it as WEBUI_SECRET_KEY. Our one change to their command: 127.0.0.1:3000:8080 keeps the port off the public internet until you have HTTPS. docker run -d -p 127.0.0.1:3000:8080 --add-host=host.docker.internal:host-gateway -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 For the bundled Ollama, swap the image for ghcr.io/open-webui/open-webui:ollama and add -v ollama:/root/.ollama.
  3. Create the admin now. From your laptop, ssh -N -L 3000:127.0.0.1:3000 root@your-server then open http://127.0.0.1:3000. The first screen offers Create Admin Account; that account manages every setting, and sign-up switches itself off after it.
  4. Connect a model, then a domain. In Admin settings, Connections: add an OpenAI-compatible API key, or the address of your Ollama. For an Ollama on the same host, the README says to use --network=host with -e OLLAMA_BASE_URL=http://127.0.0.1:11434; the port then becomes 8080. For HTTPS, put a reverse proxy in front and set proxy_buffering off; in its location block, or streamed answers arrive garbled.

Honestly

What we would actually buy

The project names no minimum, so buy for the model, not for the interface.

For Open WebUI with its own Ollama

BD-8 · $12.90/mo

4 vCPU, 8 GB and 100 GB at $12.90: the 1.66 GB image, the embedder, and an 8B model in memory beside them, answering at a few tokens a second on a CPU. That suits one person or a small team asking patiently, not a room of people waiting. If all your models are hosted, C2-4-80 at $37.90 is the same interface for less. If people need fast local answers, the GPU line is the honest answer, and the :cuda image is built for it.

Questions

What people ask before they buy one.

What are Open WebUI's system requirements?
The project publishes none: its README, its quick start and its performance guide give no minimum for CPU, RAM or disk. What they do say is that the :main image is a 1.66 GB download (176 MB for the :slim image, which leaves out the bundled machine-learning stack), and that the default embedding model for document search takes about 500 MB of RAM for each worker process. The sizes on this page are ours, reasoned from those figures and from the model you choose to run beside it.
Does Open WebUI include Ollama?
Only if you ask for it. The :ollama image bundles Open WebUI and Ollama in one container, started with a second volume for the models. The :main image does not: it connects to an Ollama you run elsewhere, or on the same machine, and to any OpenAI-compatible API such as hosted providers or vLLM. Our Ollama page sizes the model side by RAM.
Which port does it use?
The app listens on 8080 inside the container, and the docs publish it as 3000 on the host with -p 3000:8080. If you use --network=host to reach an Ollama on the same machine, the port is 8080 instead. Keep it on loopback and use an SSH tunnel until the admin account exists and HTTPS is in front, because the first account created is the administrator.
Do I need a GPU?
Not for Open WebUI itself, which is a web app. A GPU only matters for the model: the :cuda image runs it on an Nvidia card, and without one a bundled or separate Ollama answers on the CPU, slowly. If the models are hosted behind an API key, no GPU is involved at all.
Where is my data, and how do I update?
In the volume mounted at /app/backend/data: chats, users and settings, in SQLite by default. The docs say never to run without it. To update, pull the new image, remove the container, and run the same command again on the same volume and the same secret key. The docs recommend PostgreSQL once many people use it at the same time.
How many people can one VPS serve?
The docs do not give a number. They do say the defaults suit personal use: SQLite for the database, a local vector store that is not safe with more than one worker, and an embedding model loaded into the app itself. For a busy team they point to PostgreSQL, Redis and an external embedding service, and moving embeddings off the machine frees hundreds of megabytes per worker.
Open WebUI or Dify or AnythingLLM?
Open WebUI is the chat interface: you bring models and it gives people accounts, history, documents and tools in the browser. Dify is a platform for building LLM apps and workflows, and AnythingLLM has its own document-chat design. All three run on the same kind of machine, and each has a page here with its own requirements.