How to Install Open WebUI with Docker: Complete Company AI Chat Setup Guide | FreeLearning365

 

How to Install Open WebUI with Docker: Complete Company AI Chat Setup Guide | FreeLearning365


Part 02 of 15Browser UI SetupDocker IncludedMulti-User ConfigReal ScenariosFreeLearning365

From Zero to Private AI System — Complete Series

Browser Chat UI: Give Every Employee a Private AI Interface — Complete Open WebUI Setup Guide

Your Ollama server is running. Now your employees need a way to actually use it — without touching a terminal. In this part you install Open WebUI with Docker, configure roles for every department, set company branding, create department-specific AI assistants, and turn your private AI server into a polished internal product that the entire company adopts enthusiastically.

By @FreeLearning365Part 02 — Browser UI & Multi-User SetupRead time: ~40 minSkill: Beginner to IntermediateWindows & Linux

"The command line is yours. But your HR manager, your sales executive, your accounts officer — they are not going to open a terminal window. If you want your entire company to use private AI, you need an interface that feels as natural as WhatsApp. Open WebUI is exactly that interface. By the end of this post, every person in your company — regardless of technical ability — will have their own private AI chat portal, branded with your company name, configured for their role, and running entirely on your server."

15
min to deploy
100%
browser based
0
client install needed
5+
UI alternatives covered
What this post covers
  • Why employees need a browser UI
  • What Open WebUI is and how it works
  • Docker installation — Windows & Linux
  • Deploying Open WebUI step by step
  • First login and admin setup
  • Multi-user account management
  • Role-based access control (RBAC)
  • System prompt configuration per role
  • Company branding & customization
  • Department AI assistant scenarios
  • Real chat scenarios — 5 departments
  • Model switching & restriction
  • Document upload & RAG in UI
  • Alternative UI options compared
  • Troubleshooting — 10 real errors
  • Do's, Don'ts, Limitations, SEO & Banner

Section 1 — Why a browser UI is not optional for company adoption

After Part 01, you have a powerful local AI server. But right now it is only accessible through a terminal — and that immediately excludes 90% of your company. The IT developer can use it. The sales manager, HR officer, accounts executive, warehouse supervisor, and customer service team cannot.

This is the adoption gap. Every failed AI initiative in companies hits this wall: technically capable infrastructure that only technical people can access. Open WebUI eliminates that gap entirely.

Real scenario — Dhaka Traders Ltd., Day 1 after Part 01

Kamal, the IT lead, has Ollama running with LLaMA 3.1 8B on the company server. He demonstrates it to the management team by typing commands in a terminal window. The CEO nods politely. The Sales Director asks "how do my executives use this?" Kamal opens a terminal and starts explaining curl commands.

The Sales Director's interest disappears in 10 seconds.

Two days later, after installing Open WebUI, Kamal shows the same group a browser page that looks like a professional chat application — with the company logo, a clean interface, and a simple text box. The Sales Director immediately types a question about last month's top customers.

The AI answers in 8 seconds. The entire room leans forward. Adoption begins.

The lesson: the interface is not a cosmetic concern — it is the primary adoption driver. No UI, no adoption. Good UI, enthusiastic adoption.


Section 2 — What is Open WebUI and how does it connect to Ollama?

Open WebUI (formerly known as Ollama WebUI) is a full-featured, self-hostable web application that provides a polished chat interface on top of your Ollama server. It is open source, actively maintained, and completely free.

It handles everything the raw Ollama API does not — user accounts, conversation history, file uploads, model management, system prompts, custom personas, web search integration, and a plug-in system. Think of it as the "front office" that sits on top of the Ollama "engine room."

How Open WebUI connects to Ollama
// Architecture — what happens when a user sends a message: Employee browser → POST http://your-server:3000/api/chat (Open WebUI frontend) → Open WebUI backend (Python/FastAPI) → Adds system prompt, user context, conversation history → POST http://localhost:11434/api/chat (Ollama API) → Ollama loads model → runs inference → streams response → Open WebUI receives stream → Saves to SQLite conversation database → Forwards stream to employee's browser → Employee sees response appearing token by token // Key point: Ollama handles ONLY model inference // Open WebUI handles everything else: // - Authentication - Conversation history // - User management - Document storage // - System prompts - Usage logging // - File uploads - Model switching UI
Why Docker is the right deployment method

Open WebUI is a Python application with many dependencies. Installing it directly on your server risks version conflicts, breaks when Python is updated, and is harder to maintain. Docker packages the entire application with all its dependencies into a single isolated container — you deploy it with one command, update it with one command, and roll back instantly if anything breaks. For a company server, Docker is the professional standard.


Section 3 — Install Docker: Windows and Linux

Docker on Windows 10/11

