Self-host Open WebUI: connect models, manage accounts and keep chat history

Deploy Open WebUI from Zenavo's template, connect an OpenAI-compatible model API, register the admin account and control sign-ups, and back up and upgrade the volume.

This post is also available in 简体中文, 繁體中文, 日本語, Español and Bahasa Indonesia.

If you already have API keys for language models and want a web chat interface for yourself or a small team, Open WebUI is one of the easiest single-container options: multi-user accounts, chat history, document uploads and model switching work out of the box.

This guide uses Zenavo's Open WebUI template to deploy the interface on your own server and connect it to external model APIs. If you'd like to compare it with a multi-service workspace that bundles PostgreSQL, Redis and S3 file storage, see our LobeHub guide.

The template doesn't include local models or GPU inference; your server, Zenavo and upstream model APIs are billed separately.

Deploy Open WebUI

First connect a Linux server to Zenavo, then open the Open WebUI template, choose the server and deploy.

The template currently sets:

Setting Value or purpose
Image ghcr.io/open-webui/open-webui:main
HTTP port 8080
Volume /app/backend/data: the SQLite database, uploaded documents and settings live here
WEBUI_SECRET_KEY Generated when the project is created; signs login sessions
ENABLE_OLLAMA_API false, disables local Ollama polling by default so you can use external APIs directly
Telemetry variables SCARF_NO_ANALYTICS, DO_NOT_TRACK and ANONYMIZED_TELEMETRY are disabled by default
Memory Reserve about 2 GB

The main tag tracks upstream releases. For long-term use, go to the service's Settings → Source and pin the image to a tested version tag (such as ghcr.io/open-webui/open-webui:v0.6.5).

Bind a domain and register the admin account right away

On the open-webui service's Networking tab, bind a domain such as chat.example.com to port 8080, add a DNS A record pointing to the server, and wait for HTTPS. See Domains for the steps.

Open the site and register the first account as soon as the domain is live. Open WebUI makes the very first registered user the admin; until you finish that step, anyone who finds the URL could register first.

Once signed in, open Admin Panel → Settings → General and check the sign-up policy for new users:

  • If it's just for you: turn off Enable New Sign Ups;
  • If it's for a team: keep Default User Role set to pending so new accounts can't use models until you approve them.

Connect model APIs

Open Admin Panel → Settings → Connections, enter your provider's Base URL and API Key under the OpenAI API section, and save. Your models will appear in the model selector at the top left of the chat page.

Two common setups:

  • Direct to a provider: enter the provider's OpenAI-compatible endpoint (usually ending in /v1 — avoid adding /v1 twice) and its API key.
  • Through your own gateway: if you run New API, Magpie or LiteLLM, point the Base URL at your gateway so you can manage OpenAI, Anthropic, Gemini and DeepSeek behind a single key and quota. When the gateway is in the same Zenavo project as Open WebUI, you can use the private network address directly (such as http://new-api.zenavo.internal:3000/v1).
  • Add live web search and chat-app bots: to let models search live web pages without per-query API fees, add self-hosted SearXNG to the same project; to reach your assistant from Telegram, Discord or Slack, pair it with OpenClaw.

When sharing the instance with teammates, check Admin Panel → Settings → Models to control which models regular users are allowed to see and call.

Back up and upgrade

Accounts, chat history, knowledge documents and connection settings all live in the /app/backend/data volume. The WEBUI_SECRET_KEY on the service's Variable tab protects sessions — don't change it after deploying, and save a copy in your password manager.

Back up the volume from the open-webui service's Backup & Restore tab:

  1. Pick a maintenance window when no one is using it and stop the project (volume backups require the project to be stopped).
  2. Create the backup, then start the project again.
  3. Download a copy to keep. The backup contains chat history and saved API keys, so store it securely.

See Backups for details. Before upgrading, back up the volume and read Open WebUI's release notes before changing the image tag. Major upgrades may migrate the internal database schema, so keeping a pre-upgrade backup is the safest way to roll back if needed.

FAQ

The model list is empty after saving a connection? Check that the Base URL ends with the path your provider expects (most OpenAI-compatible APIs require /v1) and that the API key is valid. If a provider doesn't implement the /v1/models list endpoint, enter the model IDs manually in the connection settings.

Getting 401 or 404 when sending a message? 401 usually means an invalid or expired API key, or no access to that model; 404 usually means the Base URL either included /chat/completions or left out /v1.

I changed an environment variable and restarted, but the setting in the UI didn't change? Once Open WebUI saves admin settings into its database, the database values take precedence over environment variables. Change the setting directly in Admin Panel → Settings and save.

Can I connect a local Ollama instance? Yes. The template sets ENABLE_OLLAMA_API=false by default so the logs stay clean when Ollama isn't installed. If you run Ollama in the same project or network, set ENABLE_OLLAMA_API=true and add OLLAMA_BASE_URL.

Start from the Open WebUI template: bind your domain, claim the admin account and lock down sign-ups first, then connect your model APIs and set up backups.