---
title: "Self-host Open WebUI: connect models, manage accounts and keep chat history"
description: "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."
date: 2026-11-10
language: en
url: https://zenavo.app/blog/self-host-open-webui
---

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

If you already have API keys for language models and want a web chat interface for yourself or a small team, [Open WebUI](https://openwebui.com) 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](https://zenavo.app/blog/self-host-lobehub).

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](https://docs.zenavo.app/servers/add-a-server) to Zenavo, then open the [Open WebUI template](https://zenavo.app/deploy?template=open-webui), 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](https://docs.zenavo.app/networking/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](https://zenavo.app/blog/self-host-new-api), [Magpie](https://zenavo.app/blog/self-host-magpie) or [LiteLLM](https://zenavo.app/blog/self-host-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](https://zenavo.app/blog/self-host-searxng) to the same project; to reach your assistant from Telegram, Discord or Slack, pair it with [OpenClaw](https://zenavo.app/blog/self-host-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](https://docs.zenavo.app/operations/backups) for details. Before upgrading, back up the volume and read Open WebUI's [release notes](https://github.com/open-webui/open-webui/releases) 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](https://zenavo.app/deploy?template=open-webui): bind your domain, claim the admin account and lock down sign-ups first, then connect your model APIs and set up backups.
