1. Kiểm tra và chuẩn bị yêu cầu phần cứng
Trước khi cài đặt hệ điều hành, bạn cần xác định tài nguyên phần cứng tối thiểu để Weaviate hoạt động ổn định. Weaviate là một vector database nặng về bộ nhớ RAM do cơ chế caching và indexing trong bộ nhớ.
Yêu cầu tối thiểu cho môi trường Development/Testing:
- CPU: Tối thiểu 4 nhân (vCPU) để xử lý các request song song.
- RAM: Tối thiểu 8GB. Nếu chạy với nhiều module embedding (như BERT, ResNet), cần 16GB trở lên.
- Ổ cứng: Tối thiểu 50GB dung lượng trống, ưu tiên SSD NVMe để tăng tốc độ đọc/ghi vector.
- Mạng: Băng thông ổn định, đặc biệt quan trọng khi đồng bộ dữ liệu hoặc query từ xa.
Kiểm tra cấu hình máy ảo hoặc server vật lý hiện tại bằng lệnh sau để đảm bảo đáp ứng:
lscpu | grep "Model name" && free -h && df -h /
Kết quả mong đợi: Bạn thấy dòng CPU có ít nhất 4 nhân, cột "total" trong `free -h` hiển thị >= 8G, và cột "Avail" trong `df -h` hiển thị >= 50G.
2. Cài đặt Ubuntu 24.04 LTS
Chúng ta sẽ cài đặt Ubuntu 24.04 LTS (Noble Numbat). Đây là phiên bản Long Term Support mới nhất, tối ưu cho các workload AI và Database hiện đại.
2.1. Tải ISO và Boot
Tải file ISO chính chủ từ trang chủ Ubuntu. Chọn phiên bản "Ubuntu 24.04.1 LTS Desktop" hoặc "Server" tùy vào nhu cầu (Desktop nếu cần GUI, Server nếu chạy headless).
Sau khi tải về, boot vào ISO. Trong quá trình cài đặt, tại bước "Partitioning", hãy chọn "Use entire disk" nếu là server mới, hoặc "Something else" để phân vùng thủ công (gợi ý: 50GB cho /, phần còn lại cho /home hoặc data).
Trong bước "Software selection", hãy bỏ chọn "OpenSSH server" nếu bạn đã cài đặt sẵn hoặc muốn cấu hình sau, nhưng khuyến khích chọn luôn để truy cập remote ngay sau khi boot.
Kết quả mong đợi: Hệ thống khởi động vào desktop hoặc terminal của Ubuntu 24.04, bạn có quyền truy cập root hoặc user với sudo.
2.2. Cài đặt các gói công cụ cơ bản
Ngay sau khi vào hệ thống, cập nhật danh sách gói phần mềm và cài đặt các công cụ quản lý hệ thống cần thiết như `curl`, `wget`, `git`, `vim`, và `htop`.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống báo "X packages to install" hoặc "0 packages to install" nếu đã mới nhất, không có lỗi "404 Not Found".
sudo apt install -y curl wget git vim htop net-tools build-essential
Kết quả mong đợi: Các gói được cài đặt thành công, không có cảnh báo lỗi dependency.
3. Cài đặt Docker Engine phiên bản mới nhất
Ubuntu 24.04 mặc định không cài Docker Engine mới nhất qua `apt`. Chúng ta cần thêm repository chính chủ của Docker để có phiên bản mới nhất (v27.x trở lên) hỗ trợ tốt cho Weaviate.
3.1. Thêm repository Docker chính chủ
Cài đặt các gói phụ thuộc cần thiết để thêm repository HTTPS.
sudo apt install -y ca-certificates curl gnupg lsb-release
Kết quả mong đợi: Các gói trên được cài đặt xong, không lỗi.
Thêm key GPG của Docker vào hệ thống.
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
Kết quả mong đợi: File `/etc/apt/keyrings/docker.gpg` được tạo ra.
Thêm repository Docker vào nguồn nguồn (sources list).
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
Kết quả mong đợi: File `/etc/apt/sources.list.d/docker.list` được tạo với nội dung chỉ trỏ đến repo Docker cho phiên bản Ubuntu hiện tại (noble).
3.2. Cài đặt Docker Engine
Cập nhật lại danh sách gói sau khi thêm repo mới.
sudo apt update
Cài đặt Docker Engine, CLI, Containerd, và Plugin compose mới nhất.
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Kết quả mong đợi: Docker Engine được cài đặt thành công. Kiểm tra phiên bản:
docker --version
Kết quả mong đợi: Hiển thị dòng chữ "Docker version 27.x.x, build ..." (phiên bản >= 27.0).
3.3. Chạy Docker không cần sudo
Để tiện lợi khi quản lý container, hãy thêm user hiện tại vào nhóm docker để chạy lệnh mà không cần tiền tố `sudo`.
sudo usermod -aG docker $USER
Áp dụng thay đổi bằng cách đăng xuất và đăng nhập lại, hoặc chạy lệnh sau:
newgrp docker
Kết quả mong đợi: Prompt terminal vẫn giữ nguyên nhưng bạn có thể chạy lệnh docker mà không cần sudo. Verify bằng lệnh:
docker run hello-world
Kết quả mong đợi: Docker pull image hello-world và hiển thị thông báo thành công "Hello from Docker!".
4. Cấu hình quyền Sudo và Firewall (UFW)
Để đảm bảo bảo mật cho server trước khi chạy Weaviate, chúng ta cần cấu hình quyền sudo chính xác và mở cổng mạng cần thiết qua UFW (Uncomplicated Firewall).
4.1. Cấu hình quyền Sudo
Ubuntu 24.04 mặc định đã cấu hình sudo cho user đầu tiên tạo. Tuy nhiên, hãy kiểm tra file config để đảm bảo không bị khóa quyền.
Kiểm tra file `/etc/sudoers` hoặc các file trong thư mục `/etc/sudoers.d/`.
sudo visudo
Tìm dòng chứa tên user của bạn, đảm bảo có dòng như: `username ALL=(ALL:ALL) ALL`.
Kết quả mong đợi: Bạn có thể lưu file và thoát, không báo lỗi cú pháp. Test quyền bằng lệnh:
sudo whoami
Kết quả mong đợi: Trả về `root`.
4.2. Cấu hình Firewall (UFW)
UFW thường được cài sẵn nhưng có thể chưa kích hoạt. Kích hoạt UFW và đặt quy tắc mặc định: chặn tất cả incoming, cho phép tất cả outgoing.
sudo ufw default deny incoming
sudo ufw default allow outgoing
Mở cổng SSH (22) để bạn không bị khóa ngoài nếu kết nối từ xa.
sudo ufw allow ssh
Mở cổng mặc định của Weaviate (8080) cho giao diện GraphQL và REST API.
sudo ufw allow 8080/tcp
Mở cổng gRPC (50051) nếu Weaviate cần giao tiếp nội bộ hoặc client gRPC (tùy chọn nhưng nên mở cho production).
sudo ufw allow 50051/tcp
Kích hoạt Firewall.
sudo ufw enable
Khi hệ thống hỏi "Firewall is active and enabled on system startup", gõ `y` và Enter.
Kết quả mong đợi: Thông báo "Firewall is active and enabled".
4.3. Verify Firewall
Kiểm tra trạng thái các luật firewall đã cấu hình.
sudo ufw status verbose
Kết quả mong đợi:
- Status: active
- Default: deny (incoming), allow (outgoing)
- Allowed: 22 (ssh), 8080/tcp, 50051/tcp
5. Tổng kết và Verify môi trường
Để đảm bảo mọi thứ đã sẵn sàng cho Phần 2 (Triển khai Docker Compose), hãy chạy chuỗi lệnh kiểm tra tổng hợp sau:
echo "=== System Info ===" && lscpu | grep "Model name" && free -h | grep Mem && echo "=== Docker Status ===" && systemctl is-active docker && docker --version && echo "=== Firewall Status ===" && sudo ufw status | grep -E "22|8080|50051"
Kết quả mong đợi:
- Hiển thị tên CPU và RAM >= 8G.
- `systemctl is-active docker` trả về `active`.
- Phiên bản Docker >= 27.0.
- Firewall cho phép các cổng 22, 8080, 50051.
- Không có lỗi nào được in ra.
Môi trường Ubuntu 24.04 đã sẵn sàng để triển khai Weaviate qua Docker Compose.
Điều hướng series:
Mục lục: Series: Triển khai Database Vector với Weaviate và Ubuntu 24.04
Phần 2: Triển khai Weaviate qua Docker Compose với cấu hình cơ bản »