Hướng Dẫn Cài Đặt và Sử Dụng Open WebUI Trên Ubuntu
Cài đặt và sử dụng Open WebUI trên Ubuntu là cách nhanh nhất để bạn có một AI assistant riêng trên VPS, không lo dữ liệu chat bị lưu trên server bên thứ ba, không phải trả phí ChatGPT Plus hàng tháng. Nếu bạn đang tìm cách tự host AI giống ChatGPT trên VPS Ubuntu […]
Cài đặt và sử dụng Open WebUI trên Ubuntu là cách nhanh nhất để bạn có một AI assistant riêng trên VPS, không lo dữ liệu chat bị lưu trên server bên thứ ba, không phải trả phí ChatGPT Plus hàng tháng. Nếu bạn đang tìm cách tự host AI giống ChatGPT trên VPS Ubuntu với quyền kiểm soát hoàn toàn, bài hướng dẫn này sẽ đi từ cài đặt Ollama, chạy Open WebUI bằng Docker, đến xử lý các lỗi kết nối phổ biến nhất. Bạn có thể bắt đầu với một VPS giá rẻ tại ThueVPSGiaRe.vn và làm theo từng bước bên dưới.
Open WebUI là gì? Tại sao nên tự host trên VPS?
Open WebUI là giao diện web mã nguồn mở cho phép bạn chat với các mô hình LLM chạy cục bộ hoặc qua API từ bất kỳ nhà cung cấp nào. Khác với ChatGPT, nơi dữ liệu hội thoại được lưu trên server của OpenAI, Open WebUI chạy hoàn toàn trên hạ tầng của bạn.
Điểm khác biệt cốt lõi nằm ở quyền kiểm soát. Khi tự host Open WebUI trên VPS, bạn quyết định model AI nào được dùng, dữ liệu chat lưu ở đâu, ai có quyền truy cập. Open WebUI hỗ trợ kết nối với Ollama để chạy model local, hoặc thêm API key của OpenAI, Anthropic, Google nếu muốn dùng model thương mại trong cùng một giao diện.
Về tính năng, Open WebUI không chỉ là chat. Bạn có Knowledge Base để upload tài liệu và hỏi đáp dựa trên nội dung riêng (RAG), multi-user với phân quyền, lưu lịch sử hội thoại, và API để tích hợp vào workflow automation.

