Review notes
Local models depend on model size and GPU. For external APIs, a small VPS is usually enough.
Deployment guide
Run it as a single container, or pair it with Ollama/LiteLLM for a fuller AI stack.
- Choose a backend: local Ollama, LiteLLM gateway, or external API provider.
- Run Open WebUI with a persistent `/app/backend/data` volume.
- Configure environment variables for the provider or Ollama/LiteLLM endpoint.
- Create the first admin user and review signup permissions.
- Put HTTPS in front if a team will access it from the internet.
Backup:Back up the backend data volume and database if you move to PostgreSQL.
Copy and run on your server
Use each block separately: save the compose file, or copy the bash script to create it and start the container.
docker-compose.ymlyaml
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- ./data:/app/backend/data
ports:
- "3000:8080"
environment:
WEBUI_AUTH: "true"
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/open-webui
sudo chown "$USER":"$USER" /opt/open-webui
cd /opt/open-webui
cat > docker-compose.yml <<'COMPOSE'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- ./data:/app/backend/data
ports:
- "3000:8080"
environment:
WEBUI_AUTH: "true"
restart: unless-stopped
COMPOSE
docker compose up -d
echo "Open WebUI is running on http://SERVER_IP:3000"Stack
PythonSvelteSQLite/PostgreSQLDocker