Why Open WebUI deployments fail on small VPS plans

Open WebUI is straightforward to run, but many users hit the same issues: container boot loops, memory pressure, and reverse-proxy misconfiguration. This guide focuses on a stable setup plus quick troubleshooting.

Recommended VPS Specifications

  • CPU: 2 vCPU minimum
  • RAM: 4GB minimum (8GB for multi-user use)
  • Storage: 40GB+ SSD
  • OS: Ubuntu 22.04/24.04 LTS
  • Runtime: Docker Engine + Compose plugin

A Cloud VPS gives you enough headroom for Open WebUI plus model/provider integrations.

Step 1: Install Docker (if needed)

>sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu   $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Step 2: Run Open WebUI

>docker run -d   --name open-webui   -p 3000:8080   --restart unless-stopped   -v open-webui:/app/backend/data   ghcr.io/open-webui/open-webui:main

Step 3: Add reverse proxy + SSL

>sudo apt install -y nginx certbot python3-certbot-nginx
>sudo nano /etc/nginx/sites-available/open-webui
>server {
  listen 80;
  server_name chat.example.com;

  client_max_body_size 20m;

  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}
>sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d chat.example.com

Troubleshooting: most common failures

1) Container keeps restarting

>docker ps -a
docker logs --tail=200 open-webui

Usually caused by low memory or stale volume data. On low-memory instances, add swap and restart.

2) Site loads but model calls fail

Check provider keys and network egress. If using local model backends, confirm reachable host/port and timeout settings.

3) 502/504 from Nginx

Verify container listens on >3000:8080 and proxy points to >127.0.0.1:3000.

Maintenance commands

>docker pull ghcr.io/open-webui/open-webui:main
docker stop open-webui && docker rm open-webui
# rerun the docker run command above

Security baseline

  • Expose only 80/443 publicly (keep container ports private)
  • Use HTTPS only
  • Enable regular backups of >open-webui volume data

For teams, use a larger Cloud VPS to avoid memory bottlenecks during peak use.

Security lockdown (important)

Do not expose OpenClaw wide open on the public internet. Use a reverse proxy, TLS, and firewall restrictions. Follow our hardening guide: OpenClaw Security Lockdown: Safe Internet Exposure Guide.