Tại sao Raspberry Pi 5 lại phù hợp làm home server?
Nếu bạn muốn có một chiếc máy chủ nhỏ chạy 24/7 tại nhà — lưu trữ file, chạy automation script, host vài web app nội bộ — bài toán đầu tiên là tiền điện. Một chiếc PC cũ chạy 24/7 ngốn 60–100W, tương đương 1–2 triệu đồng tiền điện mỗi năm chỉ để giữ máy bật.
Raspberry Pi 5 tiêu thụ khoảng 5–15W tuỳ tải. Với chip ARM Cortex-A76 quad-core 2.4GHz và RAM 4GB hoặc 8GB, Pi 5 đủ sức chạy phần lớn dịch vụ nhẹ mà một home server cần. Tiết kiệm điện, nhỏ gọn, im lặng — đặt vào góc tủ mạng là xong.
So sánh các lựa chọn OS: nên dùng gì?
Trước khi bắt đầu flash SD card, cần chọn OS phù hợp. Có ba lựa chọn phổ biến và mỗi cái có điểm mạnh riêng.
Raspberry Pi OS (Raspbian)
Ưu điểm: Tối ưu cho phần cứng Pi, boot nhanh, hỗ trợ GPIO và camera module chính thức. Nếu bạn cần điều khiển phần cứng vật lý, đây là lựa chọn số một.
Nhược điểm: Dựa trên Debian, ecosystem nhỏ hơn Ubuntu. Tài liệu cho server use-case cụ thể cũng ít hơn đáng kể.
Ubuntu Desktop 24.04 ARM
Ưu điểm: Quen thuộc, có giao diện đồ hoạ.
Nhược điểm: GNOME desktop ngốn 600MB–1GB RAM ngay lúc idle. Với Pi 5 bản 4GB, đó là một phần tư RAM bị chiếm bởi màn hình không ai nhìn. Không hợp lý cho server chạy headless.
Ubuntu Server 24.04 LTS ARM
Ưu điểm: Nhẹ (idle ~150–200MB RAM), hỗ trợ LTS 5 năm, cloud-init tích hợp sẵn giúp cấu hình headless cực dễ, apt package phong phú, cộng đồng lớn.
Nhược điểm: Không có GUI — nhưng đây là server, bạn không cần GUI. Một số driver đặc thù của Pi cần cấu hình thêm so với Raspberry Pi OS.
Mình chọn Ubuntu Server 24.04 LTS. Khi mới chuyển từ CentOS sang Ubuntu, mình mất khoảng 1 tuần để quen với hệ thống package management — apt và dpkg khác khá nhiều so với yum/dnf. Nhưng từ đó về sau, Ubuntu Server trở thành lựa chọn mặc định cho mọi setup server nhỏ. Tài liệu nhiều, lỗi nào cũng đã có người hỏi trên Stack Overflow rồi.
Chuẩn bị thiết bị
- Raspberry Pi 5 (4GB hoặc 8GB RAM)
- Thẻ microSD ≥32GB Class 10, hoặc SSD qua USB 3.0 (khuyến nghị — bền hơn nhiều)
- Nguồn USB-C 5V/5A chính hãng — Pi 5 cần 5A, nguồn Pi 4 cũ không đủ
- Cáp Ethernet — dùng dây cáp ổn định hơn Wi-Fi cho server
- Máy tính để flash image và SSH vào Pi
Flash Ubuntu Server và cấu hình headless
Headless nghĩa là Pi chạy hoàn toàn không cần màn hình hay bàn phím. Bạn SSH vào từ laptop để quản lý. Pi nằm gọn trong tủ mạng, không chiếm chỗ.
Bước 1: Flash image bằng Raspberry Pi Imager
Tải Raspberry Pi Imager về máy (Windows/Mac/Linux đều có). Khi chọn OS, vào Other general-purpose OS → Ubuntu → Ubuntu Server 24.04 LTS (64-bit).
Trước khi flash, nhấn biểu tượng bánh răng ⚙ để cấu hình sẵn qua cloud-init:
- Hostname: ví dụ
homeserver - Enable SSH: chọn “Use password authentication”
- Username/Password: tạo user riêng, không dùng
pimặc định - Wi-Fi (tuỳ chọn): nếu chưa có dây Ethernet lúc đầu
Những cấu hình này được Imager ghi vào file user-data trên partition đầu tiên của thẻ SD. Cloud-init đọc file đó khi boot lần đầu và tự động thiết lập — không cần cắm màn hình.
Bước 2: Boot và SSH vào Pi
Cắm thẻ SD vào Pi, cắm Ethernet và nguồn điện. Đợi khoảng 2–3 phút để cloud-init chạy xong (boot lần đầu luôn lâu hơn). Sau đó tìm IP của Pi:
# Scan mạng LAN để tìm Pi (thay subnet phù hợp với mạng nhà bạn)
nmap -sn 192.168.1.0/24 | grep -A 2 "Raspberry"
# Hoặc xem trong trang admin của router
SSH vào Pi:
ssh [email protected]
# Lần đầu SSH hỏi xác nhận fingerprint — gõ "yes"
Cấu hình IP tĩnh với Netplan
IP động (DHCP) không ổn cho server — mỗi lần restart router, IP Pi có thể thay đổi, phá vỡ mọi cấu hình DNS nội bộ hoặc reverse proxy bạn đã thiết lập. Ubuntu Server dùng Netplan thay vì nmcli như CentOS/RHEL.
Trước tiên, xem tên card mạng:
ip link show
# Trên Ubuntu 24.04 thường là: eth0 hoặc end0
Tạo file cấu hình IP tĩnh:
sudo nano /etc/netplan/99-static.yaml
Nội dung file (thay thông số theo mạng nhà bạn):
network:
version: 2
ethernets:
eth0: # hoặc end0 — xem từ "ip link show"
dhcp4: false
addresses:
- 192.168.1.100/24 # IP tĩnh bạn muốn đặt cho Pi
routes:
- to: default
via: 192.168.1.1 # Gateway — thường là IP của router
nameservers:
addresses:
- 1.1.1.1 # Cloudflare DNS
- 8.8.8.8 # Google DNS
Apply cấu hình và kiểm tra:
sudo netplan apply
# Kiểm tra IP mới
ip addr show eth0
# Kiểm tra kết nối internet
ping -c 3 google.com
Nếu lệnh netplan apply báo lỗi permission trên file, chạy thêm: sudo chmod 600 /etc/netplan/99-static.yaml — Netplan yêu cầu file config không được world-readable.
Triển khai dịch vụ nhẹ cho home server
Pi 5 với Ubuntu Server chạy thoải mái các dịch vụ sau mà vẫn còn tài nguyên dự phòng:
Pi-hole — Chặn quảng cáo toàn bộ mạng nhà
Pi-hole hoạt động như DNS server nội bộ, chặn quảng cáo cho mọi thiết bị trong nhà mà không cần cài extension trên từng máy.
curl -sSL https://install.pi-hole.net | bash
# Sau khi cài xong, đổi DNS trong router về IP tĩnh của Pi
# Pi-hole idle chỉ dùng ~50MB RAM
Uptime Kuma — Theo dõi uptime dịch vụ
Web UI đẹp để monitor uptime các website và dịch vụ nội bộ, gửi thông báo khi có sự cố:
# Cài Docker trước
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
# Chạy Uptime Kuma
docker run -d --restart=unless-stopped \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
# Truy cập: http://192.168.1.100:3001
Vaultwarden — Password manager tự host
Tương thích với Bitwarden client nhưng nhẹ hơn nhiều, phù hợp cho Pi:
docker run -d \
--name vaultwarden \
-v /vw-data/:/data/ \
-p 8080:80 \
--restart unless-stopped \
vaultwarden/server:latest
# Truy cập: http://192.168.1.100:8080
Theo dõi tài nguyên Pi
# Xem RAM, CPU theo thời gian thực
htop
# Kiểm tra nhiệt độ Pi 5 (quan trọng nếu không có tản nhiệt)
vcgencmd measure_temp
# Nên dưới 70°C khi tải cao, không thì cần tản nhiệt tốt hơn
Một số lưu ý thực tế
- Dùng SSD thay SD card nếu có thể: SD card ghi/đọc nhiều sẽ hỏng sau 1–2 năm. SSD qua USB 3.0 hoặc NVMe HAT bền hơn và nhanh hơn đáng kể cho workload server.
- Tản nhiệt bắt buộc với Pi 5: Pi 5 chạy nóng hơn Pi 4 rõ rệt. Nên dùng case có fan hoặc ít nhất là heatsink chính hãng.
- UPS nhỏ cho tủ mạng: Pi bị mất điện đột ngột khi đang ghi disk dễ corrupt filesystem. Một chiếc UPS mini giá vài trăm nghìn đồng bảo vệ được cả hệ thống.
- Đặt lịch reboot hàng tuần: Giải phóng memory leak nếu có, giữ hệ thống sạch.
# Reboot lúc 4 giờ sáng mỗi Chủ Nhật
sudo crontab -e
# Thêm dòng:
0 4 * * 0 reboot
Home server với Pi 5 + Ubuntu Server là setup học được rất nhiều về quản trị Linux thực tế — trong môi trường an toàn (tệ nhất thì chỉ ảnh hưởng mạng nhà bạn), trước khi đụng vào VPS production thật sự.

