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
# 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
# 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
# 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
# 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
# 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)
# 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)
# 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
-
Mở trình duyệt: http://localhost:8080
-
Đăng ký tài khoản admin đầu tiên
-
Vào Settings (biểu tượng bánh răng) → Connections
-
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
-
-
Click Save
-
Refresh trang (F5)
-
Kiểm tra models hiển thị trong danh sách
8. CÁC LỆNH QUẢN LÝ THƯỜNG DÙNG
# 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
# 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
# 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
# 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
# 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Ệ
-
Ollama Docs: https://github.com/ollama/ollama
-
Open WebUI Docs: https://github.com/open-webui/open-webui
-
Docker Docs: https://docs.docker.com/
*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.*