Cài đặt Open WebUI: Giao diện web thống nhất để quản lý nhiều AI model

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

Cài xong trong 5 phút — Quick Start

Nếu máy bạn đã có Docker, chỉ cần chạy một lệnh là xong:

# Cài Open WebUI kèm Ollama tích hợp sẵn
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

Trình duyệt lên, vào http://localhost:3000, đăng ký tài khoản admin — xong. Mất chưa đến 2 phút.

Muốn dùng kèm Ollama (chạy model local trên máy mình)? Cài Ollama trước:

# Cài Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Tải model llama3.2 về
ollama pull llama3.2

# Kiểm tra Ollama đang chạy
ollama list

Open WebUI tự động detect Ollama qua host.docker.internal:11434 — không cần cấu hình thêm gì.


Open WebUI là gì và tại sao lại cần nó?

Mình bắt đầu dùng Open WebUI sau một thời gian phải mở 3-4 tab trình duyệt cùng lúc: tab ChatGPT, tab Claude, tab Ollama local, tab Gemini. Mỗi lần muốn so sánh câu trả lời từ các model là phải copy-paste qua lại — mất thêm 5-10 phút mỗi lần test, cực kỳ phiền.

Open WebUI giải quyết đúng vấn đề đó: một giao diện duy nhất kết nối được với:

  • Ollama — chạy model local (Llama, Mistral, CodeLlama…)
  • OpenAI API — GPT-4o, GPT-4 Turbo
  • Anthropic API — Claude 3.5 Sonnet, Claude Opus
  • Google Gemini API
  • Bất kỳ endpoint nào tương thích OpenAI format

Ngoài chat, còn có: upload file PDF/image để hỏi, tạo system prompt tái sử dụng, lịch sử chat đầy đủ, và giao diện đẹp không thua ChatGPT Plus.


Cấu hình kết nối nhiều AI model

Kết nối OpenAI API

Cách nhanh nhất: truyền thẳng API key qua biến môi trường lúc chạy Docker. Không cần mò vào Settings sau khi container đã chạy.

docker run -d -p 3000:8080 \
  -e OPENAI_API_KEY=sk-... \
  -v open-webui:/app/backend/data \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

Hoặc điền thủ công sau: Settings → Connections → OpenAI API. Sau khi lưu, reload trang — GPT-4o và GPT-4 Turbo xuất hiện ngay trong dropdown chọn model.

Kết nối Anthropic Claude

Open WebUI hỗ trợ Anthropic qua Pipelines — một layer middleware cho phép kết nối bất kỳ API nào. Chạy Pipelines server riêng:

# Chạy Pipelines server
docker run -d -p 9099:9099 \
  --add-host=host.docker.internal:host-gateway \
  -e ANTHROPIC_API_KEY=sk-ant-... \
  -v pipelines:/app/pipelines \
  --name pipelines \
  --restart always \
  ghcr.io/open-webui/pipelines:main

Sau khi Pipelines server khởi động, mở Settings → Connections → Pipelines trong Open WebUI, điền URL http://host.docker.internal:9099. Claude 3.5 Sonnet và các model Anthropic khác xuất hiện ngay.

Thêm endpoint tùy chỉnh

Đang chạy LM Studio, LocalAI, hay API riêng của team? Thêm vào qua Settings → Connections → Add Connection:

URL: http://localhost:1234/v1
API Key: lm-studio  # hoặc để trống
Model: để Open WebUI tự detect

Tính năng nâng cao đáng dùng

Model Arena — So sánh câu trả lời song song

Đây là tính năng mình dùng nhiều nhất. Vào New Chat → Arena Mode, chọn 2-3 model, gõ một prompt — tất cả model trả lời đồng thời. Rất tiện để tìm ra model nào hợp với từng loại task.

System Prompt tái sử dụng

Workspace → Models là nơi tạo các “nhân vật” AI để dùng lại. Ví dụ:

Tên: Code Review Bot
Base Model: claude-3-5-sonnet
System Prompt: Bạn là senior engineer chuyên review code Python.
Tập trung vào: security issues, performance bottlenecks,
và clean code principles. Luôn giải thích lý do của mỗi góp ý.

Preset này hiện trong danh sách model — click vào là dùng ngay, không cần gõ lại system prompt mỗi lần.

RAG với file upload

Upload tài liệu kỹ thuật (PDF, DOCX, TXT) rồi hỏi thẳng về nội dung. Nếu dùng Ollama, cần pull thêm embedding model trước:

ollama pull nomic-embed-text

File PDF khoảng 50-100 trang hoạt động tốt với model local. File dày hơn (300+ trang) thì nên dùng Gemini 1.5 Pro — context window 1 triệu token của nó ăn được cả quyển sách kỹ thuật.

Web Search tích hợp

Trong Settings → Web Search, bật tính năng rồi chọn provider. SearXNG là lựa chọn hay nhất nếu muốn tự host — miễn phí, không giới hạn request. Brave Search API cũng ổn với free tier 2.000 request/tháng. Sau khi bật, model tự tìm web trước khi trả lời nếu câu hỏi cần thông tin mới hơn training data.


Docker Compose — Cách mình deploy trên VPS

Chạy lệnh đơn lẻ thì tiện lúc test, nhưng deploy thực tế mình dùng Docker Compose để quản lý dễ hơn:

# docker-compose.yml
version: '3.8'
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
      - DEFAULT_USER_ROLE=user  # Người mới đăng ký phải được admin duyệt
    volumes:
      - open-webui:/app/backend/data
    restart: always
    depends_on:
      - ollama

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
    restart: always
    # Bỏ comment nếu có GPU NVIDIA:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - capabilities: [gpu]

volumes:
  open-webui:
  ollama:
# File .env
OPENAI_API_KEY=sk-...
WEBUI_SECRET_KEY=your-random-secret-key-here

# Khởi động
docker compose up -d

# Sau đó tải model
docker exec ollama ollama pull llama3.2
docker exec ollama ollama pull codellama

Tips thực tế khi dùng hàng ngày

Giới hạn quyền truy cập

Deploy trên VPS public thì nhớ set DEFAULT_USER_ROLE=pending — người đăng ký mới phải chờ admin duyệt thay vì vào được ngay. Tránh trường hợp người lạ xài API key của bạn rồi cuối tháng nhận bill bất ngờ.

Nginx reverse proxy với HTTPS

server {
    server_name ai.yourdomain.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 300s;  # Model local đôi khi trả lời chậm
    }
}
# Lấy SSL certificate
certbot --nginx -d ai.yourdomain.com

Chọn model phù hợp cho từng việc

Sau một thời gian dùng, mình rút ra pattern này:

  • Code generation/review: Claude 3.5 Sonnet hoặc GPT-4o
  • Viết lách, brainstorm: Claude Opus, hoặc Llama 3.2 nếu muốn offline
  • Câu hỏi nhanh, không cần accuracy cao: Llama 3.2 3B local — 0 latency, 0 cost
  • Phân tích file, PDF dài: Gemini 1.5 Pro (context window lớn nhất)

Update Open WebUI

# Pull image mới nhất
docker pull ghcr.io/open-webui/open-webui:main

# Restart container (data không mất vì đã mount volume)
docker compose down && docker compose up -d

Open WebUI release khá dày — trung bình 2-3 bản/tuần, mỗi bản đều có fix bug hoặc tính năng mới. Nên update định kỳ.

Mình đang chạy setup này hàng ngày trên VPS 2 vCPU / 4GB RAM. Model 3B cần khoảng 2GB RAM, model 7B cần ~5GB — vừa đủ cho cấu hình này. Muốn dùng model 70B thì phải có GPU; không thì dùng API cloud — tiện hơn nhiều, không cần đầu tư phần cứng thêm.

Share: