🧠 Cài Đặt Raspberry Pi 4B (2GB RAM) Headless cho Docker và API
Raspberry Pi 4B với 2GB RAM đủ mạnh để xử lý các tác vụ container nhẹ và lưu trữ web API — nếu bạn tối ưu hóa và giữ cho nó gọn nhẹ. Với một thiết lập headless, chỉ sử dụng terminal, chúng ta có thể biến bo mạch nhỏ này thành một máy chủ micro cloud cho các API, tự động hóa và nhiều hơn nữa.
🧰 Những Gì Bạn Cần
- Raspberry Pi 4B (2GB RAM)
- Raspberry Pi OS Lite (64-bit được khuyến nghị)
- Thẻ microSD (16GB+ được khuyến nghị)
- Truy cập SSH (headless)
- Kết nối Ethernet hoặc Wi-Fi
- Truy cập Internet
🛰️ Bước 1: Thiết Lập Raspberry Pi Headless
1. Cài Đặt Raspberry Pi OS Lite (64-bit)
Tải về từ: Raspberry Pi Software
Sử dụng:
- Raspberry Pi Imager
- balenaEtcher
- Hoặc lệnh
dd(dành cho người dùng nâng cao)
2. Kích Hoạt SSH và Wi-Fi
Trên phân vùng /boot của thẻ SD:
- Thêm một file trống có tên
ssh - Thêm
wpa_supplicant.conf:
country=VN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR_SSID"
psk="YOUR_PASSWORD"
}
Chèn thẻ SD và khởi động.
3. Kết Nối Qua SSH
ssh pi@raspberrypi.local
# Hoặc sử dụng IP của Pi:
ssh pi@<ip-address>
🔐 Bước 2: Cấu Hình Ban Đầu
passwd # Đổi mật khẩu mặc định
sudo apt update && sudo apt upgrade -y
sudo raspi-config
Trong raspi-config, thiết lập:
- Tên máy chủ
- Ngôn ngữ, múi giờ
- Kích hoạt SSH, I2C, SPI (nếu cần)
🛠️ Bước 3: Cài Đặt Công Cụ Cần Thiết & Python
Cài đặt công cụ phát triển:
sudo apt install -y \
git curl wget build-essential \
python3 python3-pip python3-venv \
vim nano tmux htop neofetch
Thiết lập môi trường Python:
python3 -m pip install --upgrade pip
python3 -m pip install virtualenv ipython
🐳 Bước 4: Cài Đặt Docker (Tùy Chọn Rootless)
Tùy Chọn 1: Cài Đặt Docker Cổ Điển
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Khởi động lại hoặc đăng xuất/đăng nhập để áp dụng thay đổi nhóm.
Kiểm tra Docker:
docker run hello-world
Tùy Chọn 2: Kubernetes Nhẹ (k3s)
Cài đặt k3s (chế độ máy chủ):
curl -sfL https://get.k3s.io | sh -
Kiểm tra trạng thái:
sudo k3s kubectl get nodes
Để sử dụng kubectl mà không cần sudo:
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
🔌 Bước 5: Lưu Trữ Web API với FastAPI hoặc Flask
Tạo môi trường ảo
python3 -m venv webenv
source webenv/bin/activate
pip install fastapi uvicorn flask
🔹 Tùy Chọn A: Ví Dụ FastAPI
Tạo main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Xin chào từ FastAPI trên Raspberry Pi 4B!"}
Chạy nó:
uvicorn main:app --host 0.0.0.0 --port 8000
🔹 Tùy Chọn B: Ví Dụ Flask
Tạo app.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Xin chào từ Flask trên Raspberry Pi 4B!"
Chạy:
python app.py
🛡️ Tùy Chọn: Chạy Như Một Dịch Vụ Systemd
Tạo /etc/systemd/system/fastapi.service:
[Unit]
Description=FastAPI App
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi/project
ExecStart=/home/pi/webenv/bin/uvicorn main:app --host 0.0.0.0 --port=8000
Restart=always
[Install]
WantedBy=multi-user.target
Kích hoạt & khởi động:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable fastapi
sudo systemctl start fastapi
📦 Bước 6: Tạo Sao Lưu (Snapshot Di Động)
Sao lưu cấu hình và gói:
mkdir -p ~/pi-backup/etc-backup
cp ~/.bashrc ~/pi-backup/
cp -r ~/.config ~/pi-backup/
sudo cp -r /etc ~/pi-backup/etc-backup/
apt-mark showmanual > ~/pi-backup/manual-packages.txt
Nén để dễ dàng di chuyển:
tar -czvf pi-backup.tar.gz pi-backup
♻️ Bước 7: Khôi Phục Trên Raspberry Pi Mới
- Sao chép
pi-backup.tar.gzvào Raspberry Pi mới và giải nén:
tar -xzvf pi-backup.tar.gz
- Chạy script khôi phục:
#!/bin/bash
xargs sudo apt install -y < ~/pi-backup/manual-packages.txt
cp ~/pi-backup/.bashrc ~/
cp -r ~/pi-backup/.config ~/
✅ Ghi Chú Cuối Cùng & Mẹo
- Theo dõi các container với
docker ps,docker stats - Sử dụng
tmuxhoặcscreencho các phiên SSH bền vững - Mở cổng với
ufwhoặc sử dụng reverse proxy (ví dụ: Caddy hoặc Nginx) - Thêm tên miền + SSL với
Caddyđể có HTTPS không cần cấu hình
🚀 Điều Gì Tiếp Theo?
Giờ đây, Raspberry Pi 4B của bạn đã trở thành một máy chủ API sẵn sàng cho container!
Bạn có thể:
- 🎯 Triển khai microservices với Docker hoặc k3s
- 🌐 Lưu trữ bảng điều khiển địa phương, REST APIs, hoặc thậm chí bot Telegram
- ☁️ Đồng bộ hóa cấu hình/script với GitHub cho các dự án trong tương lai