Updating Open WebUI on a Windows VPS Without Losing Chats
A safe, repeatable way to upgrade Open WebUI on your Windows Server VPS over RDP and PowerShell—backing up your data volume first so chats, users, and settings survive the update.
Open WebUI ships new releases frequently, and keeping current means better model support, bug fixes, and security patches. The catch administrators worry about is simple: will an update wipe my chats, accounts, and settings? On a correctly configured install it will not—because that data lives outside the container that you replace. This guide walks through a safe update on a Windows Server VPS, driven entirely from an RDP session and PowerShell.
Where Open WebUI actually stores your data
The most common deployment on Windows uses Docker Desktop (or Docker Engine) with Open WebUI running as a container. All persistent state—chat history, user accounts, prompts, documents, and configuration—lives in a single directory inside the container at /app/backend/data. If you launched the container with a named volume mapped to that path, your data survives independently of the image.
A typical run command looks like this:
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
Here open-webui is a named Docker volume. Updating replaces the image, not the volume—so the golden rule is: never delete the volume. If you instead ran Open WebUI with pip, your data sits in a DATA_DIR folder on disk; the same principle applies—leave that folder alone.
Step 1: Connect and confirm your setup
Open an RDP session to your VPS, launch PowerShell as Administrator, and confirm what you are running before you touch anything:
docker ps
docker inspect open-webui --format '{{ json .Mounts }}'
The second command shows exactly which volume or host folder is mapped to /app/backend/data. Note the volume name—you will reuse it after the update and verify it in your backup. If the output shows no mount for that path, stop: your data may be trapped inside the container, and you must create a backup before doing anything else.
Step 2: Back up before you upgrade
Even though the volume should persist, a pre-update backup is non-negotiable on a production VPS. Take one every time. This command copies the entire data volume into a timestamped archive in your current directory:
docker run --rm -v open-webui:/data -v ${PWD}:/backup alpine tar czf /backup/open-webui-backup.tar.gz -C /data .
Copy the resulting .tar.gz off the VPS—to object storage or a separate backup disk—so a VPS-level failure cannot take both the server and its backup at once. If you use the pip install, simply zip the DATA_DIR folder instead:
Compress-Archive -Path "$env:USERPROFILE\.open-webui\*" -DestinationPath "open-webui-backup.zip"
Step 3: Pull the new image and recreate the container
With a backup in hand, the update itself is three commands. Pull the latest image, remove the old container (this does not remove the volume), and start a fresh container with the same volume and ports:
docker pull ghcr.io/open-webui/open-webui:main
docker stop open-webui
docker rm open-webui
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
Because the new container mounts the existing open-webui volume, every chat and account reappears. Open WebUI runs any needed database migrations automatically on first start.
A note on image tags
The :main tag tracks the latest build. If you prefer predictable upgrades, pin a specific version tag instead (for example a :v0.x.x release) and bump it deliberately. Pinning lets you reproduce the exact version and makes rollbacks straightforward.
Step 4: Verify, then clean up
Give the container a few seconds, then check it is healthy and watch the startup logs for migration errors:
docker ps
docker logs -f open-webui
Browse to the web interface from your workstation (or locally over RDP) and confirm you can sign in and see your existing chats. Only once you have confirmed everything works should you reclaim disk space from the old image:
docker image prune
Rolling back if something breaks
If the new version misbehaves, stop and remove the container, then start it again from your pinned previous tag—your volume is untouched, so you lose nothing. If the data itself were ever corrupted, restore the archive you made in Step 2 into a fresh volume before starting the container.
Keeping future updates painless
A few habits make this routine on a VPS. Keep a short PowerShell script with your exact run command so you never have to remember the ports and volume name. Schedule the volume backup with Task Scheduler so a recent archive always exists. And read the release notes before major version jumps—occasionally a release changes defaults or requires a configuration tweak. Handled this way, updating Open WebUI becomes a two-minute task you can run confidently over RDP, with your data safely decoupled from the container you replace.
Run this on your own Windows VPS
Spin up a fully managed Windows VPS from WindowsVPS in minutes — full Administrator access over RDP, NVMe storage and global regions.
Related Articles
Ready to deploy your server?
Windows or Linux VPS — up and running in under 60 seconds.