1
Enable WSL 2 (Windows Subsystem for Linux)
Docker Desktop on Windows requires WSL 2. Open PowerShell as Administrator and run the command below. This installs the WSL 2 kernel and sets it as default.
2
Download Docker Desktop
Visit docker.com/products/docker-desktop and download the Windows installer. Run it and follow the wizard — it enables the WSL 2 backend automatically.
3
Start Docker Desktop and verify
Launch Docker Desktop from the Start Menu. Wait for the whale icon in the system tray to show "Docker Desktop is running". Then verify in PowerShell.
4
Configure Docker resources
In Docker Desktop → Settings → Resources: allocate at least 4GB RAM and 2 CPUs to containers. Open WebUI itself is lightweight but you want headroom.
PowerShell — WSL2 and Docker verification
# Step 1 — Enable WSL 2 (run as Administrator) wsl --install wsl --set-default-version 2 # After Docker Desktop is installed and running: # Step 3 — Verify Docker is working docker --version # Docker version 26.x.x, build xxxxxxx docker run hello-world # Hello from Docker! # This message shows your installation is working correctly. docker compose version # Docker Compose version v2.x.x

Docker on Ubuntu/Linux

Terminal — Docker installation on Ubuntu 20.04 / 22.04 / 24.04
# Remove any old Docker versions first sudo apt remove docker docker-engine docker.io containerd runc -y # Install prerequisites sudo apt update sudo apt install ca-certificates curl gnupg lsb-release -y # Add Docker's official GPG key 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 sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add Docker repository echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker Engine sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin -y # Add your user to docker group (avoid sudo every time) sudo usermod -aG docker $USER newgrp docker # Verify installation docker --version # Docker version 26.x.x docker run hello-world # Hello from Docker! This message shows your installation appears working. # Enable Docker to start on boot sudo systemctl enable docker sudo systemctl start docker

Section 4 — Deploy Open WebUI: The definitive step-by-step guide

Method A — Quick single command (fastest start)

Terminal / PowerShell — deploy Open WebUI in one command
# If Ollama is running on the SAME machine as Open WebUI: docker run -d \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main # Flags explained: # -d → Run in background (detached mode) # -p 3000:8080 → Map port 3000 on your host to port 8080 in container # --add-host → Allows container to reach host's localhost (Ollama) # -v open-webui:... → Persistent volume for database, uploads, settings # --name open-webui → Give container a name for easy management # --restart always → Auto-restart on server reboot or crash # ghcr.io/... → Pull from GitHub Container Registry # Verify container is running: docker ps # CONTAINER ID IMAGE STATUS PORTS # a1b2c3d4e5f6 open-webui/open-webui Up 2 minutes 0.0.0.0:3000->8080/tcp # Check container logs (watch startup): docker logs -f open-webui # INFO: Application startup complete. # INFO: Uvicorn running on http://0.0.0.0:8080 # Open WebUI is now at: # http://localhost:3000 (from the server itself) # http://192.168.1.100:3000 (from any LAN device)

Method B — Docker Compose (recommended for production)

For a company server that runs long-term, Docker Compose gives you a reproducible, version-controlled configuration that is easy to update, back up, and replicate.

File: /opt/company-ai/docker-compose.yml
version: '3.8' services: open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui restart: always ports: - "3000:8080" # Change 3000 to any available port volumes: - ./data/open-webui:/app/backend/data # Persistent data directory environment: # Ollama connection - OLLAMA_BASE_URL=http://host.docker.internal:11434 # Security — MUST change before going live - WEBUI_SECRET_KEY=your-super-secret-key-change-this-now # Company branding - WEBUI_NAME=Dhaka Traders AI - WEBUI_URL=http://192.168.1.100:3000 # Registration control — disable open signup - ENABLE_SIGNUP=false # Default model for new users - DEFAULT_MODELS=llama3.1:8b # RAG document processing - CHUNK_SIZE=1500 - CHUNK_OVERLAP=100 # Rate limiting per user (optional) - USER_PERMISSIONS_CHAT_FILE_UPLOAD=true - USER_PERMISSIONS_CHAT_WEB_SEARCH=false extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Named volumes for data persistence volumes: open-webui-data:
Terminal — deploy with Docker Compose
# Create the project directory sudo mkdir -p /opt/company-ai/data/open-webui cd /opt/company-ai # Place the docker-compose.yml file above in this directory, then: docker compose up -d # [+] Running 2/2 # ✔ Network company-ai_default Created # ✔ Container open-webui Started # View logs in real time: docker compose logs -f # Stop without losing data: docker compose down # Update to latest version: docker compose pull && docker compose up -d # Restart after config change: docker compose restart open-webui

Section 5 — First login: Admin account setup

Open your browser and navigate to http://localhost:3000. You will see the Open WebUI welcome screen. The first account created automatically becomes the administrator — this is your company IT admin account.

