Uptime Kuma: Tự host hệ thống giám sát website miễn phí, không giới hạn
Chán giới hạn 50 monitor miễn phí của UptimeRobot? Uptime Kuma cho bạn self-host hệ thống monitoring xịn sò, không giới hạn, setup chỉ 5 phút với Docker.
Nguyen Nhat Long
@longnn

Uptime Kuma: Tự host hệ thống giám sát website miễn phí, không giới hạn
3 giờ sáng, khách hàng nhắn "anh ơi web chết rồi" — trong khi bạn đang ngủ ngon lành. Quen chưa? Mình từng dính vụ này, website down gần 2 tiếng mà không hay biết vì... quên check email thông báo từ UptimeRobot. Từ đó mình quyết tâm tìm một giải pháp monitoring mà mình kiểm soát hoàn toàn, và Uptime Kuma chính là câu trả lời.
Tại sao không dùng UptimeRobot hay Hetrixtools cho xong?
Thực ra mình dùng cả hai dịch vụ này khá lâu rồi:
- UptimeRobot: miễn phí 50 monitor, kiểm tra mỗi 5 phút
- Hetrixtools: miễn phí 15 monitor, kiểm tra mỗi 1 phút
Với nhu cầu cá nhân thì ổn. Nhưng khi bạn bắt đầu quản lý nhiều project, nhiều server, cần monitor cả Docker container, cần check mỗi 20 giây thay vì 5 phút — thì gói miễn phí không đủ nữa. Gói trả phí thì... cũng không rẻ.
Điều mình thấy hay là: trong thời đại self-hosting đang lên ngôi, hoàn toàn có thể tự dựng một hệ thống monitoring xịn sò mà không tốn thêm đồng nào — ngoài chi phí VPS mà bạn đang có sẵn.

Uptime Kuma là gì?
Uptime Kuma là một công cụ mã nguồn mở (open-source) để giám sát trạng thái hoạt động của website và dịch vụ mạng. Nói đơn giản: nó liên tục "ping" vào website/server của bạn, và hét lên khi có gì đó chết.
Những thứ khiến mình chọn Uptime Kuma thay vì các giải pháp khác:
- Không giới hạn số lượng monitor — muốn theo dõi bao nhiêu tùy thích
- Chu kỳ kiểm tra tối thiểu 20 giây — nhanh hơn nhiều so với 5 phút của UptimeRobot free
- Hỗ trợ đa dạng: HTTP(s), TCP Port, Ping, DNS Record, Docker Container, Steam Game Server...
- Thông báo qua 90+ kênh: Telegram, Discord, Slack, Email, Gotify, Pushover...
- Giao diện đẹp, load nhanh, hỗ trợ tiếng Việt
- Status Page riêng với custom domain
- Theo dõi SSL certificate — biết trước khi cert hết hạn
- Hỗ trợ 2FA cho bảo mật
Theo kinh nghiệm của mình, setup từ đầu đến khi chạy được chưa tới 10 phút nếu bạn đã quen Docker.
Cài đặt Uptime Kuma với Docker
Mình khuyến khích dùng Docker vì nó sạch sẽ, dễ backup, dễ migrate. Nếu VPS chưa có Docker, cài nhanh bằng lệnh:
bash:::curl -fsSLhttps://get.docker.com-o get-docker.sh sudo sh get-docker.sh
Tạo file docker-compose.yml:
1services:2 uptime-kuma:3 image: louislam/uptime-kuma:14 container_name: uptime-kuma5 volumes:6 - ./uptime-kuma-data:/app/data7 ports:8 - 3001:30019 restart: always
Chạy lên:
1docker compose up -d
Truy cập http://<IP-VPS>:3001, tạo tài khoản admin, xong. Đơn giản vậy thôi.

