1.2. Hướng dẫn Toàn diện Cài đặt Ubuntu Server Tối giản cho MLOps#
Tài liệu này là phiên bản được tổng hợp và tối ưu hóa, cung cấp hướng dẫn đầy đủ để cài đặt một máy chủ Ubuntu Server nhẹ, ổn định và bảo mật, chuyên dụng cho các tác vụ MLOps, DevOps và chạy ứng dụng container.
1.2.1. Mục lục#
1.2.2. Giai đoạn 1: Chuẩn bị#
Mục tiêu: Đảm bảo có đủ công cụ và môi trường phần cứng sẵn sàng cho việc cài đặt.
1.2.2.1. Yêu cầu Phần cứng & Phần mềm#
Phần cứng:
Laptop hoặc PC (ưu tiên CPU Intel để tương thích tốt).
Ổ cứng SSD để có hiệu năng tốt nhất.
Kết nối mạng có dây (LAN) để đảm bảo ổn định.
Phần mềm:
File ISO Ubuntu Server 24.04 LTS (hoặc 22.04 LTS) tải từ trang chủ Ubuntu.
USB có dung lượng tối thiểu 4GB.
Phần mềm tạo USB boot như BalenaEtcher hoặc Rufus.
1.2.2.2. Cấu hình BIOS/UEFI#
Mục tiêu: Tối ưu hóa BIOS cho việc chạy server và ảo hóa, loại bỏ các rào cản bảo mật không cần thiết.
Khởi động máy và truy cập vào BIOS/UEFI (thường bằng phím
F2
,F10
,F12
, hoặcDEL
).Disable Secure Boot: Bắt buộc để cài đặt và vận hành các module kernel không chính thức.
Enable AHCI Mode cho ổ cứng (thay vì RAID hoặc IDE).
Enable Virtualization Technology (VT-x / AMD-V): Cực kỳ quan trọng cho việc chạy máy ảo và container.
Enable Wake-on-LAN (WOL): Nếu có, thường nằm trong mục “Power Management”.
Thiết lập thứ tự khởi động ưu tiên USB.
1.2.3. Giai đoạn 2: Cài đặt Ubuntu Server#
Mục tiêu: Cài đặt một hệ điều hành Ubuntu Server tối giản nhất có thể, chỉ bao gồm các thành phần cốt lõi.
1.2.3.1. Các bước cài đặt chính#
Khởi động từ USB boot đã tạo.
Language: Chọn
English
.Keyboard Layout: Chọn
English (US)
.Installation Type: Chọn Ubuntu Server (minimized) để có hệ thống gọn nhẹ nhất.
Network: Cấu hình card mạng LAN. Có thể tạm thời dùng DHCP và chỉnh IP tĩnh sau.
Storage:
Chọn
Use an entire disk
để sử dụng toàn bộ ổ cứng.Trên màn hình tiếp theo, đảm bảo bạn đã chọn đúng ổ SSD.
Xác nhận lựa chọn trong phần “Summary” để hệ thống tự động phân vùng và sử dụng 100% dung lượng đĩa. Thao tác này sẽ xóa toàn bộ dữ liệu trên ổ cứng.
Profile Setup:
Your name:
(Tên của bạn)
Your server’s name:
mlops-server
(đây là hostname)Pick a username:
admin
Choose a password: (Đặt mật khẩu của bạn)
SSH Setup:
Đánh dấu chọn Install OpenSSH server.
Featured Server Snaps:
KHÔNG chọn bất kỳ gói nào. Bỏ qua bước này để giữ hệ thống sạch sẽ.
Chờ quá trình cài đặt hoàn tất, sau đó khởi động lại máy và rút USB.
1.2.4. Giai đoạn 3: Cấu hình Hệ thống Ban đầu#
Mục tiêu: Cập nhật hệ thống, cài các công cụ quản trị cơ bản và đơn giản hóa quyền quản trị để thao tác nhanh hơn.
1.2.4.1. Cập nhật hệ thống và cài đặt công cụ thiết yếu#
# Cập nhật danh sách gói và nâng cấp toàn bộ hệ thống
sudo apt update && sudo apt upgrade -y
# Cài các công-cụ dòng lệnh cần thiết cho việc quản trị, mạng và lập trình
sudo apt install -y net-tools curl wget vim git htop ufw unzip build-essential
# restart
#sudo reboot
1.2.4.2. Thiết lập quyền Sudo không cần mật khẩu#
Cảnh báo: Chỉ nên thực hiện bước này trên server cá nhân, không áp dụng cho môi trường production nhiều người dùng vì lý do bảo mật.
# Mở file cấu hình sudoers bằng trình soạn thảo an toàn visudo
sudo visudo
Di chuyển xuống cuối file và thêm dòng sau:
admin ALL=(ALL) NOPASSWD:ALL
Lưu lại và thoát (Ctrl+O
, Enter
, Ctrl+X
trong nano). Từ giờ, người dùng admin
có thể chạy lệnh sudo
mà không cần nhập lại mật khẩu.
1.2.5. Giai đoạn 4: Cấu hình Mạng#
Mục tiêu: Đảm bảo server có địa chỉ IP không đổi trong mạng nội bộ và có thể được khởi động từ xa.
1.2.5.1. Thiết lập IP tĩnh#
Xác định tên card mạng của bạn:
ip a
Tên thường có dạng
enp2s0
,eth0
, v.v.Sửa file cấu hình Netplan:
# Tên file có thể khác, hãy dùng `ls /etc/netplan/` để xem sudo nano /etc/netplan/00-installer-config.yaml
Chỉnh sửa nội dung file theo mẫu dưới đây (thay
enp2s0
và các thông số IP cho phù hợp với mạng của bạn):network: version: 2 renderer: networkd ethernets: enp2s0: dhcp4: no addresses: [192.168.1.5/24] routes: - to: 0.0.0.0/0 via: 192.168.1.1 nameservers: addresses: [8.8.8.8,1.1.1.1]
Áp dụng cấu hình:
sudo netplan apply
1.2.5.2. Kích hoạt Wake-on-LAN (WOL)#
Cài đặt
ethtool
:sudo apt install ethtool -y
Bật WOL cho card mạng (thay
enp2s0
bằng tên card mạng của bạn):sudo ethtool -s enp2s0 wol g
Tạo một dịch vụ
systemd
để WOL tự động bật lại sau mỗi lần khởi động:sudo nano /etc/systemd/system/wol.service
Thêm nội dung sau vào file:
[Unit] Description=Enable Wake on LAN [Service] Type=oneshot ExecStart=/usr/sbin/ethtool -s enp2s0 wol g [Install] WantedBy=multi-user.target
Kích hoạt dịch vụ:
sudo systemctl enable wol.service sudo systemctl start wol.service
1.2.6. Giai đoạn 5: Cài đặt Nền tảng MLOps#
Mục tiêu: Cài đặt Docker, nền tảng container hóa cốt lõi cho hầu hết các ứng dụng MLOps.
1.2.6.1. Cài đặt Docker CE và Docker Compose#
Gỡ bỏ các phiên bản Docker cũ (nếu có):
sudo apt remove -y docker docker-engine docker.io containerd runc
Thêm kho lưu trữ chính thức của Docker:
# Cài các gói cần thiết sudo apt update sudo apt install -y ca-certificates curl gnupg # Tạo thư mục keyrings sudo install -m 0755 -d /etc/apt/keyrings # Tải Docker GPG key curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Chmod để mọi người đọc được key sudo chmod a+r /etc/apt/keyrings/docker.gpg # Thêm repository Docker chính thức echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Cập nhật package index sudo apt update
Cài đặt Docker Engine và Docker Compose:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Cho phép người dùng
admin
chạy lệnhdocker
mà không cầnsudo
:sudo usermod -aG docker admin # Bạn cần đăng xuất và đăng nhập lại để thay đổi có hiệu lực
Kích hoạt Docker khởi động cùng hệ thống:
sudo systemctl enable docker sudo systemctl start docker
Kiểm tra cài đặt:
docker run hello-world
1.2.7. Giai đoạn 6: Tối ưu và Tăng cường Hệ thống#
Mục tiêu: Tinh chỉnh hệ thống để hoạt động ổn định 24/7, tối ưu hiệu năng, tăng cường bảo mật và chuẩn hóa môi trường.
1.2.7.1. Cấu hình Server hoạt động 24/7#
Vô hiệu hóa sleep khi gập nắp laptop:
sudo nano /etc/systemd/logind.conf
Tìm và sửa các dòng sau:
HandleLidSwitch=ignore HandleLidSwitchDocked=ignore IdleAction=ignore
Khởi động lại dịch vụ:
sudo systemctl restart systemd-logind
(Tùy chọn) Tắt cảnh báo thiếu pin nếu bạn đã tháo pin:
sudo nano /etc/modprobe.d/ignore_battery.conf
Thêm dòng
blacklist battery
vào file, lưu lại rồi chạy:sudo update-initramfs -u # Cần khởi động lại máy để có hiệu lực
1.2.7.2. Tối ưu hiệu năng và tuổi thọ SSD#
Gỡ bỏ Snapd: Snap thường chậm hơn và không cần thiết cho môi trường server tối giản.
sudo systemctl disable snapd.service sudo systemctl stop snapd.service sudo apt purge snapd -y sudo rm -rf /var/cache/snapd/ rm -rf ~/snap
Tắt Swap: Với server có RAM đủ (≥ 8GB) và chạy trên SSD, tắt swap giúp tăng tuổi thọ ổ cứng.
sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Giảm ghi log vào SSD: Chuyển log hệ thống vào RAM thay vì ghi liên tục ra đĩa.
sudo sed -i 's/#Storage=auto/Storage=volatile/' /etc/systemd/journald.conf # Giới hạn kích thước log trong RAM sudo sed -i 's/#RuntimeMaxUse=/RuntimeMaxUse=50M/' /etc/systemd/journald.conf sudo systemctl restart systemd-journald
1.2.7.3. Bảo mật cơ bản#
Cấu hình tường lửa UFW:
# Chỉ cho phép các cổng cần thiết (ví dụ: SSH) sudo ufw allow 22/tcp # sudo ufw allow 80/tcp (Nếu chạy web server) # sudo ufw allow 443/tcp (Nếu chạy web server) # Kích hoạt tường lửa sudo ufw enable
Cài đặt Fail2Ban: Tự động khóa các IP cố gắng brute-force SSH.
sudo apt install fail2ban -y sudo systemctl enable fail2ban sudo systemctl start fail2ban
1.2.7.4. Thiết lập môi trường chuẩn hóa#
# Đặt múi giờ
sudo timedatectl set-timezone Asia/Ho_Chi_Minh
# Đặt locale hệ thống
sudo localectl set-locale LANG=en_US.UTF-8
1.2.7.5. Dọn dẹp hệ thống#
Mục tiêu: Loại bỏ các gói không cần thiết và giải phóng dung lượng đĩa sau khi cài đặt và cập nhật.
# Gỡ bỏ các gói được cài tự động nhưng không còn cần thiết
sudo apt autoremove -y
# Xóa cache các gói đã tải về
sudo apt clean
# Xóa các file log cũ của journald (ví dụ: giữ lại log của 7 ngày gần nhất)
sudo journalctl --vacuum-time=7d
1.2.8. Giai đoạn 7: Công cụ và Dịch vụ Bổ sung (Tùy chọn)#
Mục tiêu: Cài đặt thêm các công cụ hữu ích và dịch vụ có thể cần thiết cho công việc MLOps.
1.2.8.1. Cài đặt Công cụ CLI và Môi trường Python#
Mục tiêu: Trang bị các công cụ dòng lệnh mạnh mẽ và thiết lập một môi trường Python hiện đại với phiên bản cụ thể và trình quản lý gói hiệu suất cao.
Cài đặt các công cụ CLI cơ bản:
sudo apt install -y tmux jq tree make
tmux
: Quản lý nhiều phiên terminal trong một cửa sổ.jq
: Xử lý dữ liệu JSON trên dòng lệnh.tree
: Hiển thị cấu trúc thư mục.make
: Công cụ tự động hóa build.
Cài đặt và thiết lập Python 3.12:
Lưu ý: Ubuntu 24.04 đã có sẵn Python 3.12. Nếu bạn đang dùng phiên bản Ubuntu cũ hơn (ví dụ 22.04), hãy thực hiện các lệnh sau để cài đặt phiên bản mới nhất.
# Thêm kho lưu trữ PPA deadsnakes để có các phiên bản Python mới sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update # Cài đặt Python 3.12 cùng các gói cần thiết (venv, dev, pip) sudo apt install -y python3.12 python3.12-venv python3.12-dev python3-pip # Cập nhật update-alternatives để quản lý các phiên bản python # Đặt Python 3.12 làm phiên bản mặc định với độ ưu tiên cao nhất sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 # Kiểm tra lại phiên bản python3 --version
Cài đặt
uv
(Trình quản lý gói Python tốc độ cao):uv
là một công cụ thay thế cực nhanh chopip
vàpip-tools
, được viết bằng Rust. Script cài đặt sẽ tải về bản build sẵn nên không yêu cầu cài đặt Rust.# 1️⃣ Cài Rust/Cargo nếu chưa có command -v cargo >/dev/null 2>&1 || curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y # 2️⃣ Cài UV / Astral curl -LsSf https://astral.sh/uv/install.sh | sh # 3️⃣ Load Cargo cho session hiện tại [ -f "$HOME/.cargo/env" ] && source "$HOME/.cargo/env" # 4️⃣ Thêm cả .local/bin và .cargo/bin vào ~/.bashrc nếu chưa có grep -qxF 'export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"' ~/.bashrc || \ echo 'export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"' >> ~/.bashrc # 5️⃣ Áp dụng ngay cho session hiện tại export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" # 6️⃣ Kiểm tra UV uv --version
1.2.8.2. Cài đặt Tailscale để truy cập từ xa#
Mục tiêu: Tạo một mạng riêng ảo (VPN) an toàn để truy cập server từ bất kỳ đâu mà không cần mở port ra ngoài Internet.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Làm theo hướng dẫn để đăng nhập và kết nối máy chủ vào mạng Tailscale của bạn.
1.2.8.3. Cài đặt PostgreSQL native#
Mục tiêu: Cài đặt PostgreSQL trực tiếp lên hệ thống để có hiệu năng I/O tốt nhất, phù hợp cho các metadata store của MLflow, Airflow.
Cài đặt:
sudo apt install postgresql postgresql-contrib -y
Kích hoạt và khởi động:
sudo systemctl enable postgresql sudo systemctl start postgresql
Tạo người dùng và cơ sở dữ liệu:
# Chuyển sang người dùng postgres sudo -u postgres psql # Trong giao diện psql CREATE USER myuser WITH PASSWORD 'mypassword'; CREATE DATABASE mydatabase OWNER myuser; \q
1.2.9. Giai đoạn 8: Kiểm tra và Sao lưu#
Mục tiêu: Xác nhận lại tất cả các thiết lập đã hoạt động đúng và sao lưu các cấu hình quan trọng.
1.2.9.1. Kiểm tra lại toàn bộ hệ thống#
htop # Giám sát CPU, RAM
ip a # Kiểm tra địa chỉ IP tĩnh
systemctl status docker # Kiểm tra trạng thái Docker
sudo ethtool enp2s0 | grep Wake-on # Kiểm tra trạng thái WOL
sudo ufw status # Kiểm tra trạng thái tường lửa
sudo systemctl list-unit-files --enabled # Liệt kê các dịch vụ khởi động cùng hệ thống
1.2.9.2. Sao lưu các tệp cấu hình quan trọng#
# Tạo thư mục sao lưu
mkdir -p ~/server-backup
# Sao chép các tệp cấu hình
sudo cp /etc/netplan/00-installer-config.yaml ~/server-backup/
sudo cp /etc/systemd/system/wol.service ~/server-backup/
sudo cp /etc/systemd/logind.conf ~/server-backup/
echo "Sao lưu hoàn tất tại thư mục ~/server-backup"
Chúc mừng! Bạn đã hoàn thành việc cài đặt và cấu hình một máy chủ Ubuntu Server tối ưu cho MLOps.