HƯỚNG DẪN CÀI ĐẶT OLLAMA + OPEN WEBUI TRÊN UBUNTU

(Dựa trên quá trình triển khai thành công)

1. KIỂM TRA CẤU HÌNH HỆ THỐNG

bash
# Kiểm tra thông tin hệ thống
inxi -F
lsb_release -a
uname -a

# Kiểm tra RAM (tối thiểu 8GB, khuyến nghị 16GB+)
free -h

# Kiểm tra CPU
lscpu | grep "Model name"
nproc

2. CÀI ĐẶT OLLAMA

bash
# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y

# Cài đặt curl nếu chưa có
sudo apt install curl -y

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

# Kiểm tra phiên bản
ollama --version

# Kiểm tra service
systemctl status ollama

3. TẢI MÔ HÌNH OLLAMA

bash
# Các mô hình phổ biến (chọn 1 hoặc nhiều)
ollama pull mistral          # 7B, ~4.4GB, tốc độ tốt
ollama pull qwen2.5:7b       # 7B, ~4.5GB, hỗ trợ tiếng Việt tốt
ollama pull qwen2.5:14b      # 14B, ~9GB, chất lượng cao, hơi chậm
ollama pull gemma2:9b        # 9B, ~5.5GB, cân bằng tốc độ/chất lượng
ollama pull llama3.1:8b      # 8B, ~4.7GB, đa năng

# Kiểm tra danh sách models đã tải
ollama list

4. CẤU HÌNH OLLAMA TỐI ƯU

bash
# Dừng Ollama
sudo systemctl stop ollama

# Tạo cấu hình cho Ollama
sudo mkdir -p /etc/ollama
sudo tee /etc/ollama/config.yaml << 'EOF'
# Cấu hình tối ưu cho CPU nhiều nhân
max_loaded_models: 1
num_parallel: 2
keep_alive: 5m

# Cấu hình CPU
cpu:
  num_threads: 24  # Thay bằng số luồng CPU của bạn
  mmap: true
  numa: true
EOF

# Cấu hình service để Ollama lắng nghe trên tất cả interface
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf << 'EOF'
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_KEEP_ALIVE=5m"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
EOF

# Reload và start lại
sudo systemctl daemon-reload
sudo systemctl start ollama

# Kiểm tra Ollama đã lắng nghe đúng chưa
sudo ss -tlnp | grep 11434
# Kết quả mong đợi: 0.0.0.0:11434 hoặc :::11434

# Kiểm tra API
curl http://localhost:11434/api/tags
curl http://172.17.0.1:11434/api/tags  # Kiểm tra từ container

5. CÀI ĐẶT DOCKER

bash
# Cài đặt Docker
curl -fsSL https://get.docker.com | sh

# Thêm user vào group docker
sudo usermod -aG docker $USER

# Đăng xuất và đăng nhập lại để áp dụng
# Hoặc chạy lệnh: newgrp docker

# Kiểm tra Docker
docker --version
docker ps

# Cài đặt Docker Compose Plugin
sudo apt update
sudo apt install docker-compose-plugin -y
docker compose version

6. CÀI ĐẶT OPEN WEBUI

Cách 1: Dùng network host (Đơn giản nhất)

bash
# Chạy container với network host
docker run -d \
  --network host \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

# Kiểm tra container
docker ps
docker logs open-webui

# Truy cập: http://localhost:8080

Cách 2: Dùng docker-compose (Linh hoạt hơn)

bash
# Tạo file docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "8080:8080"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      - OLLAMA_BASE_URL=http://172.17.0.1:11434
      - WEBUI_AUTH=false  # Tắt xác thực nếu cần
    volumes:
      - open-webui:/app/backend/data
    restart: always

volumes:
  open-webui:
EOF

# Chạy container
docker compose up -d

# Xem log
docker compose logs -f

# Dừng container
docker compose down

# Xóa cả volume
docker compose down -v

7. CẤU HÌNH TRONG OPEN WEBUI

  1. Mở trình duyệt: http://localhost:8080

  2. Đăng ký tài khoản admin đầu tiên

  3. Vào Settings (biểu tượng bánh răng) → Connections

  4. Cấu hình Ollama URL:

    • Nếu dùng network host: http://127.0.0.1:11434

    • Nếu dùng bridge network: http://172.17.0.1:11434

  5. Click Save

  6. Refresh trang (F5)

  7. Kiểm tra models hiển thị trong danh sách

8. CÁC LỆNH QUẢN LÝ THƯỜNG DÙNG

bash
# Ollama
systemctl status ollama           # Kiểm tra trạng thái
sudo systemctl stop ollama         # Dừng
sudo systemctl start ollama        # Khởi động
sudo systemctl restart ollama      # Khởi động lại
sudo journalctl -u ollama -f       # Xem log

# Docker container
docker ps                          # Danh sách container đang chạy
docker ps -a                       # Danh sách tất cả container
docker stop open-webui             # Dừng container
docker start open-webui            # Khởi động container
docker restart open-webui          # Restart container
docker rm open-webui               # Xóa container
docker logs -f open-webui          # Xem log realtime
docker exec -it open-webui sh      # Vào container

# Docker volume
docker volume ls                   # Danh sách volumes
docker volume rm open-webui        # Xóa volume

# Docker Compose
docker compose up -d               # Chạy
docker compose down                # Dừng và xóa container
docker compose down -v             # Dừng và xóa cả volume
docker compose logs -f             # Xem log
docker compose restart             # Restart

9. TẠO MODEL TÙY CHỈNH ĐỂ TĂNG TỐC

bash
# Tạo model với context nhỏ hơn để tăng tốc
ollama create qwen2.5-fast -f - << 'EOF'
FROM qwen2.5:14b
PARAMETER num_ctx 2048      # Giảm context window
PARAMETER num_thread 24      # Số luồng CPU
PARAMETER num_batch 512      # Tăng batch size
PARAMETER numa true          # Bật NUMA
EOF

# Test tốc độ
time ollama run qwen2.5-fast "Xin chào"

10. XỬ LÝ SỰ CỐ THƯỜNG GẶP

Container không kết nối được Ollama

bash
# Kiểm tra kết nối từ container
docker exec open-webui curl -v http://172.17.0.1:11434/api/tags

# Nếu lỗi "Connection refused", kiểm tra Ollama có lắng nghe trên 0.0.0.0 không
sudo ss -tlnp | grep 11434

# Sửa lại cấu hình nếu cần
sudo systemctl stop ollama
sudo sed -i 's|^ExecStart=.*|ExecStart=/usr/local/bin/ollama serve|' /etc/systemd/system/ollama.service
sudo tee /etc/systemd/system/ollama.service.d/override.conf << 'EOF'
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
EOF
sudo systemctl daemon-reload
sudo systemctl start ollama

WebUI không hiển thị models

bash
# Refresh kết nối trong WebUI
# Settings → Connections → Save → Refresh trang

# Hoặc restart container
docker restart open-webui

Xóa sạch và cài lại từ đầu

bash
# Dừng và xóa container
docker stop open-webui 2>/dev/null
docker rm open-webui 2>/dev/null
docker volume rm open-webui 2>/dev/null

# Xóa container cũ nếu conflict
docker rm -f open-webui 2>/dev/null

# Chạy lại
docker run -d --network host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main

11. TỐI ƯU HIỆU NĂNG

  • Mistral: ~4-5 tokens/s – Tốc độ tốt

  • Qwen2.5 7B: ~7-8 tokens/s – Cân bằng tốc độ/chất lượng

  • Qwen2.5 14B: ~2-3 tokens/s – Chất lượng cao, chậm

  • Gemma2 9B: ~5-6 tokens/s – Tốc độ tốt, chất lượng ổn

Khuyến nghị: Dùng Qwen2.5 7B hoặc Gemma2 9B cho trải nghiệm tốt nhất trên cấu hình 32GB RAM.


THÔNG TIN LIÊN HỆ


*Hướng dẫn được tổng hợp từ quá trình cài đặt thực tế trên Ubuntu 25.10 với CPU Xeon E5-2670 v3 (24 threads), 32GB RAM.*

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *