How to Run Private ChatGPT on Your Server with Open WebUI

Open WebUI + Ollama gives you a private ChatGPT interface on your server. Your data never leaves. We walk through installation step by step on a Saudi server.
What Is Open WebUI?
Open WebUI is an open-source web interface for running AI models locally. It provides an experience similar to ChatGPT but on your own server — your data never leaves the server, there are no monthly subscriptions, and the number of users is unlimited.
Open WebUI integrates with Ollama to run models like Llama 3, Mistral, Qwen, and others. Every conversation is saved locally, users are managed through an admin dashboard, and the system supports RAG for uploading documents and answering questions from them directly.
Why a Saudi Server?
- data protection and localization: Your conversations and documents stay in Riyadh or Jeddah
- PDPL and NCA compliance: Data never leaves the Kingdom
- Low latency: very low latency from anywhere in Saudi Arabia
- No third party: Neither OpenAI nor Google sees your data
Requirements
Minimum (Small Team, 5-10 Users)
| Component | Specifications |
|---|---|
| CPU | 4 vCPU |
| RAM | 8 GB |
| Storage | 40 GB SSD |
| OS | Ubuntu 22.04 / 24.04 |
| Model | Llama 3 8B Q4 (needs 4.7 GB) |
This corresponds to the Business plan from CLOUD (cloud.net.sa) — competitive pricing — pricing and plans.
Recommended (Medium Team, 20-50 Users)
| Component | Specifications |
|---|---|
| CPU | 8 vCPU |
| RAM | 16 GB |
| Storage | 80 GB SSD |
| OS | Ubuntu 22.04 / 24.04 |
| Model | Llama 3 8B Q8 or Mistral 7B Q8 |
This corresponds to the Enterprise plan — competitive pricing — pricing and plans with storage upgrade.
Complete Step-by-Step Installation
Step 1: Update the System
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git
Step 2: Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
Step 3: Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
Verify the installation:
ollama --version
Step 4: Download a Model
# Llama 3 8B — best balance between quality and performance
ollama pull llama3.1:8b
# Or Mistral 7B — excellent for English
ollama pull mistral:7b
# Or Qwen 2.5 7B — best for Arabic
ollama pull qwen2.5:7b
Step 5: Run Open WebUI
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
--add-host=host.docker.internal:host-gateway \
ghcr.io/open-webui/open-webui:main
Step 6: Configure Nginx as Reverse Proxy
sudo apt install -y nginx certbot python3-certbot-nginx
sudo cat > /etc/nginx/sites-available/open-webui << 'EOF'
server {
listen 80;
server_name ai.yourdomain.com;
location / {
proxy_pass http://localhost: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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
}
client_max_body_size 50M;
}
EOF
sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Step 7: SSL Certificate
sudo certbot --nginx -d ai.yourdomain.com
Initial Configuration
1. Create Admin Account
Open https://ai.yourdomain.com in your browser. The first user to register becomes the admin automatically.
2. Security Settings
From the admin dashboard:
- Disable public registration — do not allow anyone to sign up
- Enable email verification — confirm user identities
- Restrict available models — choose which models the team can use
3. Add Users
Add your team members manually from the admin panel. For each user, specify:
- Name and email
- Role (regular user or admin)
- Allowed models
Enable RAG (Document Search)
RAG allows users to upload documents (PDF, Word, text) and ask questions about their content:
RAG Setup
- From settings, enable the Documents feature
- Upload your documents (policies, guides, contracts)
- Choose an embedding model (nomic-embed-text works great locally)
ollama pull nomic-embed-text
Usage Example
Upload your employee handbook as PDF. Ask: "What is the annual leave policy?" — the system searches the document and answers based on its actual content.
Monitoring and Maintenance
Monitor Resource Usage
# CPU and memory usage
docker stats open-webui
# Storage space
du -sh /var/lib/docker/volumes/open-webui/
Backup
# Back up Open WebUI data
docker cp open-webui:/app/backend/data ./backup-$(date +%Y%m%d)
# Back up Ollama models
tar -czf ollama-models-$(date +%Y%m%d).tar.gz /usr/share/ollama/.ollama/models/
Update
docker pull ghcr.io/open-webui/open-webui:main
docker stop open-webui
docker rm open-webui
# Re-run the command from Step 5 — data is preserved in the Volume
Troubleshooting
| Problem | Likely Cause | Solution |
|---|---|---|
| Very slow responses | Insufficient memory | Add RAM or use a smaller model (Q4 instead of Q8) |
| Ollama connection error | Docker cannot reach Ollama | Check OLLAMA_BASE_URL and host.docker.internal |
| Model fails to load | Insufficient storage | Add SSD or remove unused models |
| Site does not open | Nginx or SSL | Check: sudo nginx -t and sudo systemctl status nginx |
Next Steps
Open WebUI on a Saudi server from CLOUD (cloud.net.sa) gives you a private ChatGPT without monthly subscriptions and without privacy concerns. The template is ready for one-click installation — choose your plan, add the Open WebUI template, and start in minutes.
Get Started
Ready to run AI on your own server? Explore AI hosting solutions or configure your server with the specs you need.


