Cách Cài Đặt Uptime Kuma Giám Sát VPS 24/7, Báo Telegram Tức Thì
Tìm hiểu cách cài Uptime Kuma trên VPS là giải pháp tối ưu giúp bạn chủ động giám sát trạng thái hệ thống, nhận cảnh báo ngay tức khắc khi máy chủ hoặc website gặp sự cố thay vì bị động chờ khách hàng phản ánh. Việc triển khai một công cụ tự host mạnh […]
Tìm hiểu cách cài Uptime Kuma trên VPS là giải pháp tối ưu giúp bạn chủ động giám sát trạng thái hệ thống, nhận cảnh báo ngay tức khắc khi máy chủ hoặc website gặp sự cố thay vì bị động chờ khách hàng phản ánh. Việc triển khai một công cụ tự host mạnh mẽ trên nền tảng máy chủ ảo tại ThueVPSGiaRe.vn sẽ giúp bạn nắm trọn quyền riêng tư dữ liệu và kiểm soát hạ tầng trực quan 24/7.
1. Uptime Kuma là gì? So sánh chi tiết với UptimeRobot và Better Stack
Uptime Kuma là một ứng dụng giám sát thời gian hoạt động mã nguồn mở dạng self-hosted, cho phép người quản trị tự do theo dõi tình trạng server, container và website mà không lo phát sinh chi phí đăng ký định kỳ. Với nền tảng xây dựng trên Node.js kết hợp cơ sở dữ liệu SQLite siêu nhẹ, công cụ này mang lại sự cân bằng hoàn hảo giữa hiệu năng và tính trực quan.

Khi sử dụng các dịch vụ SaaS như UptimeRobot hay Better Stack, bạn thường bị giới hạn số lượng mục giám sát, chu kỳ kiểm tra kéo dài (5 phút ở gói miễn phí) hoặc bị hạn chế các kênh gửi cảnh báo.
Ngược lại, Uptime Kuma đặt toàn bộ quyền kiểm soát dữ liệu trong tay bạn, hỗ trợ hơn 90 phương thức thông báo khác nhau và cho phép tần suất kiểm tra linh hoạt xuống đến 20 giây.
Dưới đây là bảng so sánh cơ bản giữa 3 phiên bản Uptime Kuma, UptimeRobot và Better Stack:
| Tiêu chí | Uptime Kuma (Self-hosted) | UptimeRobot (Bản Free) | Better Stack (Bản Free) |
|---|---|---|---|
| Chi phí bản quyền | Miễn phí hoàn toàn 100% | Miễn phí có giới hạn tính năng | Miễn phí có giới hạn tính năng |
| Vị trí lưu trữ dữ liệu | Nằm trên VPS riêng của bạn | Hạ tầng của nhà cung cấp SaaS | Hạ tầng của nhà cung cấp SaaS |
| Số lượng Monitor tối đa | Không giới hạn (phụ thuộc cấu hình VPS) | Tối đa 50 monitor | Tối đa 10 monitor |
| Chu kỳ kiểm tra ngắn nhất | 20 giây | 5 phút | 30 giây |
| Kênh gửi thông báo | Hơn 90 kênh (Telegram, Discord, Slack,…) | Email, App, Webhook cơ bản | Email, Slack, Teams, Webhook |
| Trang trạng thái (Status Page) | Hỗ trợ sẵn, cho phép gán custom domain | Chỉ hỗ trợ gói trả phí Pro | Hỗ trợ cơ bản |
2. Yêu cầu phần cứng và các bước chuẩn bị trên VPS
Uptime Kuma được tối ưu mã nguồn rất tốt nên tiêu tốn rất ít tài nguyên máy chủ. Tuy vậy, nhằm đảm bảo tiến trình thu thập dữ liệu và xử lý socket hoạt động ổn định khi bạn theo dõi hàng chục endpoint cùng lúc, hệ thống cần đáp ứng các thông số tiêu chuẩn sau:
| Thông số phần cứng | Cấu hình tối thiểu | Cấu hình khuyến nghị |
|---|---|---|
| Vi xử lý (CPU) | 1 vCPU | 1 vCPU đến 2 vCPU |
| Bộ nhớ trong (RAM) | 512 MB | 1 GB đến 2 GB |
| Ổ đĩa cứng (SSD/NVMe) | 5 GB trống | 15 GB đến 20 GB |
| Hệ điều hành | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS hoặc Ubuntu 24.04 LTS |
Để quá trình cài đặt diễn ra suôn sẻ, bạn hãy chuẩn bị sẵn môi trường máy chủ thông qua các bước cơ bản:
- Thực hiện kết nối và đăng nhập VPS qua SSH bằng tài khoản có quyền quản trị tối cao.
- Nếu máy chủ chứa các dịch vụ cũ có nguy cơ xung đột cổng mạng, bạn có thể cân nhắc giải pháp cài lại hệ điều hành cho VPS để tạo một môi trường sạch hoàn toàn.
- Đảm bảo đã hoàn tất quy trình cài đặt Docker Engine trên Ubuntu cùng tiện ích mở rộng.
- Kiểm tra hệ thống đã tích hợp sẵn công cụ cài đặt Docker Compose chuẩn V2 với cú pháp dòng lệnh
docker compose.
3. Các bước cài đặt Uptime Kuma bằng Docker Compose
Sử dụng Docker Compose là phương pháp triển khai tối ưu nhất cho Uptime Kuma vì nó tách biệt hoàn toàn ứng dụng và dữ liệu. Nhờ cơ chế liên kết volume lưu trữ ngoài container, mỗi lần cập nhật phiên bản mới bạn chỉ cần kéo image về và chạy lại mà không sợ mất đi dữ liệu lịch sử giám sát.
Bước 1: Khởi tạo thư mục và tải cấu hình mẫu
Mở terminal và thực thi nhóm lệnh dưới đây để tạo thư mục chuyên biệt cho ứng dụng và lấy file compose từ kho lưu trữ GitHub chính thức:
mkdir -p /opt/uptime-kuma cd /opt/uptime-kuma curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
Tệp tin cấu hình mặc định sẽ thiết lập image chính thức louislam/uptime-kuma:2, mount thư mục cục bộ ./data vào /app/data trong container và mở cổng truy cập mặc định 3001. Bạn có thể kiểm tra nội dung file bằng lệnh cat compose.yaml.

