🌍 Global Mirror — Visit original CN site →
Skip to main content

Updating Open WebUI

Overview​

Keeping Open WebUI updated ensures you have the latest features, security patches, and bug fixes. You can update manually or automate the process using container update tools.

Before Updating
  • Backup your data — especially before releases that include database migrations, since they can be hard to undo. Check release notes for breaking changes
  • Clear browser cache after updating (Ctrl+F5 / Cmd+Shift+R)
  • Multiple workers/replicas? Run migrations with UVICORN_WORKERS=1 first, or set ENABLE_DB_MIGRATIONS=False on all but one instance

Manual Update​

# 1. Stop and remove the container (data in the volume is preserved)
docker rm -f open-webui

# 2. Pull the latest image
docker pull ghcr.io/open-webui/open-webui:main

# 3. Recreate the container
docker run -d -p 3000:8080 \
-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 NVIDIA GPU support, add --gpus all to the docker run command.

Set WEBUI_SECRET_KEY to avoid logout on every update

Without a persistent WEBUI_SECRET_KEY, a new key is generated each time the container is recreated, invalidating all sessions. Generate one with openssl rand -hex 32 and keep it across updates.

Pinning a Version​

By default the :main tag always points to the latest build. For production, pin a specific release:

ghcr.io/open-webui/open-webui:v0.8.5
ghcr.io/open-webui/open-webui:v0.8.5-cuda
ghcr.io/open-webui/open-webui:v0.8.5-ollama

Rolling Back​

If an update causes problems, pin the previous version:

docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:v0.8.3
docker run -d -p 3000:8080 -v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY="your-secret-key" \
--name open-webui ghcr.io/open-webui/open-webui:v0.8.3

Automated Updates​

warning

Automated updates can break your deployment if a release includes breaking changes or migration issues. Review release notes before auto-updating production systems, and always have a backup.

Choosing a Tool​

FeatureWatchtowerWUDDiun
Auto-updates containers✅❌ (manual via UI)❌
Web interface❌✅❌
Notifications✅✅✅
Docker 29+✅ (forks)✅✅
Resource usageLowMediumVery Low
Best forHomelabsVisual monitoringNotification-only
Recommendation
  • For homelabs/personal use: nicholas-fedor/watchtower (automated)
  • For managed environments: WUD (visual + manual control)
  • For production/critical systems: Diun (notifications only) + manual updates

Watchtower​

The original Watchtower project hasn't received updates in over two years and fails with Docker version 29.0.0 or newer due to API version incompatibility. Two maintained forks are available: nicholas-fedor/watchtower and Marrrrrrrrry/watchtower, both compatible with Docker 29+.

One-time update:

docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower --run-once open-webui

Continuous (check every 6 hours):

docker run -d --name watchtower --restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower --interval 21600 open-webui

Set WATCHTOWER_CLEANUP=true to auto-remove old images. See Watchtower docs for scheduling, notifications, and monitor-only mode.

What's Up Docker (WUD)​

Web UI for monitoring container updates and triggering them manually. See WUD documentation for setup.

Diun​

Notification-only — alerts you when updates are available (email, Slack, Discord, Telegram, etc.) without touching your containers.

docker-compose.yml
services:
diun:
image: crazymax/diun:latest
container_name: diun
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data:/data
environment:
- TZ=America/New_York
- LOG_LEVEL=info
- DIUN_WATCH_WORKERS=10
- DIUN_WATCH_SCHEDULE=0 */6 * * * # Every 6 hours
- DIUN_PROVIDERS_DOCKER=true
- DIUN_NOTIF_MAIL_HOST=smtp.gmail.com
- DIUN_NOTIF_MAIL_PORT=587
- DIUN_NOTIF_MAIL_USERNAME=your-email@gmail.com
- DIUN_NOTIF_MAIL_PASSWORD=your-app-password
- DIUN_NOTIF_MAIL_FROM=your-email@gmail.com
- DIUN_NOTIF_MAIL_TO=your-email@gmail.com
restart: unless-stopped

See Diun documentation for full setup and notification options.


Backup & Restore​

All data (chats, users, uploads) lives in the open-webui Docker volume.

Backup:

docker run --rm -v open-webui:/data -v $(pwd):/backup \
alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /data

Restore:

docker stop open-webui
docker run --rm -v open-webui:/data -v $(pwd):/backup \
alpine sh -c "rm -rf /data/* && tar xzf /backup/openwebui-20250216.tar.gz -C /"
docker start open-webui

For database-specific recovery, see the Manual Database Migration guide.