Thiết lập Reverse Proxy
Chạy trên port 3001 thì hơi "trần trụi". Bạn sẽ muốn gắn domain và HTTPS cho nó. Có hai cách phổ biến:
- Cloudflare Tunnel: Uptime Kuma tích hợp sẵn, vào Settings → Reverse Proxy là thấy
- Nginx Proxy Manager (NPM): Mình thích cách này hơn vì đang dùng NPM cho các service khác trên cùng VPS
Nếu dùng NPM, bạn cần cho Uptime Kuma vào cùng Docker network với NPM. File docker-compose.yml sẽ cần chỉnh lại — bỏ phần ports và thêm networks. Mình sẽ show ở phần dưới.
Tạo monitor và cấu hình thông báo
Sau khi đăng nhập, bấm Add New Monitor. Với website thông thường, chọn HTTP(s), nhập URL, đặt tên, chọn chu kỳ kiểm tra. Mình thường để 60 giây — đủ nhanh mà không gây load thừa.
Một tip nhỏ: nhớ tick vào Certificate Expiry Notification để được cảnh báo khi SSL certificate sắp hết hạn. Mình từng quên renew cert và web bị Chrome chặn, mất traffic cả buổi sáng.
Thiết lập thông báo qua Discord
Mình chọn Discord vì team mình dùng Discord hàng ngày. Cách setup:
- Trong Discord: Server Settings → Integrations → Webhooks → New Webhook
- Đặt tên, chọn channel, copy Webhook URL
- Trong Uptime Kuma: bấm Setup Notification, chọn Discord, paste URL vào
Khi website down, bạn sẽ nhận được thông báo tức thì trong channel Discord. Khi website up lại, cũng có thông báo. Rất tiện để cả team cùng thấy.

Bonus: Giám sát Docker Container
Đây là tính năng mình rất thích. Ngoài monitor website, Uptime Kuma còn theo dõi được các Docker container đang chạy trên cùng máy chủ.
Để bật tính năng này, thêm Docker socket vào file docker-compose.yml:
1services:2 uptime-kuma:3 image: louislam/uptime-kuma:latest4 container_name: uptime-kuma5 volumes:6 - ./uptime-kuma-data:/app/data7 - /var/run/docker.sock:/var/run/docker.sock8 restart: always9 networks:10 default:11 name: ovh12 external: true
Sau đó vào Settings → Docker Host → Setup Docker Host để kết nối. Khi tạo monitor mới, chọn Monitor Type: Docker Container và nhập tên hoặc ID container (chạy docker ps để xem).
Theo kinh nghiệm của mình, tính năng này cực kỳ hữu ích khi bạn chạy nhiều service trên cùng VPS. Container nào crash là biết ngay, không cần SSH vào check thủ công.

Tạo Status Page công khai
Uptime Kuma cho phép tạo Status Page — trang hiển thị trạng thái các dịch vụ của bạn, giống như status.github.com. Bạn có thể gắn custom domain cho nó, rất chuyên nghiệp nếu bạn cung cấp dịch vụ cho khách hàng.
Những điều cần lưu ý
Sau hơn 1 năm sử dụng Uptime Kuma, mình rút ra vài điểm:
- Đặt Uptime Kuma trên VPS khác với VPS chạy website chính. Nếu cùng VPS mà VPS chết thì monitoring cũng chết theo — vô nghĩa.
- VPS giá rẻ là đủ. Mình dùng VPS OVH giá $11.64/năm, chạy mượt mà. Uptime Kuma rất nhẹ.
- Backup định kỳ thư mục
uptime-kuma-data. Toàn bộ cấu hình và lịch sử nằm trong đó. - Không mount Docker socket nếu không cần. Đó là quyền truy cập nhạy cảm, chỉ bật khi thực sự cần monitor Docker container.

Vài lời cuối
Uptime Kuma là một trong những công cụ self-hosted mà mình recommend cho bất kỳ ai quản lý website hay server. Miễn phí, mã nguồn mở, cài đặt đơn giản, giao diện đẹp, và quan trọng nhất — bạn kiểm soát hoàn toàn data của mình.
Nếu bạn đang dùng UptimeRobot free và thấy 50 monitor không đủ, hoặc đơn giản là muốn check mỗi 20 giây thay vì 5 phút, thì Uptime Kuma là lựa chọn không cần suy nghĩ. Cứ bỏ ra 10 phút setup, bạn sẽ thấy nó đáng từng giây.
Nguyen Nhat Long
@longnnThấy hay? Chia sẻ cho bạn bè!
Bài viết liên quan
Có thể bạn cũng thích