1
Create the admin account
Enter your name, company email address, and a strong password. Click "Get Started". This account has full control over all users, models, and settings. Use a dedicated IT admin email — not a personal email.
2
Verify Ollama connection
After login, click the model selector dropdown in the top-left. If it shows your model names (e.g., "llama3.1:8b"), Ollama is connected. If it shows "No models found", check Section 11 troubleshooting.
3
Disable public registration immediately
Go to Admin Panel → Settings → General. Set "Default User Role" to "Pending". This means all new signups require admin approval before they can log in — essential for a controlled company deployment.
4
Configure the Ollama API URL (if not auto-detected)
Admin Panel → Settings → Connections. Set the Ollama URL to "http://host.docker.internal:11434". Click "Verify Connection" — you should see a green checkmark and model list appear.
5
Test a first conversation
Click "New Chat". Select llama3.1:8b from the model dropdown. Type "Hello, confirm you are working." The AI should respond. Your company AI platform is live.
Realistic first-login chat — verify everything works
Dhaka Traders AI — New Chat
KA
Hello. I'm Kamal, IT Admin. Please confirm you are running locally and not using any cloud service.
AI
Hello Kamal! I can confirm that I am running entirely locally on your company's server using Ollama. I am LLaMA 3.1 8B, loaded into your server's GPU memory. No data from this conversation is transmitted to any external server, cloud service, or third party. Everything stays within your network. How can I help you today?
KA
আমাদের কোম্পানির নাম হলো ঢাকা ট্রেডার্স লিমিটেড। তুমি কি বাংলায় সাহায্য করতে পারবে?
AI
হ্যাঁ, অবশ্যই! আমি ঢাকা ট্রেডার্স লিমিটেডের জন্য বাংলায় সাহায্য করতে পারব। আপনার কর্মীরা যেকোনো ভাষায় প্রশ্ন করতে পারবেন — আমি সেই ভাষায়ই উত্তর দেব। কী বিষয়ে সাহায্য প্রয়োজন?

Section 6 — Multi-user account management: Every employee gets access

Open WebUI supports three user roles out of the box: Admin, User, and Pending. For a company, you need a more structured approach. Here is how to set up a clean user management workflow that scales from 10 to 500 employees.

The three-role model for company deployment

AD
Admin
IT Department Only
  • Full system configuration
  • User creation & deletion
  • Model management
  • System prompt editing
  • Usage log access
  • All models visible
US
User (Standard)
All Departments
  • Chat with assigned model
  • View own conversation history
  • Upload documents (if enabled)
  • Cannot change system prompts
  • Cannot see other users
  • Restricted model selection
PU
Power User
Team Leads Only
  • All Standard User permissions
  • Can create custom system prompts
  • Can switch between models
  • Can create shared prompts
  • Can create team workspaces
  • Advanced parameter control

Creating user accounts — the admin workflow

Open WebUI admin panel — user management steps
// Navigate: Admin Panel → Users → Add User // For each employee, fill in: Name: Rahim Hossain Email: rahim.hossain@dhaka-traders.com Password: [temporary password — employee changes on first login] Role: User // For team leads: Name: Selina Begum Email: selina.begum@dhaka-traders.com Role: User // Open WebUI only has Admin/User — use Groups for power users // After creating accounts, go to Admin Panel → Groups // Create department groups: Group: Sales Team Group: HR Department Group: Finance & Accounts Group: Inventory & Warehouse Group: Customer Service // Assign users to groups // Apply different system prompts per group (shown in Section 7)

Bulk user creation via API (for 20+ employees)

Python script — create multiple users at once
#!/usr/bin/env python3 # File: create_users.py # Run: python3 create_users.py import requests import json WEBUI_URL = "http://localhost:3000" ADMIN_TOKEN = "your-admin-jwt-token" # Get from browser DevTools → Network → Authorization header employees = [ {"name": "Rahim Hossain", "email": "rahim@dhaka-traders.com", "role": "user", "dept": "sales"}, {"name": "Selina Begum", "email": "selina@dhaka-traders.com", "role": "user", "dept": "hr"}, {"name": "Tariq Ahmed", "email": "tariq@dhaka-traders.com", "role": "user", "dept": "finance"}, {"name": "Nasrin Akter", "email": "nasrin@dhaka-traders.com", "role": "user", "dept": "inventory"}, {"name": "Jahangir Islam", "email": "jahangir@dhaka-traders.com", "role": "user", "dept": "support"}, ] headers = { "Authorization": f"Bearer {ADMIN_TOKEN}", "Content-Type": "application/json" } for emp in employees: payload = { "name": emp["name"], "email": emp["email"], "password": f"TempPass@{emp['dept'].capitalize()}2024!", "role": emp["role"] } response = requests.post( f"{WEBUI_URL}/api/v1/auths/add", headers=headers, json=payload ) if response.status_code == 200: print(f"Created: {emp['name']} ({emp['email']})") else: print(f"Failed: {emp['name']} — {response.text}")

Section 7 — System prompts: Configure AI behavior per department

The system prompt is the most powerful configuration tool in Open WebUI. It defines who the AI is, what it knows, how it responds, and what it refuses. Every department should have its own system prompt tailored to their actual workflow. Here is a complete set for a trading company.

HR Department system prompt