Bước 2: Khởi động container ứng dụng
Tiến hành kéo image và chạy dịch vụ ở chế độ chạy ngầm (detached mode):
docker compose up -d

Nếu terminal hiển thị các trạng thái Pulled, Created và Started, Docker đã tải image, tạo network và khởi động container tương ứng.
Tiếp theo, kiểm tra trạng thái hoạt động bằng lệnh:
docker ps
Tìm container Uptime Kuma trong danh sách. Nếu cột STATUS hiển thị Up, container đang chạy.

Bước 3: Mở cổng kết nối 3001 trên tường lửa
docker port uptime-kuma-uptime-kuma-1
Nếu kết quả có dạng 3001/tcp -> 0.0.0.0:3001, cổng 3001 đã được ánh xạ để nhận kết nối từ bên ngoài.
Kiểm tra trạng thái tường lửa UFW:
ufw status
Nếu kết quả là Status: inactive, UFW hiện không hoạt động. Nếu bạn đã truy cập được giao diện Uptime Kuma, không cần mở thêm cổng ở UFW để tiếp tục cài đặt. Tuy nhiên, hãy kiểm tra các quy tắc firewall bên ngoài VPS nếu có.
Bước 4: Truy cập giao diện và tạo tài khoản quản trị Uptime Kuma
Mở trình duyệt web và điều hướng tới địa chỉ http://IP_VPS:3001. Ở lần truy cập đầu tiên, hệ thống sẽ yêu cầu thiết lập tài khoản quản trị viên (Admin). Hãy nhập tên người dùng cùng mật khẩu phức tạp để đảm bảo an toàn.