VPS cần cấu hình bao nhiêu để chạy Ollama và Open WebUI?
Mức RAM tối thiểu để chạy model 7B là 8GB, khuyến nghị 16GB nếu muốn chạy model lớn hơn hoặc nhiều người dùng đồng thời.
Cấu hình VPS phụ thuộc vào model bạn định chạy. Dưới đây là gợi ý thực tế dựa trên kích thước model phổ biến:
| Model | RAM tối thiểu | Ghi chú |
|---|---|---|
| 1B đến 3B | 2GB đến 4GB | Chạy được trên VPS nhỏ, tốc độ phản hồi chấp nhận được trên CPU. |
| 7B đến 8B | 8GB | Mức phổ biến cho cá nhân. Llama 3.1 8B hoặc Qwen 2.5 7B chạy ổn trên CPU. |
| 13B đến 14B | 16GB | Cần nhiều RAM hơn, tốc độ chậm hơn nếu không có GPU. |
| 32B trở lên | 32GB+ | Thực tế cần GPU để đạt tốc độ dùng được. CPU-only sẽ rất chậm. |
Open WebUI bản thân nó rất nhẹ, chỉ tốn khoảng vài trăm MB RAM. Phần nặng nằm ở model AI bạn chạy qua Ollama. Disk cũng quan trọng: mỗi model 7B chiếm khoảng 4 đến 8GB dung lượng, nên VPS cần ít nhất 20GB trống.
⚠ Lưu ý về CPU-only:
Nếu VPS không có GPU, Ollama vẫn chạy được nhưng tốc độ sinh token sẽ chậm hơn đáng kể so với máy có GPU. Model càng lớn, độ trễ càng cao. Với mục đích chat cá nhân, model 3B đến 8B là điểm cân bằng hợp lý giữa chất lượng và tốc độ trên CPU.
Chuẩn bị trước khi cài: Docker, Ubuntu và quyền root
Trước khi bắt đầu, VPS của bạn cần đáp ứng các điều kiện sau:
- Ubuntu 22.04 hoặc 24.04 LTS: hai bản này được hỗ trợ tốt nhất và có package Docker ổn định.
- Docker Engine đã cài đặt. Nếu chưa có, bạn có thể xem hướng dẫn cài Docker Compose để nắm cách cài Docker cơ bản.
- Quyền sudo hoặc root: bạn cần quyền này để cài package, chạy Docker và chỉnh sửa cấu hình hệ thống.
- Ollama sẽ được cài ở bước đầu tiên bên dưới.
- Firewall UFW: nếu đang bật, cần mở port 3000 sau khi cài xong Open WebUI.
Nếu vừa nhận VPS mới, nên đổi hostname và cập nhật package trước khi cài đặt. Bạn có thể tham khảo bài thay đổi Hostname Ubuntu để đặt tên server theo mục đích sử dụng.
Hướng dẫn cài đặt và sử dụng Open WebUI trên Ubuntu từng bước
Bước 1: Cài Ollama trên Ubuntu
Ollama là công cụ chạy model LLM local, cung cấp API tại cổng 11434. Bạn cài bằng script chính thức:
curl -fsSL https://ollama.com/install.sh | sh
Sau khi cài xong, kiểm tra dịch vụ đã chạy chưa:
sudo systemctl status ollama
Kiểm tra API trả về danh sách model (ban đầu sẽ trống):
curl http://127.0.0.1:11434/api/tags
Pull một model để test. Ví dụ model 3B nhẹ, phù hợp VPS RAM 4GB:
ollama pull qwen2.5:3b
Hoặc model 7B nếu VPS có 8GB RAM trở lên:
ollama pull llama3.1:8b
Bước 2: Chạy Open WebUI bằng Docker
Đây là lệnh Docker chạy Open WebUI, kết nối với Ollama trên host. Lưu ý: nếu bạn dùng UFW, cần mở port 3000 trước hoặc sau khi chạy container.
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY=thay-bang-chuoi-ngau-nhien-dai \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
⚠ Cảnh báo quan trọng:
Luôn giữ dòng -v open-webui:/app/backend/data trong lệnh Docker. Nếu thiếu flag này, toàn bộ lịch sử chat, tài khoản admin và cấu hình sẽ mất sạch khi bạn xóa hoặc tạo lại container. Docker volume là thứ duy nhất giữ dữ liệu tồn tại qua các lần cập nhật.
Giải thích các flag quan trọng trong lệnh trên:
| Flag | Ý nghĩa |
|---|---|
-p 3000:8080 |
Map cổng 3000 của VPS vào cổng 8080 bên trong container. Truy cập qua http://IP:3000. |
-v open-webui:/app/backend/data |
Mount volume lưu dữ liệu. Không có dòng này, dữ liệu sẽ mất khi container bị xóa. |
--add-host=host.docker.internal:host-gateway |
Cho phép container kết nối tới Ollama chạy trên Ubuntu host qua tên host.docker.internal. |
-e WEBUI_SECRET_KEY=... |
Khóa bí mật cho session. Nên đặt cố định; nếu không, mỗi lần tạo lại container sẽ log out toàn bộ người dùng. |
--restart always |
Tự động khởi động lại container sau khi VPS reboot. |
ghcr.io/open-webui/open-webui:main |
Image chính thức. Tag main là bản mới nhất; có thể thay bằng tag phiên bản cụ thể nếu muốn ổn định. |
Kiểm tra container đã chạy chưa:
docker ps --filter name=open-webui
Xem log nếu container không khởi động được:
docker logs --tail=100 open-webui
Bước 3: Truy cập giao diện và tạo tài khoản admin
Mở trình duyệt và truy cập:
http://IP_VPS:3000
Tài khoản đầu tiên đăng ký sẽ tự động có quyền admin. Tạo email và mật khẩu, sau đó đăng nhập.
Bước 4: Tải model AI về để dùng
Nếu chưa pull model từ bước 1, bạn có thể pull sau. Ollama API chạy trên host, không phải trong container Open WebUI:
ollama pull llama3.1:8b
Sau khi pull xong, vào giao diện Open WebUI, chọn model từ dropdown ở đầu cửa sổ chat. Nếu không thấy model, xem phần troubleshooting bên dưới.
Tùy chọn: Cài bằng Docker Compose
Nếu muốn quản lý cấu hình gọn hơn, dùng Docker Compose. Tạo file docker-compose.yml:
version: '3.8'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- open-webui_data:/app/backend/data
environment:
OLLAMA_BASE_URL: http://host.docker.internal:11434
WEBUI_SECRET_KEY: thay-bang-chuoi-ngau-nhien-dai
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
open-webui_data:
Chạy:
docker compose up -d
Cách truy cập Open WebUI từ domain riêng với HTTPS
Mặc định Open WebUI chạy ở port 3000. Để dùng domain riêng với HTTPS, bạn cần một reverse proxy như Nginx. Cấu hình cơ bản gồm: trỏ domain về IP VPS, tạo Nginx config proxy pass về http://127.0.0.1:3000, bật WebSocket support, và dùng Certbot để lấy SSL. Nếu VPS còn chạy các ứng dụng self-host khác như tự động hóa workflow với n8n hoặc tự host ứng dụng như Immich trên VPS, Nginx cũng là cách gom tất cả dịch vụ dưới các subdomain khác nhau.

Một lưu ý quan trọng: Open WebUI cần WebSocket để streaming phản hồi từ model. Trong Nginx config, bạn phải có:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Thiếu hai dòng này, giao diện chat có thể bị treo khi model đang sinh câu trả lời.
Open WebUI không kết nối được Ollama: nguyên nhân và cách fix
Lỗi 1: Open WebUI không thấy model nào
Triệu chứng: Dropdown chọn model trống, dù đã pull model thành công. Nguyên nhân phổ biến nhất là Open WebUI không kết nối được tới Ollama API.
Kiểm tra model đã pull chưa:
ollama list
Kiểm tra Ollama API có trả về dữ liệu không:
curl http://127.0.0.1:11434/api/tags
Vào Open WebUI, mở Admin Panel > Settings > Connections. URL Ollama phải là một trong hai dạng:
http://host.docker.internal:11434: nếu dùng flag--add-host=host.docker.internal:host-gateway.http://172.17.0.1:11434: địa chỉ Docker bridge mặc định trên Linux. Kiểm tra bằngip addr show docker0.
Không dùng http://127.0.0.1:11434 hoặc localhost:11434 trong cấu hình Open WebUI chạy trong Docker, vì địa chỉ đó trỏ vào chính container, không phải VPS host.
Lỗi 2: Không truy cập được port 3000 từ ngoài
Triệu chứng: Trình duyệt báo “connection refused” hoặc timeout khi truy cập http://IP:3000.
Kiểm tra container có đang chạy không:
docker ps -a --filter name=open-webui
Kiểm tra port 3000 có bị process khác chiếm không:
sudo ss -tulpn | grep 3000
Nếu dùng UFW, mở port 3000:
sudo ufw allow 3000/tcp
Một số nhà cung cấp VPS có firewall riêng trên control panel. Kiểm tra thêm ở đó nếu UFW đã mở mà vẫn không vào được.
Lỗi 3: Kết nối giữa Docker container và Ollama host bị lỗi
Đây là lỗi phổ biến nhất với người mới: Ollama chạy trên host lắng nghe ở 127.0.0.1:11434, trong khi container Open WebUI có network namespace riêng. 127.0.0.1 trong container là chính container đó, không phải VPS.
Cách fix 1: Dùng host.docker.internal (khuyến nghị). Khi chạy container, thêm flag --add-host=host.docker.internal:host-gateway. Trong Open WebUI, đặt URL Ollama là http://host.docker.internal:11434.
Cách fix 2: Chạy container với --network=host. Cách này bỏ qua network isolation của Docker, container dùng chung network stack với host:
docker run -d \
--network=host \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-e WEBUI_SECRET_KEY=thay-bang-chuoi-ngau-nhien-dai \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
Với --network=host, Open WebUI lắng nghe trực tiếp trên port 8080 của VPS (không còn mapping 3000:8080). Truy cập qua http://IP:8080. Lưu ý: một số hệ thống không khuyến nghị dùng host network vì lý do bảo mật, nhưng với VPS cá nhân thì đây là cách đơn giản và hiệu quả.
Cách cập nhật Open WebUI lên phiên bản mới
Open WebUI phát triển nhanh, nên cập nhật định kỳ để có tính năng mới và fix bug. Quy trình gồm: pull image mới, dừng container cũ, xóa container cũ, chạy container mới với cùng volume.
docker pull ghcr.io/open-webui/open-webui:main
docker stop open-webui
docker rm open-webui
Sau đó chạy lại lệnh Docker như bước 2. Dữ liệu nằm trong volume open-webui nên vẫn nguyên vẹn.
ℹ Lưu ý khi cập nhật:
Trước khi cập nhật, nên backup volume: docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/open-webui-backup.tar.gz /data. Nếu dùng Docker Compose, chỉ cần docker compose pull && docker compose up -d.
Nếu muốn giảm rủi ro, thay tag main bằng tag phiên bản cụ thể (ví dụ :v0.3.35) sau khi đã test bản main chạy ổn. Image tag cố định giúp bạn kiểm soát thời điểm nâng cấp thay vì tự động nhận bản mới mỗi lần pull.
Câu hỏi thường gặp
Open WebUI là gì và khác ChatGPT như thế nào?
Open WebUI là giao diện web self-hosted kết nối với nhiều nhà cung cấp LLM. Khác ChatGPT, nó chạy trên hạ tầng của bạn, dữ liệu chat không gửi cho bên thứ ba, hỗ trợ model local qua Ollama và API thương mại trong cùng một giao diện. Bạn kiểm soát hoàn toàn ai truy cập, dữ liệu lưu ở đâu.
Cần VPS cấu hình bao nhiêu để cài Ollama và Open WebUI?
Tối thiểu 4GB RAM cho model 3B, khuyến nghị 8GB cho model 7B đến 8B. Nếu muốn chạy model 13B trở lên, cần 16GB RAM. Disk cần ít nhất 20GB trống vì mỗi model 7B chiếm 4 đến 8GB. CPU-only vẫn chạy được nhưng tốc độ chậm hơn GPU.
Tại sao Open WebUI không kết nối được Ollama sau khi cài xong?
Nguyên nhân phổ biến là dùng localhost hoặc 127.0.0.1 trong cấu hình Open WebUI chạy Docker. Trong container, địa chỉ đó trỏ vào chính container, không phải VPS host. Cần dùng host.docker.internal (kèm flag --add-host) hoặc chạy container với --network=host.
Làm sao để truy cập Open WebUI qua domain thay vì IP:3000?
Dùng Nginx làm reverse proxy: trỏ domain về IP VPS, tạo config proxy pass về http://127.0.0.1:3000, bật WebSocket support. Sau đó dùng Certbot để lấy SSL miễn phí từ Let’s Encrypt. Cách này cũng giúp bạn gom nhiều dịch vụ self-host khác dưới các subdomain riêng.
Cách cập nhật Open WebUI lên phiên bản mới mà không mất dữ liệu?
Pull image mới, dừng và xóa container cũ, chạy lại container mới với cùng volume open-webui:/app/backend/data. Dữ liệu nằm trong volume nên không bị ảnh hưởng. Nên backup volume trước khi cập nhật để phòng trường hợp image mới có lỗi tương thích.
Lời kết
Cài đặt và sử dụng Open WebUI trên Ubuntu không phức tạp nếu bạn làm đúng thứ tự: cài Ollama, chạy Docker container với volume mount đúng, đặt WEBUI_SECRET_KEY cố định và pull model trước khi chat. Ba điểm cần nhớ: không bỏ dòng -v open-webui:/app/backend/data, dùng host.docker.internal để kết nối Ollama, và mở port 3000 trên UFW nếu không truy cập được từ ngoài. Khi đã chạy ổn, bạn có thể mở rộng sang Knowledge Base, multi-user, hoặc tích hợp API vào workflow automation.
Cần VPS Ubuntu để chạy Open WebUI + Ollama?
Chọn cấu hình vừa đủ RAM, SSD NVMe, quyền root đầy đủ, sẵn sàng cài ngay.
Nội dung bài viết mang tính tham khảo. Các lệnh và cấu hình trong bài được kiểm chứng dựa trên tài liệu chính thức của Open WebUI (docs.openwebui.com) và áp dụng cho Ubuntu 22.04/24.04 LTS với Docker Engine phiên bản mới nhất. Kết quả thực tế phụ thuộc vào cấu hình VPS, model AI được chọn và phiên bản Open WebUI tại thời điểm triển khai. Người đọc nên sao lưu Docker volume, kiểm thử trên môi trường staging trước khi áp dụng cho hệ thống production.