Open WebUI → Admin Panel → System Prompt (HR Group)
You are "Hira" — the HR assistant for Dhaka Traders Ltd. IDENTITY: - You are a professional, empathetic HR specialist - You communicate in both Bengali and English — always match the language the user writes in - For Bengali responses: use formal business Bengali (আপনি — never তুমি) - For English responses: professional, clear, and concise YOUR KNOWLEDGE BASE: - Company leave policy: 15 days annual leave, 10 days sick leave, 3 days casual leave per year - Leave encashment: up to 30 days per year at basic salary rate - Working hours: 9:00 AM to 6:00 PM, Saturday to Thursday - Probation period: 6 months for all new employees - Notice period: 30 days for employees under 2 years, 60 days for 2+ years - Increment cycle: Annual, every July, based on performance review - Medical allowance: Tk. 3,000/month for confirmed employees WHAT YOU HELP WITH: - Drafting appointment letters, warning letters, and termination notices - Answering questions about leave, salary, and benefits policy - Explaining disciplinary procedures - Generating performance review templates - Translating HR documents between Bengali and English STRICT RULES: - Never reveal specific employee salary figures — say "Please contact HR directly" - Never make up policy rules not listed above — say "I'll need to check the policy document" - Never approve or reject leave requests — say "Please submit your request through the ERP system" - Always recommend sensitive decisions be reviewed by the HR Manager RESPONSE FORMAT: For policy questions: State the policy clearly, then add a note about exceptional cases For document drafting: Produce the complete document, then offer to revise For complex cases: Outline the options and recommend management consultation

Sales Department system prompt

Open WebUI → Admin Panel → System Prompt (Sales Group)
You are "Sakib" — the Sales Intelligence assistant for Dhaka Traders Ltd. IDENTITY: - Expert sales analyst and communication specialist - Fluent in business Bengali and English - Responds in the language the user writes in - Data-focused, action-oriented, results-driven tone YOUR ROLE: - Help sales executives analyze customer patterns and draft communications - Assist in preparing sales reports and presentations - Coach on negotiation strategies and follow-up messaging - Help translate customer proposals between Bengali and English PRODUCT CONTEXT: - We are a wholesale trading company dealing in textiles, garments, and household goods - Primary customers: retailers in Dhaka, Chittagong, Sylhet, and Rajshahi - Payment terms: typically 30-60 days credit for established customers - Minimum order value: Tk. 50,000 for credit accounts WHAT YOU HELP WITH: - Drafting professional follow-up emails and WhatsApp messages - Analyzing why a customer may be buying less (churn risk signals) - Creating sales pitch scripts for new product categories - Generating weekly/monthly sales summary narratives - Preparing customer meeting agendas STRICT RULES: - Never confirm pricing or offer discounts — say "Please confirm with Sales Manager" - Never share one customer's data with queries about another customer - If asked for live sales figures, say "Please pull the latest data from the ERP system" - Always note that AI analysis should be validated with actual ERP data before decisions RESPONSE FORMAT: For email drafts: Subject line + full email body + optional PS line For analysis: Key finding → Evidence → Recommended action For scripts: Opening → Pain point discovery → Value proposition → Close

Finance and Accounts system prompt

Open WebUI → Admin Panel → System Prompt (Finance Group)
You are "Fahim" — the Finance assistant for Dhaka Traders Ltd. IDENTITY: - Professional financial analyst and document specialist - Expert in Bangladeshi business accounting standards - Responds in Bengali or English matching the user's language - Precise, conservative, compliance-focused tone YOUR KNOWLEDGE BASE: - Bangladesh VAT rate: 15% standard rate on applicable goods - AIT (Advance Income Tax): 5% on import, 3% on local procurement - Company fiscal year: July to June - Bank reconciliation: done weekly on Thursdays - Invoice payment terms: standard 30 days, overdue after 45 days WHAT YOU HELP WITH: - Explaining financial concepts in plain language for non-finance staff - Drafting payment reminders and overdue notices - Explaining VAT calculations and invoice structures - Creating expense report formats - Translating financial terms between Bengali and English - Summarizing financial reports in executive-friendly language STRICT RULES: - Never provide specific investment advice - Never confirm or deny account balances — always direct to ERP system - Never override payment approval processes - For tax advice: always say "please consult with your CA/Tax consultant" - Always note that financial decisions require authorized human approval LIMITATIONS: - You do not have access to live account balances or transaction data - Always clarify this when users ask about specific figures

Section 8 — Real department scenarios: AI in action across the company

Here are five complete, realistic scenarios showing how different departments use Open WebUI daily. These are based on real business situations at a Bangladeshi trading company — use these as demonstrations when introducing AI to your team.

HR
Selina Begum — HR Officer
Scenario: Drafting a warning letter in Bengali
একজন কর্মচারী টানা ৩ দিন বিনা অনুমতিতে অনুপস্থিত ছিলেন। তার জন্য একটি আনুষ্ঠানিক সতর্কতাপত্র লিখে দাও। কর্মচারীর নাম: মোঃ রফিকুল ইসলাম, পদ: গুদামরক্ষক।
AI response: ঢাকা ট্রেডার্স লিমিটেড
তারিখ: ০৬ এপ্রিল, ২০২৬

সতর্কতাপত্র

প্রাপক: মোঃ রফিকুল ইসলাম, গুদামরক্ষক

বিষয়: বিনা অনুমতিতে অনুপস্থিতি সম্পর্কে সতর্কতা

এই চিঠির মাধ্যমে আপনাকে জানানো যাচ্ছে যে, আপনি [তারিখ] থেকে [তারিখ] পর্যন্ত টানা ৩ (তিন) কার্যদিবস কোনো পূর্ব অনুমতি বা যথাযথ কারণ উল্লেখ ছাড়াই কর্মস্থলে অনুপস্থিত ছিলেন। এটি কোম্পানির উপস্থিতি বিধির সুস্পষ্ট লঙ্ঘন...

