{"id":164424,"date":"2026-03-25T04:03:44","date_gmt":"2026-03-25T01:03:44","guid":{"rendered":"https:\/\/computingforgeeks.com\/install-open-webui-ollama-linux\/"},"modified":"2026-03-25T04:03:44","modified_gmt":"2026-03-25T01:03:44","slug":"install-open-webui-ollama-linux","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/install-open-webui-ollama-linux\/","title":{"rendered":"Install Open WebUI with Ollama on Linux"},"content":{"rendered":"\n<p>Running your own ChatGPT-like interface on hardware you control is no longer a weekend project for tinkerers. <a href=\"https:\/\/github.com\/open-webui\/open-webui\" target=\"_blank\" rel=\"noreferrer noopener\">Open WebUI<\/a> (formerly Ollama WebUI) has crossed 124,000 GitHub stars and 282 million Docker pulls because it makes self-hosted AI chat feel polished. You get conversation history, model switching, document uploads for RAG, admin controls, and a responsive interface that works on mobile.<\/p>\n\n\n\n<p>This guide walks through deploying Open WebUI with <a href=\"https:\/\/computingforgeeks.com\/install-ollama-rocky-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ollama<\/a> as the backend on Ubuntu 24.04, including Docker Compose setup, SSL with Nginx and Let&#8217;s Encrypt, and a full walkthrough of the admin interface. If you already have Ollama running from our <a href=\"https:\/\/computingforgeeks.com\/install-ollama-rocky-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ollama installation guide<\/a>, you can skip straight to the Docker Compose section.<\/p>\n\n\n\n<p><em>Tested <strong>March 2026<\/strong> on Ubuntu 24.04.2 LTS with Open WebUI 0.8.10, Ollama 0.18.2, Docker 29.3.0, Gemma 3 4B\/1B<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ubuntu 24.04 LTS server (Debian 13 also works)<\/li>\n\n<li>Minimum 4 GB RAM for small models (1B-3B), 8 GB or more for 7B models<\/li>\n\n<li>10 GB free disk for Docker images and model data<\/li>\n\n<li>Root or sudo access<\/li>\n\n<li>A domain name pointed to your server (for SSL)<\/li>\n\n<li>(Optional) NVIDIA GPU for faster inference<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Install Docker and Docker Compose<\/h2>\n\n\n\n<p>Open WebUI ships as a Docker container, so Docker is the only hard dependency. If you already have Docker installed, skip to the next section. For a more detailed walkthrough, see our guide on <a href=\"https:\/\/computingforgeeks.com\/install-docker-compose-ubuntu-debian\/\" target=\"_blank\" rel=\"noreferrer noopener\">installing Docker and Docker Compose on Ubuntu 24.04<\/a>.<\/p>\n\n\n\n<p>Add Docker&#8217;s official GPG key and repository:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\nsudo apt-get install -y ca-certificates curl gnupg\nsudo install -m 0755 -d \/etc\/apt\/keyrings\ncurl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.gpg\necho \"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<\/code><\/pre>\n\n\n\n<p>Install Docker Engine and the Compose plugin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n\n\n\n<p>Verify the installation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker --version\ndocker compose version<\/code><\/pre>\n\n\n\n<p>You should see Docker 29.x and Compose v5.x confirmed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Docker version 29.3.0, build 5927d80\nDocker Compose version v5.1.1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Install Ollama<\/h2>\n\n\n\n<p>Ollama handles model management and inference. The official install script downloads the binary, creates the <code>ollama<\/code> system user, and sets up a systemd service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/ollama.com\/install.sh | sh<\/code><\/pre>\n\n\n\n<p>The installer finishes with a confirmation message showing the API is available on port 11434:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>>>> The Ollama API is now available at 127.0.0.1:11434.\n>>> Install complete. Run \"ollama\" from the command line.<\/code><\/pre>\n\n\n\n<p>Confirm Ollama is running:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama --version\nsystemctl status ollama --no-pager<\/code><\/pre>\n\n\n\n<p>The service should show active (running):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama version is 0.18.2\n\u25cf ollama.service - Ollama Service\n     Loaded: loaded (\/etc\/systemd\/system\/ollama.service; enabled; preset: enabled)\n     Active: active (running) since Wed 2026-03-25 00:24:20 UTC; 7s ago\n   Main PID: 3247 (ollama)\n      Tasks: 8 (limit: 4658)\n     Memory: 43.2M (peak: 53.4M)\n        CPU: 118ms\n     CGroup: \/system.slice\/ollama.service\n             \u2514\u25003247 \/usr\/local\/bin\/ollama serve<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pull a Model<\/h3>\n\n\n\n<p>Pull at least one model before starting Open WebUI. Gemma 3 4B from Google is a good starting point for systems with 8 GB or more RAM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama pull gemma3:4b<\/code><\/pre>\n\n\n\n<p>For servers with only 4 GB of RAM (or less free memory after Docker overhead), the 1B variant runs comfortably:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama pull gemma3:1b<\/code><\/pre>\n\n\n\n<p>Verify the downloaded models:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama list<\/code><\/pre>\n\n\n\n<p>The output shows model names, sizes, and last modified dates:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAME         ID              SIZE      MODIFIED\ngemma3:1b    8648f39daa8f    815 MB    11 seconds ago\ngemma3:4b    a2af6cc3eb7f    3.3 GB    24 minutes ago<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Configure Ollama for Docker Access<\/h3>\n\n\n\n<p>By default, Ollama listens only on 127.0.0.1. Docker containers use a bridge network and cannot reach localhost on the host. You need Ollama to listen on all interfaces so the Open WebUI container can connect:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/etc\/systemd\/system\/ollama.service.d\necho -e '[Service]\\nEnvironment=\"OLLAMA_HOST=0.0.0.0:11434\"' | sudo tee \/etc\/systemd\/system\/ollama.service.d\/override.conf\nsudo systemctl daemon-reload\nsudo systemctl restart ollama<\/code><\/pre>\n\n\n\n<p>Quick test to confirm Ollama responds on all interfaces:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:11434\/api\/tags | python3 -m json.tool<\/code><\/pre>\n\n\n\n<p>This returns a JSON list of your downloaded models.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy Open WebUI with Docker Compose<\/h2>\n\n\n\n<p>Create a project directory and a <code>docker-compose.yml<\/code> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/open-webui\nvi ~\/open-webui\/docker-compose.yml<\/code><\/pre>\n\n\n\n<p>Add the following configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  open-webui:\n    image: ghcr.io\/open-webui\/open-webui:main\n    container_name: open-webui\n    ports:\n      - \"3000:8080\"\n    environment:\n      - OLLAMA_BASE_URL=http:\/\/host.docker.internal:11434\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n    volumes:\n      - open-webui-data:\/app\/backend\/data\n    restart: unless-stopped\n\nvolumes:\n  open-webui-data:<\/code><\/pre>\n\n\n\n<p>A few things worth noting in this compose file. The <code>OLLAMA_BASE_URL<\/code> environment variable tells Open WebUI where to find the Ollama API. The <code>extra_hosts<\/code> directive maps <code>host.docker.internal<\/code> to the host machine&#8217;s IP, which is how the container reaches Ollama running on the host. The named volume <code>open-webui-data<\/code> persists your chat history, user accounts, and settings across container restarts.<\/p>\n\n\n\n<p>Start the container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/open-webui\nsudo docker compose up -d<\/code><\/pre>\n\n\n\n<p>The first pull downloads about 1.5 GB. Check that the container is healthy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker ps --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}'<\/code><\/pre>\n\n\n\n<p>After 30 to 60 seconds, the status should show &#8220;healthy&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAMES        STATUS                    PORTS\nopen-webui   Up 43 seconds (healthy)   0.0.0.0:3000->8080\/tcp, [::]:3000->8080\/tcp<\/code><\/pre>\n\n\n\n<p>Open WebUI is now accessible on port 3000. For quick local testing, visit <code>http:\/\/your-server-ip:3000<\/code>. The next section covers proper SSL setup for production use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configure SSL with Nginx Reverse Proxy<\/h2>\n\n\n\n<p>Production deployments need HTTPS. This section sets up Nginx as a reverse proxy with a free Let&#8217;s Encrypt certificate. You need a domain or subdomain pointed to your server&#8217;s public IP.<\/p>\n\n\n\n<p>Install Nginx and Certbot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y nginx certbot<\/code><\/pre>\n\n\n\n<p>Stop Nginx temporarily so Certbot can bind to port 80 for domain verification:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl stop nginx\nsudo certbot certonly --standalone -d openwebui.example.com --non-interactive --agree-tos -m your-email@example.com<\/code><\/pre>\n\n\n\n<p>Replace <code>openwebui.example.com<\/code> with your actual domain. Once the certificate is issued, create the Nginx configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo vi \/etc\/nginx\/sites-available\/open-webui<\/code><\/pre>\n\n\n\n<p>Add the following server blocks:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 443 ssl http2;\n    server_name openwebui.example.com;\n\n    ssl_certificate \/etc\/letsencrypt\/live\/openwebui.example.com\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/openwebui.example.com\/privkey.pem;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers HIGH:!aNULL:!MD5;\n\n    client_max_body_size 50M;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_read_timeout 300s;\n    }\n}\n\nserver {\n    listen 80;\n    server_name openwebui.example.com;\n    return 301 https:\/\/$host$request_uri;\n}<\/code><\/pre>\n\n\n\n<p>The WebSocket headers (<code>Upgrade<\/code> and <code>Connection<\/code>) are important because Open WebUI uses WebSockets for streaming chat responses. The <code>proxy_read_timeout 300s<\/code> setting prevents Nginx from closing the connection during slow CPU inference. The <code>client_max_body_size 50M<\/code> allows document uploads for the RAG feature.<\/p>\n\n\n\n<p>Enable the site and restart Nginx:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ln -sf \/etc\/nginx\/sites-available\/open-webui \/etc\/nginx\/sites-enabled\/\nsudo rm -f \/etc\/nginx\/sites-enabled\/default\nsudo nginx -t\nsudo systemctl start nginx\nsudo systemctl enable nginx<\/code><\/pre>\n\n\n\n<p>Verify SSL is working:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sI https:\/\/openwebui.example.com | head -3<\/code><\/pre>\n\n\n\n<p>A successful response shows HTTP 200 with the nginx server header:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP\/2 200\nserver: nginx\/1.24.0 (Ubuntu)\ncontent-type: text\/html; charset=utf-8<\/code><\/pre>\n\n\n\n<p>Verify certificate auto-renewal is configured:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo certbot renew --dry-run<\/code><\/pre>\n\n\n\n<p>Open your firewall for HTTPS traffic if you have UFW enabled:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 'Nginx Full'\nsudo ufw status<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Create Your Admin Account<\/h2>\n\n\n\n<p>Open <code>https:\/\/openwebui.example.com<\/code> in your browser. The first screen you see is the Open WebUI welcome page with a &#8220;Get Started&#8221; button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-welcome-page.png\" alt=\"Open WebUI welcome page with Get Started button\" class=\"wp-image-164415\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-welcome-page.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-welcome-page-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-welcome-page-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-welcome-page-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-welcome-page-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Click &#8220;Get Started&#8221; to reach the sign-in form. Since this is a fresh installation, the first account you create automatically becomes the administrator. Click &#8220;Sign up&#8221; if shown, or fill in the sign-in form with your email and a strong password.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-signin-page.png\" alt=\"Open WebUI sign in page with email and password fields\" class=\"wp-image-164416\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-signin-page.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-signin-page-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-signin-page-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-signin-page-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-signin-page-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>After signing in, the main chat interface loads with your Ollama models already detected. The interface is clean and familiar if you have used ChatGPT before.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Using the Chat Interface<\/h2>\n\n\n\n<p>The main chat screen shows your selected model at the top, a prompt input at the bottom, and suggested conversation starters in the center. The sidebar provides access to chat history, search, and workspace features.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-interface.png\" alt=\"Open WebUI main chat interface with Gemma 3 4B model selected\" class=\"wp-image-164417\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-interface.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-interface-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-interface-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-interface-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-interface-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Click the model name at the top left to switch between models. The dropdown shows all models available on your Ollama server, including their parameter counts. You can also search for models or filter by local vs. remote.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-model-selector-dropdown.png\" alt=\"Open WebUI model selection dropdown showing Gemma 3 4B with 4.3B parameters\" class=\"wp-image-164418\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-model-selector-dropdown.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-model-selector-dropdown-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-model-selector-dropdown-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-model-selector-dropdown-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-model-selector-dropdown-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Type a prompt and press Enter to chat. The model generates a response with markdown formatting, code blocks, and follow-up suggestions. On CPU inference, responses take 10 to 60 seconds depending on model size and prompt length.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-response-docker.png\" alt=\"Open WebUI chat showing a conversation with Gemma 3 model explaining Docker\" class=\"wp-image-164419\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-response-docker.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-response-docker-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-response-docker-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-response-docker-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-chat-response-docker-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Admin Panel Walkthrough<\/h2>\n\n\n\n<p>The admin panel is where you manage users, configure Ollama connections, and adjust system-wide settings. Access it from the top menu bar. These pages are only visible to admin accounts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Admin Settings<\/h3>\n\n\n\n<p>The Settings page controls general behavior, authentication policies, default user roles, and feature toggles. You can set a custom signup title, enable or disable new user registration, configure LDAP, and toggle community sharing.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-settings-general.png\" alt=\"Open WebUI admin settings showing general configuration and authentication options\" class=\"wp-image-164420\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-settings-general.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-settings-general-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-settings-general-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-settings-general-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-settings-general-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Connections<\/h3>\n\n\n\n<p>The Connections page shows your configured API endpoints. By default, Open WebUI connects to Ollama using the URL you specified in <code>OLLAMA_BASE_URL<\/code>. You can also add OpenAI-compatible API endpoints here if you want to combine local models with cloud APIs like OpenAI or Anthropic.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-connections-ollama.png\" alt=\"Open WebUI connections page showing Ollama API and OpenAI API configuration\" class=\"wp-image-164421\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-connections-ollama.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-connections-ollama-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-connections-ollama-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-connections-ollama-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-connections-ollama-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">User Management<\/h3>\n\n\n\n<p>The Users page lists all registered accounts with their roles, email addresses, and last activity timestamps. From here you can change user roles (Admin, User, Pending), edit accounts, or disable users. The first account created is always an admin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-users-panel.png\" alt=\"Open WebUI admin panel showing user management with admin account\" class=\"wp-image-164422\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-users-panel.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-users-panel-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-users-panel-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-users-panel-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-admin-users-panel-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Workspace<\/h3>\n\n\n\n<p>The Workspace area lets you create custom models (with system prompts and parameter overrides), manage knowledge bases for RAG, create prompt templates, and install community tools and skills. The Models tab shows custom model configurations, while the Knowledge tab lets you upload documents for retrieval-augmented generation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-workspace-models.png\" alt=\"Open WebUI workspace showing models, knowledge, prompts, skills, and tools sections\" class=\"wp-image-164423\" width=\"1024\" height=\"502\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-workspace-models.png 1920w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-workspace-models-300x147.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-workspace-models-1024x502.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-workspace-models-768x376.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/03\/open-webui-workspace-models-1536x753.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Connect to a Remote Ollama Server<\/h2>\n\n\n\n<p>If Ollama runs on a different machine (for example, a GPU server), point Open WebUI to it by changing the <code>OLLAMA_BASE_URL<\/code> environment variable in your Docker Compose file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    environment:\n      - OLLAMA_BASE_URL=http:\/\/192.168.1.100:11434<\/code><\/pre>\n\n\n\n<p>On the remote Ollama server, make sure it listens on all interfaces. Create a systemd override:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/etc\/systemd\/system\/ollama.service.d\necho -e '[Service]\\nEnvironment=\"OLLAMA_HOST=0.0.0.0:11434\"' | sudo tee \/etc\/systemd\/system\/ollama.service.d\/override.conf\nsudo systemctl daemon-reload\nsudo systemctl restart ollama<\/code><\/pre>\n\n\n\n<p>Open the firewall on the Ollama server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 11434\/tcp<\/code><\/pre>\n\n\n\n<p>Restart the Open WebUI container to pick up the new URL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/open-webui\nsudo docker compose down\nsudo docker compose up -d<\/code><\/pre>\n\n\n\n<p>You can also change the Ollama URL directly in the admin panel under Settings > Connections without modifying the compose file. The admin UI makes it easy to add multiple Ollama backends or mix local and cloud APIs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GPU Acceleration with NVIDIA<\/h2>\n\n\n\n<p>If your server has an NVIDIA GPU, Ollama automatically uses it after you install the NVIDIA drivers. This dramatically speeds up inference, especially for larger models.<\/p>\n\n\n\n<p>Install the NVIDIA driver on Ubuntu 24.04:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ubuntu-drivers install\nsudo reboot<\/code><\/pre>\n\n\n\n<p>After reboot, verify the GPU is detected:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvidia-smi<\/code><\/pre>\n\n\n\n<p>Restart Ollama to pick up the GPU:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart ollama\nollama ps<\/code><\/pre>\n\n\n\n<p>The <code>ollama ps<\/code> output shows the GPU percentage used by loaded models. With GPU acceleration, a 7B model responds in 2 to 5 seconds instead of 30 to 60 seconds on CPU.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Useful Docker Compose Variations<\/h2>\n\n\n\n<p>The basic compose file works for most setups. Here are some common variations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Open WebUI with Bundled Ollama<\/h3>\n\n\n\n<p>If you want everything in Docker without a host-level Ollama installation, use the bundled image:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  open-webui:\n    image: ghcr.io\/open-webui\/open-webui:ollama\n    container_name: open-webui\n    ports:\n      - \"3000:8080\"\n    volumes:\n      - open-webui-data:\/app\/backend\/data\n      - ollama-data:\/root\/.ollama\n    restart: unless-stopped\n\nvolumes:\n  open-webui-data:\n  ollama-data:<\/code><\/pre>\n\n\n\n<p>This image bundles Ollama inside the Open WebUI container. The trade-off is a larger container and less control over Ollama configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">With NVIDIA GPU Passthrough in Docker<\/h3>\n\n\n\n<p>For GPU inference inside Docker, install the <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/install-guide.html\" target=\"_blank\" rel=\"noreferrer noopener\">NVIDIA Container Toolkit<\/a> first, then add GPU resources to the compose file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  ollama:\n    image: ollama\/ollama\n    container_name: ollama\n    ports:\n      - \"11434:11434\"\n    volumes:\n      - ollama-data:\/root\/.ollama\n    deploy:\n      resources:\n        reservations:\n          devices:\n            - capabilities: [gpu]\n    restart: unless-stopped\n\n  open-webui:\n    image: ghcr.io\/open-webui\/open-webui:main\n    container_name: open-webui\n    ports:\n      - \"3000:8080\"\n    environment:\n      - OLLAMA_BASE_URL=http:\/\/ollama:11434\n    volumes:\n      - open-webui-data:\/app\/backend\/data\n    depends_on:\n      - ollama\n    restart: unless-stopped\n\nvolumes:\n  ollama-data:\n  open-webui-data:<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Upgrading Open WebUI<\/h2>\n\n\n\n<p>Open WebUI releases frequently. To upgrade to the latest version:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/open-webui\nsudo docker compose pull\nsudo docker compose up -d<\/code><\/pre>\n\n\n\n<p>Your data persists in the named volume, so upgrades do not affect chat history, user accounts, or settings.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Error: &#8220;model requires more system memory (4.0 GiB) than is available&#8221;<\/h3>\n\n\n\n<p>We hit this on a 4 GB RAM server when trying to load the gemma3:4b model (4.3 billion parameters). The model itself needs about 3.3 GB in memory, and after Docker, Ollama, and the OS take their share, there is not enough left.<\/p>\n\n\n\n<p>The fix is to use a smaller model. Gemma 3 1B runs well on servers with 4 GB RAM. For 7B models, plan for at least 8 GB of total system RAM, or better yet, 16 GB.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama pull gemma3:1b<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Open WebUI Cannot Connect to Ollama<\/h3>\n\n\n\n<p>If the Connections page shows a red status or models do not appear, check these three things:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ollama must be listening on 0.0.0.0, not just 127.0.0.1. Check with <code>ss -tlnp | grep 11434<\/code><\/li>\n\n<li>The <code>OLLAMA_BASE_URL<\/code> in Docker Compose must use <code>http:\/\/host.docker.internal:11434<\/code> (not localhost)<\/li>\n\n<li>The <code>extra_hosts<\/code> directive with <code>host-gateway<\/code> must be present in the compose file<\/li>\n<\/ul>\n\n\n\n<p>Test from inside the container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker exec open-webui curl -s http:\/\/host.docker.internal:11434\/api\/tags<\/code><\/pre>\n\n\n\n<p>If this returns an empty response or an error, Ollama is not reachable from the container.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Container Stays Unhealthy<\/h3>\n\n\n\n<p>Open WebUI needs 30 to 60 seconds to initialize its database and run migrations on first start. Check the logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker logs open-webui --tail 50<\/code><\/pre>\n\n\n\n<p>If you see repeated database migration lines, the startup is still in progress. If you see Python errors, the container may need more memory. Open WebUI itself needs about 500 MB of RAM to run.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Open WebUI RAM Requirements<\/h2>\n\n\n\n<p>The total RAM you need depends on which model you plan to run. Open WebUI and Docker together use about 1 GB. The rest goes to the LLM.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Model<\/th><th>Model RAM<\/th><th>Total System RAM Needed<\/th><\/tr><\/thead><tbody><tr><td>gemma3:1b<\/td><td>~1 GB<\/td><td>4 GB<\/td><\/tr><tr><td>gemma3:4b<\/td><td>~3.3 GB<\/td><td>8 GB<\/td><\/tr><tr><td>llama3.1:8b<\/td><td>~4.7 GB<\/td><td>8 GB (16 GB recommended)<\/td><\/tr><tr><td>deepseek-r1:8b<\/td><td>~4.9 GB<\/td><td>8 GB (16 GB recommended)<\/td><\/tr><tr><td>llama3.1:70b<\/td><td>~40 GB<\/td><td>64 GB (or GPU with 48 GB VRAM)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>With a GPU, the model loads into VRAM instead of system RAM. A single NVIDIA RTX 4090 (24 GB VRAM) comfortably runs any 7B or 13B model.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Open WebUI Can Do Beyond Basic Chat<\/h2>\n\n\n\n<p>Open WebUI is more than a chat wrapper. A few features worth exploring after your initial setup:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RAG (Retrieval-Augmented Generation)<\/strong> &#8211; Upload PDFs, text files, or web pages into a knowledge base. The model answers questions using your documents as context, which is useful for internal wikis or documentation<\/li>\n\n<li><strong>Multi-model conversations<\/strong> &#8211; Switch models mid-conversation or compare responses from different models side by side<\/li>\n\n<li><strong>Custom model presets<\/strong> &#8211; Create model configurations with specific system prompts, temperature settings, and parameter overrides. A &#8220;Code Review&#8221; preset could use a low temperature with a system prompt focused on code analysis<\/li>\n\n<li><strong>Web search integration<\/strong> &#8211; Connect to SearXNG or other search engines to let the model access current information<\/li>\n\n<li><strong>Image generation<\/strong> &#8211; Integrate with Stable Diffusion or DALL-E for image generation within the chat<\/li>\n\n<li><strong>Multi-user with role-based access<\/strong> &#8211; Create user accounts with different permission levels, useful for teams sharing a single deployment<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Running your own ChatGPT-like interface on hardware you control is no longer a weekend project for tinkerers. Open WebUI (formerly Ollama WebUI) has crossed 124,000 GitHub stars and 282 million Docker pulls because it makes self-hosted AI chat feel polished. You get conversation history, model switching, document uploads for RAG, admin controls, and a responsive &#8230; <a title=\"Install Open WebUI with Ollama on Linux\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/install-open-webui-ollama-linux\/\" aria-label=\"Read more about Install Open WebUI with Ollama on Linux\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":164425,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39034,299,50,81],"tags":[],"class_list":["post-164424","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-how-to","category-linux-tutorials","category-ubuntu"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/164424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=164424"}],"version-history":[{"count":0,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/164424\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/164425"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=164424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=164424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=164424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}