Bước 5: Kiểm tra nhật ký hoạt động (Logs) khi phát sinh lỗi
Nếu container không phản hồi hoặc gặp lỗi thoát bất thường, bạn có thể kiểm tra log thời gian thực để chẩn đoán nguyên nhân:
docker logs uptime-kuma --tail 50
4. Cấu hình Nginx Reverse Proxy và kích hoạt SSL Let’s Encrypt
Việc duy trì cổng 3001 trực tiếp cùng giao thức HTTP không mã hóa tiềm ẩn nhiều rủi ro an ninh mạng. Cấu hình Nginx làm Reverse Proxy giúp bạn che giấu cổng nội bộ, đồng thời cho phép gắn tên miền riêng và chứng chỉ SSL miễn phí để bảo vệ dữ liệu truyền tải.
Lưu ý đặc biệt quan trọng: Bảng điều khiển Uptime Kuma dựa vào công nghệ WebSocket (Socket.IO) để cập nhật trạng thái theo thời gian thực. Nếu file cấu hình Nginx thiếu các chỉ thị nâng cấp kết nối (Upgrade & Connection header), trang web sẽ báo lỗi mất kết nối Lost connection to the socket server liên tục.
Bước 1: Cài đặt máy chủ web Nginx và Certbot
apt update apt install nginx python3-certbot-nginx -y
Bước 2: Tạo tệp cấu hình Virtual Host Nginx
Trước khi tạo cấu hình, hãy chắc chắn bạn đã trỏ tên miền về địa chỉ IP của VPS (ví dụ tên miền con status.yourdomain.com). Sau đó mở trình soạn thảo văn bản:
nano /etc/nginx/sites-available/uptime-kuma
Dán khối cấu hình tiêu chuẩn dưới đây (thay thế status.yourdomain.com bằng tên miền tương ứng):
server {
listen 80;
server_name status.yourdomain.com;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Bước 3: Kích hoạt Virtual Host và kiểm tra cú pháp
ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx
Chỉ thực hiện reload dịch vụ khi lệnh nginx -t trả về thông báo cú pháp hợp lệ (successful).

Bước 4: Cấp phát chứng chỉ bảo mật SSL
Áp dụng quy trình cài đặt chứng chỉ SSL Let’s Encrypt qua Certbot để tự động kích hoạt HTTPS và chuyển hướng lưu lượng:
certbot --nginx -d thuevpsgiare.vn
Bước 5: Thu hồi quyền truy cập trực tiếp vào cổng 3001
Khi hệ thống đã định tuyến an toàn qua Nginx, hãy đóng cổng 3001 trên tường lửa ngoài để ngăn các kết nối trực tiếp không mong muốn:
ufw delete allow 3001/tcp ufw status
Ghi chú thêm: Uptime Kuma không hỗ trợ chạy trong thư mục con dạng URL (như domain.com/kuma). Bạn buộc phải trỏ bằng subdomain riêng biệt hoặc một domain độc lập.
5. Thiết lập các loại Monitor phổ biến trong Uptime Kuma
Uptime Kuma cung cấp rất nhiều cơ chế kiểm tra phong phú tương ứng với từng tầng dịch vụ trong hạ tầng công nghệ thông tin của bạn.
| Loại Monitor | Mục đích kiểm tra | Các tham số thiết lập chính |
|---|---|---|
| HTTP(s) | Giám sát web app, API endpoint và chứng chỉ SSL | URL đầy đủ, mã phản hồi HTTP (200, 301), thời gian chờ |
| Ping (ICMP) | Xác định máy chủ vật lý hay VPS còn phản hồi mạng không | Địa chỉ IPv4, IPv6 hoặc Hostname |
| TCP Port | Kiểm tra các service cụ thể (SSH, MySQL, Redis, Mail) | Hostname/IP và số cổng cần kiểm tra (ví dụ 22, 3306) |
| Docker Container | Theo dõi trạng thái sống/chết của từng container | Tên container cụ thể (yêu cầu mount Docker socket) |
| DNS Record | Đảm bảo bản ghi tên miền phân giải chính xác | Hostname, loại bản ghi (A, CNAME, MX), giá trị mong đợi |
Kiểm tra Website với HTTP(s) Monitor
Nhấn vào nút Add New Monitor trên giao diện, chọn kiểu HTTP(s). Điền địa chỉ URL đầy đủ của trang web. Thiết lập Heartbeat Interval (chu kỳ gửi gói tin kiểm tra) ở mức 60 giây đối với website thông thường, hoặc 20 giây đối với dịch vụ thanh toán/giao dịch quan trọng.
Đặc biệt, hãy bật tùy chọn Certificate Expiry Notification để nhận cảnh báo sớm trước khi chứng chỉ SSL hết hạn, giúp bạn tránh sự cố gián đoạn ngoài ý muốn.
Kiểm tra độ phản hồi với Ping Monitor
Chọn kiểu Ping và nhập địa chỉ IP của VPS cần theo dõi. Phương thức này sử dụng gói tin ICMP để đánh giá khả năng kết nối mạng. Nếu máy chủ đích cấu hình chặn ICMP trên tường lửa, kết quả sẽ luôn báo Down; trong trường hợp đó bạn nên chuyển sang dùng TCP Port Monitor để thay thế.
Giám sát cổng dịch vụ với TCP Port Monitor
Loại monitor này cho phép bạn kiểm tra xem tiến trình của một ứng dụng backend có đang mở cổng lắng nghe bình thường hay không. Ví dụ: kiểm tra dịch vụ SSH qua cổng 22, cơ sở dữ liệu MySQL qua cổng 3306 hoặc Redis qua cổng 6379.
Theo dõi trực tiếp Docker Container
Để Uptime Kuma đọc được danh sách container trên VPS, bạn cần mount socket của Docker vào container Kuma bằng cách chỉnh sửa tệp compose.yaml:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
volumes:
- ./data:/app/data
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "3001:3001"
Khởi động lại bằng lệnh docker compose up -d --force-recreate. Sau đó trong phần quản trị Kuma, chọn loại Docker Container và điền chính xác tên container cần giám sát. Xin lưu ý: việc chia sẻ Docker socket tiềm ẩn rủi ro đặc quyền nếu container bị xâm nhập, vì vậy chỉ nên áp dụng trên các máy chủ có kiểm soát bảo mật chặt chẽ.
6. Cấu hình nhận thông báo tự động qua Bot Telegram
Telegram là kênh cảnh báo được ưa chuộng hàng đầu hiện nay nhờ tốc độ gửi tin nhắn gần như tức thời, hoàn toàn miễn phí và không bị giới hạn số lượng tin nhắn gửi đi như tin nhắn SMS hay các dịch vụ trả phí khác.
- Tạo Bot mới: Khởi động ứng dụng Telegram, tìm kiếm người dùng
@BotFather. Nhập lệnh/newbot, đặt tên hiển thị và username kết thúc bằng chữ “bot”. BotFather sẽ gửi lại một chuỗi HTTP API Token (dạng123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ). - Lấy ID trò chuyện (Chat ID): Nhấn Start và gửi một tin nhắn bất kỳ cho con bot bạn vừa tạo. Tiếp theo, mở trình duyệt hoặc dùng lệnh curl truy vấn địa chỉ:
curl https://api.telegram.org/bot<TOKEN_CỦA_BẠN>/getUpdates
Tìm kiếm đoạn chuỗi
"chat":{"id":...}để lấy số ID. Đối với nhóm chat Telegram, ID thường bắt đầu bằng dấu trừ (số âm). - Khai báo thông tin vào Uptime Kuma: Vào mục Settings → Notifications → Setup Notification. Chọn phương thức Telegram, điền Bot Token cùng Chat ID vừa lấy được. Bấm nút Test để kiểm tra; nếu nhận được thông báo thử nghiệm trong Telegram tức là cấu hình đã thành công.
- Gán kênh thông báo vào Monitor: Khi tạo mới hoặc chỉnh sửa bất kỳ monitor nào, hãy tick chọn kênh Telegram tương ứng để hệ thống chủ động đẩy tin báo khi xảy ra sự cố Down/Up.
7. Tạo Status Page công khai gắn tên miền riêng cho người dùng
Trang trạng thái (Status Page) giúp công khai tình trạng hoạt động của các dịch vụ, hỗ trợ khách hàng và đối tác tự kiểm tra tình hình kỹ thuật mà không cần phải liên hệ trực tiếp cho bộ phận hỗ trợ khách hàng mỗi khi mạng chậm hay bảo trì.
- Tạo trang trạng thái mới: Tại thanh điều hướng, chọn Status Pages rồi nhấn New Status Page. Đặt tiêu đề (ví dụ: Trạng Thái Hệ Thống) và đường dẫn thân thiện (slug).
- Tùy biến nhóm dịch vụ: Bạn có thể gom các monitor theo từng danh mục trực quan như “Hạ Tầng Server”, “Cổng Thanh Toán API”, “Website Bán Hàng” để người xem dễ dàng phân biệt.
- Phân quyền hiển thị: Thiết lập trạng thái Public cho cộng đồng hoặc Private (kèm mật khẩu bảo vệ) nếu bạn chỉ muốn chia sẻ cho đội ngũ kỹ thuật nội bộ.
- Gắn Custom Domain: Khai báo tên miền con trong mục cấu hình tên miền tùy chỉnh, sau đó tạo một bản ghi CNAME trên hệ thống quản lý DNS trỏ về máy chủ Uptime Kuma để hoàn tất tính chuyên nghiệp cho thương hiệu của bạn.
8. Nguyên tắc bảo mật Uptime Kuma trên môi trường Production
Bảng điều khiển Uptime Kuma chứa nhiều thông tin nhạy cảm về sơ đồ mạng, địa chỉ IP nội bộ, endpoint API và cấu trúc hạ tầng máy chủ của bạn. Vì vậy, bảo vệ an toàn cho ứng dụng này trên môi trường sản xuất là yêu cầu bắt buộc:
- Bắt buộc kích hoạt xác thực 2 bước (2FA): Vào Settings → Security và bật tính năng xác thực 2 lớp qua Google Authenticator hoặc ứng dụng OTP tương đương nhằm ngăn chặn triệt để tấn công chiếm quyền tài khoản khi lộ mật khẩu.
- Khóa cổng dịch vụ nội bộ: Không để cổng 3001 phơi bày trực tiếp ra ngoài internet. Chỉ cho phép truy cập dashboard qua Nginx Reverse Proxy có mã hóa HTTPS.
- Duy trì chính sách tự khởi động: Đảm bảo thông số
restart: unless-stoppedluôn hiện diện trong file compose để container tự động phục hồi nếu VPS bị reboot do bảo trì hệ thống. - Cập nhật phiên bản định kỳ: Định kỳ chạy chuỗi lệnh
docker compose pull && docker compose up -dđể cập nhật các bản vá lỗi bảo mật mới nhất từ đội ngũ phát triển. - Quản lý hạ tầng container tập trung: Nếu VPS của bạn vận hành song song nhiều ứng dụng khác, bạn có thể tham khảo thêm giải pháp triển khai và quản trị ứng dụng bằng Coolify để thuận tiện đóng gói và giám sát tập trung nhiều container trên cùng một giao diện web.
9. Cách xử lý các lỗi kỹ thuật thường gặp khi sử dụng
Dưới đây là tổng hợp 4 vấn đề kỹ thuật phổ biến nhất cùng phương pháp khắc phục chi tiết:
Trường hợp 1: Không thể truy cập cổng 3001 qua địa chỉ IP
Hiện tượng: Trình duyệt báo lỗi “This site can’t be reached” hoặc kết nối bị Time Out.
Cách xử lý: Kiểm tra xem container có bị tắt hay không bằng docker ps. Nếu container vẫn đang chạy, kiểm tra lại cấu hình tường lửa UFW hoặc firewall ngoài của nhà cung cấp mạng:
# Kiểm tra trạng thái container docker ps | grep uptime-kuma # Kiểm tra quy tắc tường lửa UFW ufw status # Cho phép cổng 3001 kết nối nếu bị chặn ufw allow 3001/tcp
Trường hợp 2: Báo lỗi 502 Bad Gateway sau khi dựng Nginx
Hiện tượng: Truy cập qua tên miền trả về mã lỗi HTTP 502.
Cách xử lý: Lỗi này xuất hiện khi Nginx không thể kết nối tới backend Uptime Kuma trên cổng nội bộ. Bạn hãy rà soát xem container có đang chạy trên đúng port 3001 không và tra cứu log Nginx:
# Xem nhật ký lỗi của Nginx tail -f /var/log/nginx/error.log # Xác minh lại tính chính xác của file cấu hình nginx -t
Trường hợp 3: Ứng dụng không tự khởi động lại sau khi khởi động lại máy chủ
Hiện tượng: Mỗi lần máy chủ reboot, bạn phải truy cập vào SSH và gõ lệnh chạy thủ công.
Cách xử lý: Mở file /opt/uptime-kuma/compose.yaml và kiểm tra xem đã có dòng restart: unless-stopped chưa. Sau đó tắt và tái khởi động lại tiến trình:
docker compose down docker compose up -d
Trường hợp 4: Quên mật khẩu đăng nhập của tài khoản quản trị
Hiện tượng: Không thể đăng nhập vào trang chủ và giao diện không hỗ trợ tính năng reset qua email.
Cách xử lý: Uptime Kuma tích hợp sẵn script hỗ trợ đặt lại mật khẩu thông qua CLI bên trong container. Bạn thực thi chuỗi lệnh sau trong terminal:
docker exec -it uptime-kuma bash npm run reset-password
Hệ thống sẽ yêu cầu bạn chọn tài khoản và nhập mật khẩu mới. Mật khẩu cập nhật sẽ được ghi trực tiếp vào cơ sở dữ liệu SQLite nằm tại đường dẫn /app/data/kuma.db. Nhập exit để hoàn tất quá trình.
10. Câu hỏi thường gặp (FAQ)
Uptime Kuma có hỗ trợ gửi thông báo qua Discord hoặc Slack không?
Có. Ứng dụng hỗ trợ hơn 90 kênh thông báo khác nhau bao gồm Discord, Slack, Microsoft Teams, Webhook, Email SMTP và dịch vụ tin nhắn di động.
Có nên cài đặt Uptime Kuma chung trên chính máy chủ đang chạy website cần theo dõi không?
Không khuyến khích. Nếu toàn bộ máy chủ đó bị sập hoặc mất điện nguồn, Uptime Kuma cũng sẽ ngừng chạy cùng lúc và không thể gửi đi cảnh báo. Tốt nhất bạn nên đặt công cụ trên một VPS độc lập bên ngoài.
Làm thế nào để sao lưu (backup) dữ liệu của Uptime Kuma?
Toàn bộ cấu hình và dữ liệu lịch sử được lưu trong thư mục /opt/uptime-kuma/data (chứa file SQLite kuma.db). Bạn chỉ cần sao chép hoặc nén thư mục này lưu trữ định kỳ về máy cá nhân hoặc dịch vụ lưu trữ đám mây.
Nắm vững cách cài Uptime Kuma trên VPS giúp bạn thiết lập một trung tâm giám sát hạ tầng độc lập, chủ động và hoàn toàn bảo mật cho doanh nghiệp. Việc kết hợp linh hoạt giữa Docker Compose, Reverse Proxy Nginx có SSL và thông báo tự động qua Telegram sẽ đảm bảo bạn luôn biết rõ sức khỏe dịch vụ VPS của mình theo từng giây. Đừng để sự cố làm gián đoạn trải nghiệm khách hàng; hãy bắt đầu tự tay triển khai giải pháp giám sát của riêng bạn ngay hôm nay.
Cần một VPS giá rẻ để bắt đầu?
Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận và khả năng quản trị riêng.
Lưu ý kỹ thuật: Nội dung hướng dẫn mang tính chất tham khảo kỹ thuật. Các câu lệnh, thông số cổng và cú pháp cấu hình có thể thay đổi tùy theo bản phân phối hệ điều hành và phiên bản Docker cụ thể. Người quản trị hệ thống nên kiểm tra môi trường thử nghiệm và chủ động sao lưu dữ liệu trước khi đưa vào vận hành trên các máy chủ quan trọng.