[AI generates complete 4-paragraph formal letter with signature block]
এই চিঠিটা কি আরও কঠোর করা যাবে? এবং ইংরেজিতেও একটা কপি দাও।
AI response: Generates both a stronger Bengali version and a full English translation simultaneously, maintaining all formal elements and legal language appropriate for company records.

Time saved: HR officer typically spends 45–60 minutes drafting formal letters. AI draft takes 8 seconds, requires 10 minutes of review and customization. Net saving: ~40 minutes per letter. HR team drafts ~15 such letters monthly.

SL
Rahim Hossain — Senior Sales Executive
Scenario: Customer follow-up after missed order
Our customer "Rahman Garments" in Narayanganj ordered regularly every month for 2 years but skipped last 2 months. Write a professional follow-up message I can send on WhatsApp to their owner Mr. Kabir.
AI response: "Dear Mr. Kabir, I hope this message finds you and your business in excellent health. As your dedicated account manager at Dhaka Traders, I noticed we haven't had the pleasure of serving Rahman Garments for the past couple of months. I wanted to personally reach out to understand if there's anything we can improve in our service or if you have any concerns we should address. We value your two-year partnership enormously and would love to continue supporting your business. Would it be convenient to speak this week? I'm available any time that suits you. Best regards, Rahim Hossain, Dhaka Traders Ltd."
Good. Now give me 3 possible reasons why they might have stopped ordering and what I should prepare to address each one in my call.
AI response: Generates 3 scenarios — competitor pricing, delivery issues, cash flow problems — each with specific questions to ask and counter-proposals to prepare, giving Rahim a complete call preparation brief in 12 seconds.
FN
Tariq Ahmed — Accounts Officer
Scenario: Explaining overdue invoice to non-finance manager
I need to explain to our Operations Manager (non-finance background) why we have a cash flow problem this month. Our receivables are Tk. 28 lakh but payables are due Tk. 35 lakh. He keeps asking why we are short on cash when sales are good. Write a simple explanation I can share.
AI response: Generates a simple, jargon-free one-page explanation using a real-life analogy (a shopkeeper who sells on credit but must pay suppliers in cash), followed by a clear 3-point action plan — accelerate collections, negotiate payable extensions, and flag for management review. No accounting degree required to understand it.
এখন এটা বাংলায় দাও, সহজ ভাষায়।
AI response: Perfect Bengali translation using accessible, everyday language — no financial jargon — making the explanation immediately usable for a Bangla-speaking management meeting.
WH
Nasrin Akter — Warehouse Supervisor
Scenario: Creating a stock checking procedure document
I need a step-by-step Standard Operating Procedure (SOP) for monthly physical stock count in our warehouse. We have 3 staff doing the count. Include how to handle discrepancies. Make it simple enough for uneducated staff to follow.
AI response: Generates a complete 2-page SOP with numbered steps, pre-count preparation checklist, counting procedure (zone assignment for 3 staff), discrepancy threshold rules (±2% acceptable, >2% requires recount), and an escalation procedure for major variances. Formatted as a ready-to-print procedure document.
এই SOP টা বাংলায় অনুবাদ করো। সহজ বাংলা, কারণ আমার স্টাফরা বেশি শিক্ষিত না।
AI response: Translates the entire SOP into simple, accessible Bengali — avoiding technical vocabulary, using everyday words, and adding practical examples that warehouse staff in Bangladesh would understand immediately.
CS
Jahangir Islam — Customer Service Officer
Scenario: Handling an angry customer complaint professionally
A customer is very angry. They received wrong goods — they ordered 500 units of product A but got product B. They are threatening to cancel their account. Give me 3 response scripts — one by phone, one by WhatsApp, one by formal letter. Make them professional but genuinely apologetic.
AI response: Generates all three communication formats — phone script with empathy opening, WhatsApp message (concise, warm, action-focused with resolution timeline), and formal letter with complaint acknowledgment, investigation commitment, and recovery offer. Each is distinctly formatted for its channel and appropriately calibrated in formality.

Section 9 — Company branding: Make it feel like YOUR product

When employees see "Open WebUI" instead of your company name, adoption suffers. Branded interfaces feel like company tools. Generic interfaces feel like experiments. Here is how to brand Open WebUI as your company's private AI portal.

Environment variable branding configuration

docker-compose.yml — branding environment variables
environment: # Company name — appears in browser tab and header - WEBUI_NAME=Dhaka Traders AI # Your server's accessible URL - WEBUI_URL=http://192.168.1.100:3000 # Welcome message on login screen - WEBUI_DESCRIPTION=Dhaka Traders Ltd. Internal AI Assistant # Default landing message in new chat - DEFAULT_PROMPT_SUGGESTIONS=[ {"title":"Draft a follow-up email","content":"Write a professional follow-up email to a customer who missed their payment due date."}, {"title":"Explain this report","content":"Summarize the following sales report and highlight the 3 most important findings:"}, {"title":"লেটার লিখুন","content":"নিচের বিষয়ে একটি আনুষ্ঠানিক চিঠি লিখুন:"}, {"title":"SOP তৈরি করুন","content":"নিচের কাজের জন্য একটি ধাপে ধাপে পদ্ধতি লিখুন:"} ]

Custom logo upload

Admin Panel → Settings → Interface — logo configuration
// Navigate: Admin Panel → Settings → Interface 1. Upload Company Logo: - Recommended size: 200x50px (landscape) - Format: PNG with transparent background - This replaces the Open WebUI logo in the top-left 2. Upload Favicon: - 32x32px PNG - Appears in browser tab 3. Set Login Page Background: - Optional: upload a subtle branded background image - Recommended: dark professional image with 70% opacity overlay 4. Customize Welcome Text: - Set to: "Welcome to Dhaka Traders AI" - Subtitle: "Your private company assistant — powered by local AI" // After applying: employees see your company branding, // not "Open WebUI" — this matters enormously for perception

Section 10 — Advanced Open WebUI features you should configure immediately

Document upload and RAG (built-in)
Users can upload PDFs, Word docs, and text files directly in chat. Open WebUI automatically chunks, embeds, and retrieves relevant sections. Enable via Admin → Settings → Documents. Set embedding model to nomic-embed-text (already pulled in Part 01).
Prompt library (shared templates)
Admins can create a library of pre-built prompts that all users can access with one click. Create prompts for: "Draft warning letter", "Summarize sales report", "Generate SOP", "Write customer email". Employees click, fill in variables, get results — no prompt engineering needed.
Conversation folders and search
Each user's conversations are saved and searchable. Users can organize chats into folders by topic or date. This creates a growing knowledge base of useful AI interactions employees can reference later — effectively building an AI memory over time.
Model visibility control
Admins can hide specific models from standard users. Only show the models appropriate for each team. Example: show llama3.1:8b for general use, hide codellama (confusing for non-developers), hide nomic-embed-text (embedding only — no UI use). Admin Panel → Models → toggle visibility.
Usage analytics and logging
Admin Panel → Dashboard shows: total users, total conversations, most-used models, messages per day. Use this to track adoption, identify power users, and justify investment to management. Export usage data to CSV for monthly reporting.
Markdown and code rendering
Open WebUI renders full markdown — headers, bold text, tables, bullet lists, and syntax-highlighted code blocks. When AI generates a formatted report or code, it displays beautifully — not as raw text. Enable in User Settings → Interface → Markdown Rendering.
Regenerate and edit messages
Users can regenerate any AI response (with different random seed for variation), edit their own messages and resend, and fork conversations to explore different paths. These features reduce frustration and improve user experience significantly.
Voice input (experimental)
Open WebUI supports browser-based speech-to-text for input and TTS for AI responses. Useful for visually impaired employees or warehouse staff who prefer speaking over typing. Enable in Settings → Audio. Works with browser's built-in Web Speech API — no additional software needed.

Section 11 — Document upload in practice: The invoice summary scenario

One of the most immediately useful features in Open WebUI is the document upload capability — employees can upload a PDF or Word document and ask AI to work with it directly. No separate RAG setup required for basic document Q&A. Here is a real workflow.

Real scenario — finance team processing supplier invoices

The situation

Tariq in accounts receives 15–20 supplier invoices daily as PDF files. Each invoice must be checked for: correct VAT calculation, matching PO number, correct bank account details, and whether the total matches the delivery note. This currently takes 5–8 minutes per invoice.

With Open WebUI document upload

1
Upload the invoice PDF in the chat
Click the paperclip icon in the chat input. Select the invoice PDF. Open WebUI automatically processes it — extracts text, chunks it, and makes it available as context for the conversation.
2
Ask structured verification questions
Type: "From this invoice, extract: vendor name, invoice number, invoice date, PO number, subtotal, VAT amount, VAT percentage, total amount, and bank account number. Format as a checklist."
3
Verify the VAT calculation
Type: "Verify whether the VAT amount shown is 15% of the subtotal. If there is a discrepancy, show the correct calculation." AI performs the math and flags any errors instantly.
4
Generate the approval note
Type: "Generate a one-paragraph approval note for this invoice suitable for attaching to our payment voucher." AI produces a formal note with all key details extracted from the invoice.

Time per invoice: Reduced from 5–8 minutes manual review to 60–90 seconds with AI assistance. For 20 invoices: saves approximately 2 hours per day.

Enabling document processing — configuration

Admin Panel → Settings → Documents — production configuration
// Navigate: Admin Panel → Settings → Documents Embedding Model: Provider: Ollama Model: nomic-embed-text ← Pull this first: ollama pull nomic-embed-text RAG Settings: Chunk Size: 1500 ← Characters per chunk (1000-2000 optimal) Chunk Overlap: 150 ← Overlap between chunks (10% of chunk size) Top K Results: 5 ← How many chunks retrieved per query File Type Allowlist: pdf, docx, doc, txt, xlsx, csv ← Enable file types your team uses Max file size: 10MB ← Adjust based on your document sizes // After saving, test with a sample PDF: // Upload → ask a specific question → verify AI reads the correct content // Known limitation: scanned PDFs (images of documents) // cannot be processed without OCR preprocessing. // Solution: use Adobe Acrobat's OCR or run Tesseract OCR // on the PDF before uploading. Covered in Part 09.

