Hướng Dẫn Cài Đặt Và Sử Dụng Uptime Kuma Theo Dõi Uptime

Cài đặt và sử dụng Uptime Kuma theo dõi uptime giải quyết đúng một vấn đề đau đầu: bạn biết website sập ngay lúc nó sập, chứ không phải đợi khách nhắn “web không vào được” rồi mới cuống lên kiểm tra. Nhiều quản trị viên vẫn để sự cố kéo dài hàng giờ chỉ vì không có công cụ cảnh báo tự động. Bài này đi từng bước từ cài Docker Compose, cấu hình Nginx reverse proxy, cho tới gửi cảnh báo Telegram, tất cả chạy trên VPS Linux của InterData.

Uptime Kuma là gì? Tại sao nên dùng thay vì UptimeRobot?

Uptime Kuma là công cụ giám sát uptime mã nguồn mở, bạn tự cài trên server của mình. Giao diện dễ nhìn, hỗ trợ hơn 90 kênh thông báo, và miễn phí hoàn toàn nếu bạn đã có VPS riêng. Ứng dụng chạy trên Node.js, lưu dữ liệu vào SQLite và theo dõi được HTTP, TCP, Ping, DNS lẫn Docker container cùng lúc.

Uptime Kuma

Khác biệt lớn nhất so với UptimeRobot hay Better Stack nằm ở chỗ: toàn bộ lịch sử uptime, cấu hình monitor và thông tin SSL nằm trên server bạn. Không có giới hạn monitor kiểu “gói free chỉ được 50 cái”, và cũng không phụ thuộc vào dịch vụ bên thứ ba.

Bảng dưới so sánh nhanh ba lựa chọn phổ biến:

Tiêu chí Uptime Kuma UptimeRobot Free Better Stack Free
Giá Miễn phí (tự host) Có gói miễn phí Có gói miễn phí
Tự lưu trữ Có, toàn quyền dữ liệu Không Không
Số monitor tối đa Không giới hạn (tùy tài nguyên VPS) 50 monitor 10 monitor
Kênh thông báo 90+ kênh Email, Slack, Telegram, SMS (giới hạn) Email, Slack, Telegram, Webhook
Check interval ngắn nhất 20 giây 5 phút 30 giây
Status Page Có, gắn được domain riêng Có (gói trả phí)
Lưu trữ dữ liệu Trên VPS của bạn Máy chủ UptimeRobot Máy chủ Better Stack

Nếu chỉ cần theo dõi vài website với tần suất thấp, UptimeRobot Free là đủ dùng. Còn khi bạn cần check interval ngắn, nhiều monitor, hoặc đơn giản là không muốn dữ liệu rời khỏi hạ tầng của mình, Uptime Kuma đáng để cân nhắc.

Yêu cầu hệ thống và chuẩn bị trước khi cài Uptime Kuma

Uptime Kuma không cần cấu hình mạnh. VPS 1 vCPU / 512 MB RAM đã chạy được, nhưng nếu bạn định theo dõi nhiều monitor với interval ngắn thì nên chọn 1 vCPU / 1 GB RAM trở lên cho thoải mái.

Thành phần Tối thiểu Khuyến nghị
CPU 1 vCPU 1 đến 2 vCPU
RAM 512 MB 1 GB
Dung lượng 5 GB 20 GB
Hệ điều hành Ubuntu 20.04 Ubuntu 22.04 / 24.04

Trước khi bắt đầu, bạn cần SSH vào VPS. Nếu chưa quen thao tác này, bài cách đăng nhập VPS qua SSH hướng dẫn chi tiết trên cả Windows, macOS và Linux. Trường hợp VPS đang chạy hệ điều hành cũ hoặc môi trường không còn sạch, bạn có thể tham khảo quy trình cài lại hệ điều hành VPS để reset về trạng thái ban đầu trước khi cài Uptime Kuma.

Nếu chưa có Docker, làm theo hướng dẫn cài đặt Docker trên Ubuntu. Sau đó cài Docker Compose theo bài hướng dẫn cài đặt Docker Compose trên Ubuntu. Toàn bộ bài này giả định bạn đã có DockerDocker Compose V2 (dùng lệnh docker compose, không có gạch ngang ở giữa).

Nếu VPS chưa được cài đặt, xem hướng dẫn cài đặt Ubuntu trên VPS/Cloud Server để chọn đúng template hệ điều hành khi tạo máy.

Thuê VPS InterData

CPU thế hệ mới, SSD NVMe U.2, hỗ trợ kỹ thuật 24/7

Cần VPS Linux để cài đặt và sử dụng Uptime Kuma?

Để cài đặt và sử dụng Uptime Kuma theo dõi uptime, bạn cần một VPS Linux có quyền root để chạy Docker. InterData cung cấp các gói VPS chạy Ubuntu/Debian, sẵn sàng cho việc cài Docker và triển khai Uptime Kuma ngay sau khi đăng nhập.

Xem Bảng Giá Thuê VPS ⟶

Cách Cài Đặt Uptime Kuma Bằng Docker Compose Trên VPS Ubuntu

Docker Compose là cách cài Uptime Kuma được khuyến nghị. Lý do rất thực tế: khi cần nâng cấp, bạn chỉ chạy docker compose pull && docker compose up -d, dữ liệu nằm trong volume riêng nên không bị mất khi rebuild container. Cách cài bằng npm/Node.js chỉ nên dùng khi bạn có lý do đặc biệt để không dùng Docker.

1/ Tạo thư mục và tải file compose 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

File compose.yaml chính thức khai báo image louislam/uptime-kuma:2, volume ./data:/app/data và cổng mặc định 3001. Muốn xem nội dung trước khi chạy thì gõ cat compose.yaml.

2/ Khởi động container

docker compose up -d

Lệnh này tải image, tạo container tên uptime-kuma và chạy nền. Kiểm tra lại bằng docker ps, cột STATUS phải hiển thị Up.

Khởi động Container

3/ Mở port 3001 trên UFW

ufw allow 3001/tcp
ufw status

Nếu chưa quen với UFW, bài cài đặt và cấu hình UFW trên Ubuntu giải thích cách mở port an toàn mà không tự khóa SSH. Lưu ý một chuyện khá phiền: Docker có thể bypass UFW trong một số cấu hình, nên nếu mở port rồi mà vẫn không truy cập được thì nên kiểm tra kỹ lại.

4/ Truy cập dashboard và tạo tài khoản admin

Mở trình duyệt, vào http://IP_VPS:3001. Lần đầu truy cập, Uptime Kuma yêu cầu tạo tài khoản admin. Đặt username và password mạnh, nhớ bật 2FA nếu có thể.

Truy cập Uptime Kuma

5/ Kiểm tra log nếu container không khởi động

docker logs uptime-kuma --tail 50

Log sẽ chỉ ra lỗi cụ thể: port bị chiếm, volume không ghi được, hoặc image không tải được.

Đến đây bạn đã có Uptime Kuma chạy trên port 3001. Bước tiếp theo là thay IP bằng domain và bật HTTPS, vì để nguyên IP:3001 mà dùng thì không ổn chút nào.

Cấu Hình Nginx Reverse Proxy Và SSL Cho Uptime Kuma

Truy cập dashboard qua http://IP:3001 có nghĩa là bất kỳ ai biết IP đều thấy trang đăng nhập của bạn. Cấu hình Nginx reverse proxy giải quyết chuyện đó: bạn dùng domain riêng và bật HTTPS miễn phí qua Certbot.

Một điểm cần nhớ: Uptime Kuma dùng WebSocket (Socket.IO) cho dashboard real-time. Thiếu header WebSocket là dashboard hiển thị “Lost connection to the socket server” ngay. Cấu hình dưới đây đã bao gồm các header cần thiết.

1/ Cài Nginx và Certbot

apt update
apt install nginx python3-certbot-nginx -y

2/ Tạo file cấu hình Nginx

nano /etc/nginx/sites-available/uptime-kuma

Dán nội dung sau, nhớ thay status.yourdomain.com bằng domain thật của bạn:

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;
    }
}

Tạo file cấu hình Nginx

3/ Kích hoạt site và kiểm tra cấu hình

ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

nginx -t sẽ báo lỗi nếu cú pháp sai. Không reload khi config chưa pass kiểm tra, kẻo Nginx chết luôn.

4/ Cấp SSL bằng Certbot

certbot --nginx -d status.yourdomain.com

Cấp SSL bằng Certbot

Certbot tự lấy chứng chỉ Let’s Encrypt, sửa file Nginx để chuyển HTTP sang HTTPS, và thiết lập gia hạn tự động. Xong bước này thì thử https://status.yourdomain.com xem sao.

5/ Đóng port 3001 sau khi reverse proxy hoạt động

ufw delete allow 3001/tcp
ufw status

Sau khi Nginx proxy thành công, port 3001 không cần mở ra internet nữa. Giữ nó chỉ accessible từ localhost giúp giảm bề mặt tấn công.

Một lưu ý nữa: Uptime Kuma không hỗ trợ triển khai trong subdirectory kiểu https://example.com/uptime. Bạn phải dùng subdomain riêng, ví dụ status.example.com.

Săn Ưu Đãi VPS Tiết Kiệm

Canh Me tổng hợp khuyến mãi, mã giảm giá, Hot Deals VPS và Cloud Server mới nhất của InterData, giúp bạn xem trước để chọn cấu hình phù hợp với chi phí tốt nhất.

Xem Các Ưu Đãi Tiết Kiệm Tại Canh Me ⟶

Các Loại Monitor Trong Uptime Kuma Và Cách Cài Đặt

Uptime Kuma hỗ trợ nhiều loại monitor cho các tình huống khác nhau. Bảng dưới tóm tắt nhanh:

Loại monitor Dùng để làm gì Thông số cần điền
HTTP(s) Theo dõi website, API endpoint URL, phương thức GET/POST, mã trạng thái mong đợi
Ping Kiểm tra VPS còn sống không Hostname hoặc IP
TCP Port Kiểm tra dịch vụ cụ thể (SSH, MySQL, Redis) Hostname, port
Docker Container Giám sát container đang chạy Tên container (cần mount socket Docker)
DNS Record Kiểm tra bản ghi DNS trỏ đúng Domain, loại bản ghi, giá trị mong đợi

Monitor HTTP/HTTPS cho website

Vào Add New Monitor, chọn HTTP(s). Điền URL đầy đủ, ví dụ https://interdata.vn. Đặt Heartbeat Interval 60 giây cho website ít thay đổi, hoặc 20 giây nếu cần phát hiện sự cố nhanh. Nhớ bật Certificate Expiry Notification để nhận cảnh báo khi SSL sắp hết hạn, chuyện này khá phổ biến và dễ bị bỏ qua.

Monitor Ping cho VPS

Chọn Ping, nhập IP hoặc hostname của VPS cần theo dõi. Ping monitor chỉ kiểm tra máy chủ có phản hồi ICMP hay không, chứ không kiểm tra dịch vụ bên trong. Nếu VPS chặn ICMP thì dùng TCP Port monitor thay thế.

Monitor TCP Port

Chọn TCP Port, nhập hostname và port. Ví dụ để kiểm tra SSH: hostname là IP VPS, port là 22. Muốn kiểm tra MySQL thì port 3306. Loại monitor này hữu ích khi bạn cần biết dịch vụ cụ thể còn listen hay không.

Monitor Docker Container

Để giám sát Docker container, bạn cần mount Docker socket vào container Uptime Kuma. Sửa file 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"

Chạy lại container bằng docker compose up -d --force-recreate. Trong Uptime Kuma, chọn Docker Container và chỉ định tên container cần giám sát. Cần nói rõ: mount Docker socket có rủi ro bảo mật, chỉ nên làm khi bạn thực sự hiểu hệ thống của mình.

Cách Cài Đặt Thông Báo Telegram Cho Uptime Kuma

Telegram là kênh thông báo được dùng nhiều nhất vì miễn phí, nhanh và cấu hình đơn giản. Bạn cần hai thứ: Telegram Bot Token và Chat ID.

1/ Tạo bot Telegram

Mở Telegram, tìm @BotFather. Gõ /newbot, đặt tên bot và username. BotFather sẽ trả về một token dạng 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ. Lưu token này lại.

2/ Lấy Chat ID

Gửi một tin nhắn bất kỳ cho bot vừa tạo. Sau đó truy cập:

curl https://api.telegram.org/bot<TOKEN>/getUpdates

Trong kết quả JSON, tìm trường "chat":{"id":...}. Đó là Chat ID. Với nhóm, Chat ID thường có dạng số âm.

3/ Cấu hình trong Uptime Kuma

Vào Settings → Notifications → Setup Notification. Chọn Telegram, điền Bot TokenChat ID. Nhấn Test để gửi tin nhắn thử. Nhận được tin nhắn trong Telegram là cấu hình thành công.

4/ Gán notification vào monitor

Khi tạo hoặc sửa monitor, ở mục Notifications, tick vào notification Telegram vừa tạo. Bạn có thể gán nhiều notification cho cùng một monitor, chẳng hạn vừa Telegram vừa email.

Tạo Status Page Trên Uptime Kuma Để Chia Sẻ Với Khách Hàng