Section 12 — Alternative UI options: When Open WebUI is not the right fit

Open WebUI
Recommended for companies
Full-featured, multi-user, self-hosted. The most complete option for company deployment. Requires Docker. Actively developed with weekly updates.
+ Multi-user, RBAC, RAG built-in, document upload, conversation history, model management, usage analytics
- Requires Docker knowledge to deploy and maintain
Msty
Best for individuals
Desktop application (Windows, Mac, Linux). No Docker required. Connects to Ollama directly. Beautiful, polished UI. Single-user focused.
+ Zero setup beyond install, beautiful design, works offline, very fast
- Single user only, no shared history, no RBAC, no web access
Lobe Chat
Best design quality
Open source, self-hostable with Docker. Plugin system, image generation, voice support. Very modern UI comparable to commercial products.
+ Best-looking UI, plugin ecosystem, supports multiple AI providers
- More complex configuration, less company-focused than Open WebUI
AnythingLLM
Best for RAG focus
Purpose-built for document intelligence and RAG workflows. Excellent document workspace management. Multi-user with agent support.
+ Best document management, workspace isolation per team, agent support
- Less polished chat UX, heavier resource usage than Open WebUI
Which to choose for your company

For most Bangladeshi companies deploying private AI for the first time: Open WebUI is the correct choice. It has the best balance of features, security, multi-user support, and active development. Use Msty for individual developers who want a fast personal setup alongside the company server. Consider AnythingLLM when your document processing needs outgrow Open WebUI's built-in RAG (covered in Part 09).


Section 13 — Production deployment timeline

Here is a realistic deployment schedule for a company of 20–50 employees rolling out Open WebUI company-wide. Use this as your project plan.

Day 1
Install Docker and deploy Open WebUI
IT admin sets up Docker, deploys container, verifies Ollama connection, creates admin account, sets WEBUI_SECRET_KEY.
Day 2
Configure branding and system prompts
Upload company logo, set WEBUI_NAME, configure department system prompts for HR, Sales, Finance, Inventory, and Customer Service.
Day 3
Pilot with 3–5 selected employees
Create accounts for pilot users — ideally one from each department. Run 2-hour training session. Collect feedback. Fix issues before full rollout.
Day 5–7
Build prompt library from pilot feedback
Identify the 10 most common use cases from pilot users. Create saved prompt templates for each. These become the company prompt library visible to all users.
Day 10
Full company rollout
Create all employee accounts. Send welcome email with login URL, username, temporary password, and a 1-page "how to use" guide. Schedule department training sessions.
Week 4
Review and optimize
Check Admin Dashboard analytics. Which departments use it most? What are common queries? Refine system prompts based on real usage patterns. Identify training needs.
Month 2
Connect to ERP data (Part 06)
Begin Part 06 — connect AI to live ERP data so employees can ask questions about real company data from within the browser interface.

Section 14 — Troubleshooting: 10 real errors and exact fixes

Error 1 — "No models found" after login
Cause: Open WebUI cannot reach the Ollama API. Container cannot resolve host.docker.internal.

Fix: Admin Panel → Settings → Connections → set Ollama URL to http://host.docker.internal:11434. Click "Verify Connection". If still failing on Linux, use your actual LAN IP instead: http://192.168.1.100:11434. Ensure you started the container with --add-host=host.docker.internal:host-gateway flag.
Error 2 — Container starts but browser shows "connection refused"
Cause: Port 3000 is blocked by firewall or already in use.

Fix: Check if port is in use: netstat -tulnp | grep 3000 (Linux) or netstat -ano | findstr :3000 (Windows). If occupied, change the left side of the port mapping in your docker run command: -p 3001:8080 (use 3001 instead). Then access at http://localhost:3001.
Error 3 — AI responses are extremely slow through Open WebUI
Cause: Usually the model is slow (CPU mode), not Open WebUI itself. Open WebUI adds minimal overhead.

Diagnose: Test the same query directly via curl to Ollama API. If curl is also slow → Ollama/GPU issue (see Part 01 troubleshooting). If curl is fast but Open WebUI is slow → check container resource limits in Docker Desktop settings. Ensure Open WebUI has at least 2GB RAM allocated.
Error 4 — User cannot log in after account creation
Cause: Account is in "Pending" status and needs admin approval, OR password was set incorrectly.

Fix: Admin Panel → Users → find the user → click "Edit" → change role from "Pending" to "User". For password issues: Admin Panel → Users → Reset Password → set a new temporary password and communicate it to the user.
Error 5 — Document upload fails or AI ignores uploaded file
Cause: Embedding model not configured or nomic-embed-text not pulled in Ollama.

Fix: First run ollama pull nomic-embed-text on your Ollama server. Then: Admin Panel → Settings → Documents → set Embedding Model Provider to "Ollama" and model to "nomic-embed-text". Save and test with a small text file upload first. For PDF failures: ensure the PDF contains actual text (not a scanned image — see Part 09 for OCR).
Error 6 — Bengali text displays as squares or question marks
Cause: Browser or system font does not include Bengali Unicode glyphs.

Fix: Open WebUI uses web fonts — this should work in Chrome and Edge by default. If using an older browser: update to Chrome 90+ or Edge 90+. On Windows Server: install the Bengali language pack from Settings → Time & Language → Language → Add a language → Bengali. The issue is the OS, not Open WebUI.
Error 7 — Container data lost after server restart
Cause: Volume not mounted correctly — data stored inside the container, not on the host.

Fix: Verify your run command includes -v open-webui:/app/backend/data. Check volume exists: docker volume ls | grep open-webui. If you need to migrate data from a broken container: docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/webui-backup.tar.gz /data. Always use the --restart always flag to auto-start the container on reboot.
Error 8 — System prompt changes not taking effect
Cause: System prompt is set correctly but existing conversation already has a cached context.

Fix: System prompt changes only apply to NEW conversations — not existing ones. Ask affected users to start a new chat after the prompt change. For testing: always use a fresh "New Chat" after any system prompt modification. Also verify the prompt is saved at the correct level: Admin-level system prompts vs User-level system prompts have different scopes.
Error 9 — Update breaks the application
Cause: New Open WebUI version has a breaking change or schema migration issue.

Fix: Before any update: backup your data volume: docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/webui-$(date +%Y%m%d).tar.gz /data. To roll back to previous image: docker pull ghcr.io/open-webui/open-webui:sha-[previous-commit]. Use pinned versions in production: ghcr.io/open-webui/open-webui:v0.3.x instead of :main for stability.
Error 10 — LAN users can access Ollama API directly (security issue)
Cause: Ollama is bound to 0.0.0.0 for LAN access, but also exposing the raw API to all network users — bypassing Open WebUI's authentication entirely.

Fix: Bind Ollama back to localhost only: set OLLAMA_HOST=127.0.0.1:11434. Employees access AI ONLY through Open WebUI on port 3000 (which has authentication). Open WebUI contacts Ollama via host.docker.internal — internal communication that does not need LAN exposure. Full security architecture covered in Part 10.

Section 15 — Do's, Don'ts, and limitations

Do — best practices
  • Set WEBUI_SECRET_KEY before first launch
  • Disable ENABLE_SIGNUP in production
  • Create department-specific system prompts
  • Upload company logo for brand adoption
  • Build a shared prompt library for all users
  • Train each department with their own scenarios
  • Back up the data volume weekly via cron job
  • Set --restart always for auto-recovery
  • Pull nomic-embed-text for document upload
  • Review usage analytics monthly
  • Pin Docker image version in production
  • Test all config changes with a fresh chat
Don't — avoid these mistakes
  • Don't use default WEBUI_SECRET_KEY in production
  • Don't leave ENABLE_SIGNUP open on company server
  • Don't expose port 11434 (Ollama) to LAN users
  • Don't use :main image tag in production (unstable)
  • Don't skip volume mounting (data loss on restart)
  • Don't let all users see all models (confusing)
  • Don't skip department training sessions
  • Don't trust AI output without human review
  • Don't allow file uploads without size limits
  • Don't skip the backup before updating the image
  • Don't set password = username for user accounts
  • Don't store confidential passwords in chat history

Honest limitations of Open WebUI at this stage

What Open WebUI cannot do (yet) — set expectations
// Current limitations you will encounter: Native SSO / LDAP: → No built-in Active Directory integration (yet) → Workaround: manual account creation + strong password policy → LDAP integration is on the Open WebUI roadmap Granular Per-User Model Restriction: → Cannot restrict specific models per user (only admin vs user) → Workaround: create separate Open WebUI instances per department → Or use Groups feature to manage model visibility Real-Time ERP Data: → Open WebUI itself has no direct database connection → AI can only work with data you paste into chat or upload as files → Solution: Part 06 (ERP API integration) solves this completely Conversation Sharing Across Users: → Users cannot share conversation history with each other → Workaround: export conversation as Markdown and share via email → Admin can view all conversations in Admin Panel Mobile App: → No native iOS/Android app (browser only) → Progressive Web App (PWA) works on mobile browsers → Add to home screen on iPhone/Android for app-like experience

Coming next
Part 03 — Model Selection Strategy: Choosing the Right AI Brain for Every Job

Deep-dive comparison of every major model — LLaMA 3.1, Mistral, Gemma, Phi-4, DeepSeek-R1, Qwen2.5, CodeLlama — with hardware benchmarks, task-specific recommendations, quantization strategy, and a complete model selection framework for your company server.



#OpenWebUI#Docker#PrivateAI#LocalAI#Ollama#CompanyAI#SelfHostedAI#AIForBusiness#OpenWebUIDocker#AIChat#MultiUserAI#DockerCompose#FreeLearning365#BangladeshTech#AIBangladesh#ERPIntegration#SystemPrompt#RAG#DocumentAI#AIDeployment#InternalAI#BillingualAI#BengaliAI#DockerWindows#DockerLinux#AnythingLLM#LobeChat


Post a Comment

0 Comments