Status Page là trang công khai hiển thị trạng thái các dịch vụ. Bạn chia sẻ link này với khách hàng để họ tự kiểm tra, thay vì cứ gọi hỏi mãi.

1/ Tạo Status Page mới

Trong dashboard, vào Status Pages → New Status Page. Đặt tên, ví dụ “Trạng thái dịch vụ”, và slug URL, ví dụ trang-thai.

2/ Thêm monitor vào trang

Trong phần Monitors, chọn các monitor muốn hiển thị. Bạn có thể nhóm chúng thành các nhóm riêng như “Website”, “API”, “Hạ tầng” cho dễ nhìn.

3/ Thiết lập quyền truy cập

Đặt Public nếu muốn ai cũng xem được, hoặc Private nếu chỉ chia sẻ với người có link. Với khách hàng doanh nghiệp, dùng chế độ private kèm mật khẩu sẽ hợp lý hơn.

4/ Gán domain riêng

Trong phần Custom Domain, nhập domain muốn dùng, ví dụ status.yourdomain.com. Sau đó thêm bản ghi CNAME trỏ về domain Uptime Kuma. Nếu đã cấu hình Nginx reverse proxy với wildcard hoặc subdomain riêng thì có thể dùng luôn.

Status Page giúp giảm số lượng ticket hỗ trợ khi có sự cố. Khách tự kiểm tra được thay vì gọi điện hỏi.

Bảo Mật Uptime Kuma Cho Môi Trường Production

Khi Uptime Kuma dùng để giám sát production, bảo mật dashboard quan trọng không kém việc giám sát chính nó. Có vài bước bạn nên làm:

  • Bật 2FA trong Settings → Security. Không bật thì chỉ cần lộ mật khẩu là toàn bộ dữ liệu giám sát bị truy cập.
  • Đóng port 3001 ra internet sau khi đã có Nginx reverse proxy. Chỉ giữ port này accessible từ localhost.
  • Cập nhật image định kỳ bằng docker compose pull && docker compose up -d. Uptime Kuma ra bản vá khá thường xuyên, bỏ qua cập nhật là rủi ro không đáng có.
  • Đặt restart policyunless-stopped hoặc always trong file compose để container tự khởi động lại sau khi VPS reboot.

Nếu bạn chạy nhiều dịch vụ trên cùng một VPS, ví dụ ứng dụng chính và Uptime Kuma, chuyện cô lập tài nguyên và quản lý container trở nên quan trọng hơn. Bài triển khai ứng dụng trên VPS với Coolify trình bày cách quản lý nhiều dịch vụ Docker song song, kèm giao diện web để giám sát.

Trường hợp VPS hiện tại đã quá tải hoặc bạn muốn reset lại từ đầu, xem hướng dẫn cài lại hệ điều hành VPS để có môi trường sạch trước khi triển khai Uptime Kuma.

Cloud Server InterData

Nâng/hạ tài nguyên nhanh theo tải, mạng tốc độ cao

Giám sát nhiều dịch vụ cho môi trường production?

Khi Uptime Kuma phục vụ nhiều dịch vụ, nhiều thành viên nhóm cùng truy cập dashboard, hoặc tải tăng đột biến, Cloud Server cho phép tăng RAM/CPU mà không cần rebuild cấu hình Docker từ đầu. Phù hợp khi bạn muốn mở rộng quy mô giám sát mà vẫn giữ nguyên kiến trúc đã triển khai.

Xem Bảng Giá Cloud Server ⟶

Xử Lý Các Lỗi Thường Gặp Khi Cài Đặt Và Sử Dụng Uptime Kuma

Lỗi 1: Không truy cập được http://IP:3001

Triệu chứng: Trình duyệt báo “This site can’t be reached” hoặc timeout.

Nguyên nhân: Port 3001 bị UFW chặn, container không chạy, hoặc firewall của nhà cung cấp VPS chặn port này.

Debug:

# Kiểm tra container
docker ps | grep uptime-kuma

# Kiểm tra UFW
ufw status

# Mở port nếu chưa mở
ufw allow 3001/tcp

Nếu container đang chạy mà vẫn không vào được, kiểm tra firewall của nhà cung cấp VPS. Nhiều nơi có firewall riêng chặn port 3001.

Lỗi 2: 502 Bad Gateway sau khi cấu hình Nginx

Triệu chứng: Truy cập domain qua Nginx trả về 502 Bad Gateway.

Nguyên nhân: Nginx không kết nối được tới container Uptime Kuma. Thường gặp khi container chưa chạy, proxy_pass sai port, hoặc thiếu header WebSocket.

Debug:

# Kiểm tra container
docker ps | grep uptime-kuma

# Xem log Nginx
tail -f /var/log/nginx/error.log

# Kiểm tra cấu hình Nginx
nginx -t

Đảm bảo proxy_pass http://localhost:3001; khớp với port thực tế. Nếu Uptime Kuma chạy trong Docker network riêng, dùng tên container thay vì localhost.

Lỗi 3: Container dừng sau khi VPS reboot

Triệu chứng: Sau khi reboot VPS, Uptime Kuma không tự khởi động lại.

Nguyên nhân: Thiếu restart: unless-stopped hoặc restart: always trong file compose.

Fix:

# Xem file compose
cat /opt/uptime-kuma/compose.yaml

# Nếu thiếu restart policy, thêm vào rồi chạy lại
docker compose down
docker compose up -d

File compose chính thức đã có restart: unless-stopped. Nếu bạn tự viết file thì nên kiểm tra lại chỗ này.

Lỗi 4: Quên mật khẩu admin Uptime Kuma

Triệu chứng: Không đăng nhập được dashboard, giao diện không có chức năng “quên mật khẩu”.

Nguyên nhân: Uptime Kuma không hỗ trợ reset qua email, phải dùng CLI.

Fix:

docker exec -it uptime-kuma bash
npm run reset-password

Script sẽ hỏi username và mật khẩu mới. Mật khẩu được lưu trong SQLite database tại /app/data/kuma.db. Xong thì gõ exit để thoát container.

Câu Hỏi Thường Gặp về Uptime Kuma

Uptime Kuma có hoàn toàn miễn phí không?

Có. Uptime Kuma là mã nguồn mở, miễn phí sử dụng, không giới hạn số monitor và không có phí license. Chi phí duy nhất là VPS để chạy nó. Nếu chỉ giám sát vài dịch vụ, một gói VPS giá rẻ là đủ.

Uptime Kuma cần VPS cấu hình tối thiểu bao nhiêu?

Tối thiểu 1 vCPU và 512 MB RAM là chạy được với vài monitor. Nếu giám sát nhiều dịch vụ hoặc đặt interval 20 giây, nên dùng 1 GB RAM trở lên. Dung lượng đĩa 5 đến 20 GB là đủ vì dữ liệu chủ yếu là text.

Có thể cài Uptime Kuma trên cùng VPS đang chạy website không?

Được, miễn là VPS còn đủ RAM và CPU. Tuy nhiên nếu website đang chạy production, nên tách Uptime Kuma ra VPS riêng để tránh ảnh hưởng lẫn nhau và đảm bảo giám sát độc lập. Khi VPS chính sập, Uptime Kuma vẫn phải hoạt động.

Uptime Kuma lưu dữ liệu ở đâu và có thể backup không?

Dữ liệu mặc định nằm trong SQLite database tại ./data/kuma.db, mount từ volume Docker. Bạn có thể backup bằng cách copy thư mục data hoặc dùng docker exec để dump database. Nên backup định kỳ nếu cấu hình nhiều monitor.

Làm sao để cập nhật Uptime Kuma lên phiên bản mới nhất?

Vào thư mục chứa file compose, chạy docker compose pull để tải image mới, sau đó docker compose up -d để recreate container. Dữ liệu trong volume ./data giữ nguyên. Nên đọc release notes trước khi nâng cấp major version.

Lời kết

Cài đặt và sử dụng Uptime Kuma theo dõi uptime không hề phức tạp nếu bạn đi đúng thứ tự: Docker Compose để chạy container, Nginx reverse proxy để dùng domain và HTTPS, Telegram để nhận cảnh báo, Status Page để chia sẻ trạng thái với khách hàng. Toàn bộ quá trình mất khoảng 20 đến 30 phút trên một VPS Ubuntu sạch.

Điểm mạnh của Uptime Kuma nằm ở quyền kiểm soát: dữ liệu trên server của bạn, không giới hạn monitor, không phụ thuộc dịch vụ bên thứ ba. Chưa có VPS thì bắt đầu với một gói phù hợp. Đã có VPS rồi thì chạy ngay docker compose up -d và thêm monitor đầu tiên.

Nội dung mang tính tham khảo. Lệnh, cú pháp, đường dẫn file và tùy chọn cấu hình có thể thay đổi theo phiên bản hệ điều hành, phiên bản phần mềm và môi trường cụ thể. Nên kiểm thử, sao lưu dữ liệu và đánh giá rủi ro trước khi áp dụng lên server production.