{"id":43623,"date":"2026-09-19T14:33:58","date_gmt":"2026-09-19T07:33:58","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=43623"},"modified":"2026-09-19T14:33:58","modified_gmt":"2026-09-19T07:33:58","slug":"cai-dat-va-su-dung-uptime-kuma","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-uptime-kuma\/","title":{"rendered":"H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Uptime Kuma Theo D\u00f5i Uptime"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 100%;\"><strong>C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Uptime Kuma theo d\u00f5i uptime<\/strong> gi\u1ea3i quy\u1ebft \u0111\u00fang m\u1ed9t v\u1ea5n \u0111\u1ec1 \u0111au \u0111\u1ea7u: b\u1ea1n bi\u1ebft website s\u1eadp ngay l\u00fac n\u00f3 s\u1eadp, ch\u1ee9 kh\u00f4ng ph\u1ea3i \u0111\u1ee3i kh\u00e1ch nh\u1eafn &#8220;web kh\u00f4ng v\u00e0o \u0111\u01b0\u1ee3c&#8221; r\u1ed3i m\u1edbi cu\u1ed1ng l\u00ean ki\u1ec3m tra. Nhi\u1ec1u qu\u1ea3n tr\u1ecb vi\u00ean v\u1eabn \u0111\u1ec3 s\u1ef1 c\u1ed1 k\u00e9o d\u00e0i h\u00e0ng gi\u1edd ch\u1ec9 v\u00ec kh\u00f4ng c\u00f3 c\u00f4ng c\u1ee5 c\u1ea3nh b\u00e1o t\u1ef1 \u0111\u1ed9ng. B\u00e0i n\u00e0y \u0111i t\u1eebng b\u01b0\u1edbc t\u1eeb c\u00e0i Docker Compose, c\u1ea5u h\u00ecnh Nginx reverse proxy, cho t\u1edbi g\u1eedi c\u1ea3nh b\u00e1o Telegram, t\u1ea5t c\u1ea3 ch\u1ea1y tr\u00ean VPS Linux c\u1ee7a <a href=\"https:\/\/interdata.vn\/\">InterData<\/a>.<\/span><\/p>\n<div style=\"background-color: #eff6ff; padding: 20px; border: 1.5px solid #BFDBFE; border-radius: 12px; margin-bottom: 40px; box-shadow: 0 8px 20px rgba(37,99,235,0.05);\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; font-size: 18px; margin: 0 0 15px; color: #1e3a8a;\">N\u1ed8I DUNG B\u00c0I VI\u1ebeT<\/p>\n<ul style=\"list-style-type: none; padding-left: 0; margin: 0;\">\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section1\">Uptime Kuma l\u00e0 g\u00ec? T\u1ea1i sao n\u00ean d\u00f9ng thay v\u00ec UptimeRobot?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section2\">Y\u00eau c\u1ea7u h\u1ec7 th\u1ed1ng v\u00e0 chu\u1ea9n b\u1ecb tr\u01b0\u1edbc khi c\u00e0i Uptime Kuma<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section3\">C\u00e1ch C\u00e0i \u0110\u1eb7t Uptime Kuma B\u1eb1ng Docker Compose Tr\u00ean VPS Ubuntu<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section4\">C\u1ea5u H\u00ecnh Nginx Reverse Proxy V\u00e0 SSL Cho Uptime Kuma<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section5\">C\u00e1c Lo\u1ea1i Monitor Trong Uptime Kuma V\u00e0 C\u00e1ch C\u00e0i \u0110\u1eb7t<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section6\">C\u00e1ch C\u00e0i \u0110\u1eb7t Th\u00f4ng B\u00e1o Telegram Cho Uptime Kuma<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section7\">T\u1ea1o Status Page Tr\u00ean Uptime Kuma \u0110\u1ec3 Chia S\u1ebb V\u1edbi Kh\u00e1ch H\u00e0ng<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section8\">B\u1ea3o M\u1eadt Uptime Kuma Cho M\u00f4i Tr\u01b0\u1eddng Production<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section9\">X\u1eed L\u00fd C\u00e1c L\u1ed7i Th\u01b0\u1eddng G\u1eb7p Khi C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Uptime Kuma<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#faq\">C\u00e2u H\u1ecfi Th\u01b0\u1eddng G\u1eb7p v\u1ec1 Uptime Kuma<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n<style>\n.interdata-plan-carousel,.interdata-plan-carousel *{box-sizing:border-box}\n.interdata-plan-carousel{--blue:#005bea;--blue-dark:#004dcc;--text:#071832;--muted:#516173;--border:#d8e6fb;--bg:#f3f8ff;--shadow:0 5px 14px rgba(0,62,145,.08);background:var(--bg);padding:14px 56px 18px;position:relative;overflow:hidden;border-radius:20px;}\n.interdata-carousel-heading{color:#f00;font-family:Roboto,sans-serif;font-size:18px;line-height:1.35;font-weight:800;text-align:center;margin:0 0 14px}\n.interdata-plan-viewport{overflow:hidden;width:100%}\n.interdata-plan-track{display:flex;align-items:stretch;gap:12px;overflow:visible;padding:0 0 4px;transform:translate3d(0,0,0);transition:transform .45s ease;will-change:transform;touch-action:pan-y}\n.interdata-plan-card{flex:0 0 calc((100% - 24px)\/3);min-width:0;min-height:0!important;height:auto;background:#fff;border:1px solid var(--border);border-radius:8px;padding:15px 12px 13px;display:flex;flex-direction:column;box-shadow:var(--shadow)}\n.interdata-plan-title{color:var(--blue-dark);font-size:16px;line-height:1.22;font-weight:800;text-align:center;margin:0 0 7px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.interdata-plan-price{color:var(--blue-dark);font-size:24px;line-height:1;font-weight:900;text-align:center;margin-bottom:12px;white-space:nowrap;letter-spacing:0}\n.interdata-plan-price span{font-size:10px;font-weight:800;margin-left:2px}\n.interdata-plan-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;background:#ff3934;color:#fff;border-radius:5px;padding:7px 8px;font-size:9px;line-height:1;font-weight:800;margin-bottom:15px;white-space:nowrap;max-width:100%}\n.interdata-plan-features{list-style:none!important;padding:0!important;margin:0!important}\n.interdata-plan-features li{display:flex;gap:7px;align-items:flex-start;color:var(--text);font-size:12px;line-height:1.35;font-weight:700;text-align:left;margin:0 0 10px!important;padding:0!important}\n.interdata-plan-icon{width:14px;min-width:14px;height:14px;color:#0069ff;margin-top:2px}\n.interdata-plan-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.interdata-plan-spacer{flex:1;min-height:16px}\n.interdata-plan-button{display:flex;align-items:center;justify-content:center;min-height:42px;width:100%;margin-top:auto!important;margin-bottom:0!important;background:var(--blue);color:#fff!important;border-radius:5px;font-size:13px;font-weight:800;text-decoration:none!important;box-shadow:0 7px 14px rgba(0,91,234,.24);transition:transform .2s ease,background .2s ease}\n.interdata-plan-button:hover{background:var(--blue-dark);color:#fff!important;transform:translateY(-1px)}\n.interdata-carousel-arrow{position:absolute;top:50%;z-index:5;width:44px;height:54px;border:2px solid #fff!important;border-radius:999px;background:var(--blue)!important;color:#fff!important;box-shadow:0 8px 22px rgba(0,62,145,.32);display:flex!important;align-items:center;justify-content:center;cursor:pointer;transform:translateY(-35%);transition:background .2s ease,color .2s ease,opacity .2s ease,transform .2s ease}\n.interdata-carousel-arrow:hover{background:var(--blue-dark)!important;color:#fff!important;transform:translateY(-35%) scale(1.04)}\n.interdata-carousel-arrow:disabled{opacity:.78;cursor:not-allowed;background:#8aa6cf!important;color:#fff!important}\n.interdata-carousel-arrow:disabled:hover{background:#8aa6cf!important;color:#fff!important;transform:translateY(-35%)}\n.interdata-carousel-arrow svg{display:none!important}\n.interdata-carousel-arrow:before{content:none!important;display:none!important}\n.interdata-carousel-mark{display:block!important;color:#fff!important;font-family:Arial,Helvetica,sans-serif!important;font-size:38px!important;font-weight:900!important;line-height:1!important;text-align:center!important;pointer-events:none!important;transform:translateY(-2px)}\n.interdata-carousel-prev{left:14px}\n.interdata-carousel-prev .interdata-carousel-mark{margin-left:-2px}\n.interdata-carousel-next{right:14px}\n.interdata-carousel-next .interdata-carousel-mark{margin-right:-2px}\n@media (max-width:800px){.interdata-plan-carousel{padding:12px 44px 16px}.interdata-plan-card{flex-basis:calc((100% - 12px)\/2)}.interdata-carousel-heading{font-size:16px}.interdata-carousel-prev{left:6px}.interdata-carousel-next{right:6px}}\n@media (max-width:480px){.interdata-plan-carousel{padding:12px 38px 16px}.interdata-plan-card{flex-basis:100%}.interdata-plan-price{font-size:23px}.interdata-carousel-arrow{width:34px;height:44px}.interdata-carousel-mark{font-size:32px!important}.interdata-carousel-prev{left:3px}.interdata-carousel-next{right:3px}}\n<\/style>\n\n<div class=\"interdata-plan-carousel\" data-interdata-carousel>\n  <div class=\"interdata-carousel-heading\">Si\u00eau \u01afu \u0110\u00e3i VPS \/ CLOUD SERVER - Ti\u1ebft Ki\u1ec7m \u0110\u1ebfn 70%<\/div>\n\n  <svg width=\"0\" height=\"0\" style=\"position:absolute;visibility:hidden\" aria-hidden=\"true\">\n    <symbol id=\"id-icon-cpu\" viewBox=\"0 0 24 24\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"><\/rect><path d=\"M4 9h3M4 15h3M17 9h3M17 15h3M9 4v3M15 4v3M9 17v3M15 17v3\"><\/path><path d=\"M10 10h4v4h-4z\"><\/path><\/symbol>\n    <symbol id=\"id-icon-ram\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"8\" rx=\"2\"><\/rect><path d=\"M7 16v2M11 16v2M15 16v2M19 16v2M7 11h1M11 11h1M15 11h1\"><\/path><\/symbol>\n    <symbol id=\"id-icon-storage\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6\"><\/path><circle cx=\"12\" cy=\"16\" r=\"1.5\"><\/circle><\/symbol>\n    <symbol id=\"id-icon-network\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5a10 10 0 0 1 14 0\"><\/path><path d=\"M8.5 16a5 5 0 0 1 7 0\"><\/path><path d=\"M12 19h.01\"><\/path><\/symbol>\n    <symbol id=\"id-icon-gift\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\"><\/rect><path d=\"M12 8v13M3 12h18\"><\/path><path d=\"M7.5 8C6.1 8 5 6.9 5 5.5S6.1 3 7.5 3C10 3 12 8 12 8\"><\/path><path d=\"M16.5 8C17.9 8 19 6.9 19 5.5S17.9 3 16.5 3C14 3 12 8 12 8\"><\/path><\/symbol>\n  <\/svg>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-prev\" type=\"button\" aria-label=\"Xem 3 g\u00f3i tr\u01b0\u1edbc\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p-1+s.length)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 18l-6-6 6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8249;<\/span>\n  <\/button>\n\n  <div class=\"interdata-plan-viewport\">\n    <div class=\"interdata-plan-track\">\n      <!-- 7 card d\u1ef1 ph\u00f2ng: JavaScript s\u1ebd \u0111\u1ed3ng b\u1ed9 l\u1ea1i t\u1eeb API portal khi trang t\u1ea3i. -->\n      <article class=\"interdata-plan-card\" data-plan-pid=\"490\">\n        <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n        <div class=\"interdata-plan-price\">299.000 \u0111<span>\/3 th\u00e1ng<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore Intel Xeon Scalable<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>2 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-value-plans-2026\/best-value-plans-premium-base\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"529\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 1<\/h3>\n        <div class=\"interdata-plan-price\">998.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"530\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 2<\/h3>\n        <div class=\"interdata-plan-price\">2.666.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>5 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>70 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"531\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 3<\/h3>\n        <div class=\"interdata-plan-price\">5.888.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>9 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"521\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 1<\/h3>\n        <div class=\"interdata-plan-price\">988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>3 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"522\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 2<\/h3>\n        <div class=\"interdata-plan-price\">2.988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>4 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>80 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"523\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 3<\/h3>\n        <div class=\"interdata-plan-price\">5.999.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>8 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>400 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n    <\/div>\n  <\/div>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-next\" type=\"button\" aria-label=\"Xem 3 g\u00f3i ti\u1ebfp theo\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p+1)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8250;<\/span>\n  <\/button>\n<\/div>\n\n<script>\n(function(){\n  var API_GROUPS=[\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=89&module',pids:[490]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=100&module',pids:[529,530,531]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=97&module',pids:[521,522,523]}\n  ];\n  var PLAN_CYCLES={\n    490:{key:'quarterly',label:'3 th\u00e1ng'},\n    529:{key:'annually',label:'n\u0103m'},\n    530:{key:'annually',label:'n\u0103m'},\n    531:{key:'annually',label:'n\u0103m'},\n    521:{key:'annually',label:'n\u0103m'},\n    522:{key:'annually',label:'n\u0103m'},\n    523:{key:'annually',label:'n\u0103m'}\n  };\n\n  function fetchPlanData(){\n    if(window.interdataPlanApiPromise)return window.interdataPlanApiPromise;\n\n    window.interdataPlanApiPromise=Promise.all(API_GROUPS.map(function(group){\n      return fetch(group.url,{method:'GET',mode:'cors',cache:'no-store'})\n        .then(function(response){\n          if(!response.ok)throw new Error('API '+response.status);\n          return response.json();\n        })\n        .then(function(data){\n          if(!data||data.success!==true||!Array.isArray(data.products))return [];\n          return data.products.filter(function(product){\n            return group.pids.indexOf(Number(product.pid))!==-1;\n          });\n        })\n        .catch(function(error){\n          console.warn('Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt nh\u00f3m g\u00f3i InterData:',group.url,error);\n          return [];\n        });\n    })).then(function(groups){\n      return groups.reduce(function(all,products){return all.concat(products);},[]);\n    });\n\n    return window.interdataPlanApiPromise;\n  }\n\n  function parseDescription(html){\n    var source=String(html||'')\n      .replace(\/<brs*\/?>\/gi,'n')\n      .replace(\/<\/(p|div|li)>\/gi,'n');\n    var holder=document.createElement('div');\n    holder.innerHTML=source;\n    var strong=holder.querySelector('strong');\n    var badge=strong?strong.textContent.trim():'';\n    var lines=(holder.textContent||'').split(\/r?n\/).map(function(line){\n      return line.trim();\n    }).filter(Boolean);\n    if(badge&&lines[0]===badge)lines.shift();\n    return {badge:badge,features:lines};\n  }\n\n  function iconForFeature(feature){\n    if(\/ram\/i.test(feature))return 'id-icon-ram';\n    if(\/ssd|nvme|storage|disk\/i.test(feature))return 'id-icon-storage';\n    if(\/vcore|vcpu|cpu|xeon|amd\/i.test(feature))return 'id-icon-cpu';\n    if(\/ipv4|network|mbps|gbps|bandwidth\/i.test(feature))return 'id-icon-network';\n    return 'id-icon-gift';\n  }\n\n  function createFeatureItem(feature){\n    var item=document.createElement('li');\n    var icon=document.createElement('span');\n    var svg=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','svg');\n    var use=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','use');\n    icon.className='interdata-plan-icon';\n    use.setAttribute('href','#'+iconForFeature(feature));\n    svg.appendChild(use);\n    icon.appendChild(svg);\n    item.appendChild(icon);\n    item.appendChild(document.createTextNode(feature));\n    return item;\n  }\n\n  function updateCardFromApi(root,product){\n    var pid=Number(product.pid);\n    var cycle=PLAN_CYCLES[pid];\n    var card=root.querySelector('[data-plan-pid=\"'+pid+'\"]');\n    if(!card||!cycle)return;\n\n    var title=card.querySelector('.interdata-plan-title');\n    var priceBox=card.querySelector('.interdata-plan-price');\n    var badgeBox=card.querySelector('.interdata-plan-badge');\n    var featureList=card.querySelector('.interdata-plan-features');\n    var button=card.querySelector('.interdata-plan-button');\n    var description=parseDescription(product.description);\n    var pricing=product.pricing&&product.pricing.VND;\n    var price=pricing?Number(pricing[cycle.key]):-1;\n\n    if(title&&product.name)title.textContent=product.name;\n    if(priceBox&&Number.isFinite(price)&&price>=0){\n      priceBox.textContent=Math.round(price).toLocaleString('vi-VN')+' \u0111';\n      var suffix=document.createElement('span');\n      suffix.textContent='\/'+cycle.label;\n      priceBox.appendChild(suffix);\n    }\n    if(badgeBox&&description.badge)badgeBox.textContent=description.badge;\n    if(featureList&&description.features.length){\n      featureList.textContent='';\n      description.features.forEach(function(feature){\n        featureList.appendChild(createFeatureItem(feature));\n      });\n    }\n    if(button&&product.product_url)button.href=product.product_url;\n  }\n\n  function setupInterDataCarousel(root){\n    var track=root.querySelector('.interdata-plan-track');\n    var prev=root.querySelector('.interdata-carousel-prev');\n    var next=root.querySelector('.interdata-carousel-next');\n    if(!track||!prev||!next||track.dataset.ready==='1')return;\n    track.dataset.ready='1';\n    prev.disabled=false;\n    next.disabled=false;\n    var activePage=0;\n    var touchStartX=null;\n\n    function visibleCards(){\n      if(window.matchMedia&&window.matchMedia('(max-width:480px)').matches)return 1;\n      if(window.matchMedia&&window.matchMedia('(max-width:800px)').matches)return 2;\n      return 3;\n    }\n\n    function pageStarts(){\n      var total=track.querySelectorAll('.interdata-plan-card').length;\n      var visible=Math.min(visibleCards(),total||1);\n      var maxStart=Math.max(0,total-visible);\n      var starts=[];\n      var start=0;\n      while(start<maxStart){\n        starts.push(start);\n        start+=visible;\n      }\n      if(!starts.length||starts[starts.length-1]!==maxStart)starts.push(maxStart);\n      return starts;\n    }\n\n    function renderSlide(animate){\n      var cards=track.querySelectorAll('.interdata-plan-card');\n      var starts=pageStarts();\n      if(!cards.length||!starts.length)return;\n      if(activePage>=starts.length)activePage=starts.length-1;\n      if(activePage<0)activePage=0;\n\n      var cardWidth=cards[0].getBoundingClientRect().width;\n      var trackStyle=window.getComputedStyle?window.getComputedStyle(track):null;\n      var gap=trackStyle?parseFloat(trackStyle.columnGap||trackStyle.gap):12;\n      if(!Number.isFinite(gap))gap=12;\n      if(cardWidth<=0)return;\n\n      track.style.transition=animate?'transform .45s ease':'none';\n      track.style.transform='translate3d('+(-(cardWidth+gap)*starts[activePage])+'px,0,0)';\n      prev.setAttribute('aria-disabled',starts.length>1?'false':'true');\n      next.setAttribute('aria-disabled',starts.length>1?'false':'true');\n    }\n\n    function move(direction){\n      var starts=pageStarts();\n      if(starts.length<=1)return;\n      activePage=parseInt(root.getAttribute('data-inline-page')||activePage,10)||0;\n      activePage=(activePage+direction+starts.length)%starts.length;\n      root.setAttribute('data-inline-page',activePage);\n      renderSlide(true);\n    }\n\n    track.addEventListener('touchstart',function(event){\n      touchStartX=event.touches&&event.touches[0]?event.touches[0].clientX:null;\n    },{passive:true});\n    track.addEventListener('touchend',function(event){\n      if(touchStartX===null)return;\n      var endX=event.changedTouches&&event.changedTouches[0]?event.changedTouches[0].clientX:touchStartX;\n      var distance=endX-touchStartX;\n      touchStartX=null;\n      if(Math.abs(distance)>=40)move(distance<0?1:-1);\n    },{passive:true});\n\n    function resetAfterResize(){\n      activePage=0;\n      root.setAttribute('data-inline-page','0');\n      renderSlide(false);\n    }\n\n    window.addEventListener('resize',resetAfterResize);\n    window.addEventListener('load',resetAfterResize);\n    if('ResizeObserver' in window){\n      var resizeObserver=new ResizeObserver(function(){renderSlide(false);});\n      resizeObserver.observe(root);\n    }\n    window.requestAnimationFrame(function(){renderSlide(false);});\n    window.setTimeout(function(){renderSlide(false);},250);\n    window.setTimeout(function(){renderSlide(false);},1000);\n\n    fetchPlanData().then(function(products){\n      products.forEach(function(product){updateCardFromApi(root,product);});\n      renderSlide(false);\n    });\n  }\n\n  function initInterDataCarousels(){\n    document.querySelectorAll('[data-interdata-carousel]').forEach(setupInterDataCarousel);\n  }\n\n  if(document.readyState==='loading'){\n    document.addEventListener('DOMContentLoaded',initInterDataCarousels);\n  }else{\n    initInterDataCarousels();\n  }\n\n  if('MutationObserver' in window){\n    var initQueued=false;\n    new MutationObserver(function(){\n      if(initQueued)return;\n      initQueued=true;\n      window.requestAnimationFrame(function(){\n        initQueued=false;\n        initInterDataCarousels();\n      });\n    }).observe(document.documentElement,{childList:true,subtree:true});\n  }\n})();\n<\/script>\n\n\t<div id=\"gap-1139142652\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-1139142652 {\n  padding-top: 15px;\n}\n<\/style>\n\t<\/div>\n\t\n<h2 id=\"section1\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Uptime Kuma l\u00e0 g\u00ec? T\u1ea1i sao n\u00ean d\u00f9ng thay v\u00ec UptimeRobot?<\/h2>\n<p style=\"text-align: justify;\">Uptime Kuma l\u00e0 c\u00f4ng c\u1ee5 gi\u00e1m s\u00e1t uptime m\u00e3 ngu\u1ed3n m\u1edf, b\u1ea1n t\u1ef1 c\u00e0i tr\u00ean server c\u1ee7a m\u00ecnh. Giao di\u1ec7n d\u1ec5 nh\u00ecn, h\u1ed7 tr\u1ee3 h\u01a1n 90 k\u00eanh th\u00f4ng b\u00e1o, v\u00e0 mi\u1ec5n ph\u00ed ho\u00e0n to\u00e0n n\u1ebfu b\u1ea1n \u0111\u00e3 c\u00f3 VPS ri\u00eang. \u1ee8ng d\u1ee5ng ch\u1ea1y tr\u00ean Node.js, l\u01b0u d\u1eef li\u1ec7u v\u00e0o SQLite v\u00e0 theo d\u00f5i \u0111\u01b0\u1ee3c HTTP, TCP, Ping, DNS l\u1eabn Docker container c\u00f9ng l\u00fac.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43649\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Uptime-Kuma.png\" alt=\"Uptime Kuma\" width=\"800\" height=\"396\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Uptime-Kuma.png 1000w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Uptime-Kuma-300x149.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Uptime-Kuma-768x380.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\">Kh\u00e1c bi\u1ec7t l\u1edbn nh\u1ea5t so v\u1edbi UptimeRobot hay Better Stack n\u1eb1m \u1edf ch\u1ed7: to\u00e0n b\u1ed9 l\u1ecbch s\u1eed uptime, c\u1ea5u h\u00ecnh monitor v\u00e0 th\u00f4ng tin SSL n\u1eb1m tr\u00ean server b\u1ea1n. Kh\u00f4ng c\u00f3 gi\u1edbi h\u1ea1n monitor ki\u1ec3u &#8220;g\u00f3i free ch\u1ec9 \u0111\u01b0\u1ee3c 50 c\u00e1i&#8221;, v\u00e0 c\u0169ng kh\u00f4ng ph\u1ee5 thu\u1ed9c v\u00e0o d\u1ecbch v\u1ee5 b\u00ean th\u1ee9 ba.<\/p>\n<p style=\"text-align: justify;\">B\u1ea3ng d\u01b0\u1edbi so s\u00e1nh nhanh ba l\u1ef1a ch\u1ecdn ph\u1ed5 bi\u1ebfn:<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Ti\u00eau ch\u00ed<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Uptime Kuma<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">UptimeRobot Free<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Better Stack Free<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">Gi\u00e1<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Mi\u1ec5n ph\u00ed (t\u1ef1 host)<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">C\u00f3 g\u00f3i mi\u1ec5n ph\u00ed<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">C\u00f3 g\u00f3i mi\u1ec5n ph\u00ed<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">T\u1ef1 l\u01b0u tr\u1eef<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">C\u00f3, to\u00e0n quy\u1ec1n d\u1eef li\u1ec7u<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Kh\u00f4ng<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Kh\u00f4ng<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">S\u1ed1 monitor t\u1ed1i \u0111a<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Kh\u00f4ng gi\u1edbi h\u1ea1n (t\u00f9y t\u00e0i nguy\u00ean VPS)<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">50 monitor<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">10 monitor<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">K\u00eanh th\u00f4ng b\u00e1o<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">90+ k\u00eanh<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Email, Slack, Telegram, SMS (gi\u1edbi h\u1ea1n)<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Email, Slack, Telegram, Webhook<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">Check interval ng\u1eafn nh\u1ea5t<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">20 gi\u00e2y<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">5 ph\u00fat<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">30 gi\u00e2y<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">Status Page<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">C\u00f3, g\u1eafn \u0111\u01b0\u1ee3c domain ri\u00eang<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">C\u00f3 (g\u00f3i tr\u1ea3 ph\u00ed)<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">C\u00f3<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">L\u01b0u tr\u1eef d\u1eef li\u1ec7u<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Tr\u00ean VPS c\u1ee7a b\u1ea1n<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">M\u00e1y ch\u1ee7 UptimeRobot<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">M\u00e1y ch\u1ee7 Better Stack<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">N\u1ebfu ch\u1ec9 c\u1ea7n theo d\u00f5i v\u00e0i website v\u1edbi t\u1ea7n su\u1ea5t th\u1ea5p, UptimeRobot Free l\u00e0 \u0111\u1ee7 d\u00f9ng. C\u00f2n khi b\u1ea1n c\u1ea7n check interval ng\u1eafn, nhi\u1ec1u monitor, ho\u1eb7c \u0111\u01a1n gi\u1ea3n l\u00e0 kh\u00f4ng mu\u1ed1n d\u1eef li\u1ec7u r\u1eddi kh\u1ecfi h\u1ea1 t\u1ea7ng c\u1ee7a m\u00ecnh, Uptime Kuma \u0111\u00e1ng \u0111\u1ec3 c\u00e2n nh\u1eafc.<\/p>\n<h2 id=\"section2\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Y\u00eau c\u1ea7u h\u1ec7 th\u1ed1ng v\u00e0 chu\u1ea9n b\u1ecb tr\u01b0\u1edbc khi c\u00e0i Uptime Kuma<\/h2>\n<p style=\"text-align: justify;\">Uptime Kuma kh\u00f4ng c\u1ea7n c\u1ea5u h\u00ecnh m\u1ea1nh. VPS 1 vCPU \/ 512 MB RAM \u0111\u00e3 ch\u1ea1y \u0111\u01b0\u1ee3c, nh\u01b0ng n\u1ebfu b\u1ea1n \u0111\u1ecbnh theo d\u00f5i nhi\u1ec1u monitor v\u1edbi interval ng\u1eafn th\u00ec n\u00ean ch\u1ecdn 1 vCPU \/ 1 GB RAM tr\u1edf l\u00ean cho tho\u1ea3i m\u00e1i.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Th\u00e0nh ph\u1ea7n<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">T\u1ed1i thi\u1ec3u<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Khuy\u1ebfn ngh\u1ecb<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">CPU<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">1 vCPU<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">1 \u0111\u1ebfn 2 vCPU<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">RAM<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">512 MB<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">1 GB<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">Dung l\u01b0\u1ee3ng<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">5 GB<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">20 GB<\/td>\n<\/tr>\n<tr style=\"background-color: #fafafa;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">H\u1ec7 \u0111i\u1ec1u h\u00e0nh<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Ubuntu 20.04<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Ubuntu 22.04 \/ 24.04<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">Tr\u01b0\u1edbc khi b\u1eaft \u0111\u1ea7u, b\u1ea1n c\u1ea7n SSH v\u00e0o VPS. N\u1ebfu ch\u01b0a quen thao t\u00e1c n\u00e0y, b\u00e0i <strong><a href=\"https:\/\/interdata.vn\/blog\/cach-dang-nhap-vps-tren-may-tinh\/\">c\u00e1ch \u0111\u0103ng nh\u1eadp VPS qua SSH<\/a><\/strong> h\u01b0\u1edbng d\u1eabn chi ti\u1ebft tr\u00ean c\u1ea3 Windows, macOS v\u00e0 Linux. Tr\u01b0\u1eddng h\u1ee3p VPS \u0111ang ch\u1ea1y h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u0169 ho\u1eb7c m\u00f4i tr\u01b0\u1eddng kh\u00f4ng c\u00f2n s\u1ea1ch, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o quy tr\u00ecnh <strong><a href=\"https:\/\/interdata.vn\/blog\/cai-lai-he-dieu-hanh-cho-vps\/\">c\u00e0i l\u1ea1i h\u1ec7 \u0111i\u1ec1u h\u00e0nh VPS<\/a><\/strong> \u0111\u1ec3 reset v\u1ec1 tr\u1ea1ng th\u00e1i ban \u0111\u1ea7u tr\u01b0\u1edbc khi c\u00e0i Uptime Kuma.<\/p>\n<p style=\"text-align: justify;\">N\u1ebfu ch\u01b0a c\u00f3 Docker, l\u00e0m theo h\u01b0\u1edbng d\u1eabn <strong><a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-docker-tren-ubuntu\/\">c\u00e0i \u0111\u1eb7t Docker tr\u00ean Ubuntu<\/a><\/strong>. Sau \u0111\u00f3 c\u00e0i Docker Compose theo b\u00e0i <strong><a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-docker-compose-tren-ubuntu\/\">h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker Compose tr\u00ean Ubuntu<\/a><\/strong>. To\u00e0n b\u1ed9 b\u00e0i n\u00e0y gi\u1ea3 \u0111\u1ecbnh b\u1ea1n <strong>\u0111\u00e3 c\u00f3 Docker<\/strong> v\u00e0 <strong>Docker Compose V2<\/strong> (d\u00f9ng l\u1ec7nh <code>docker compose<\/code>, kh\u00f4ng c\u00f3 g\u1ea1ch ngang \u1edf gi\u1eefa).<\/p>\n<p style=\"text-align: justify;\">N\u1ebfu VPS ch\u01b0a \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t, xem h\u01b0\u1edbng d\u1eabn <strong><a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-ubuntu-desktop\/\">c\u00e0i \u0111\u1eb7t Ubuntu tr\u00ean VPS\/Cloud Server<\/a><\/strong> \u0111\u1ec3 ch\u1ecdn \u0111\u00fang template h\u1ec7 \u0111i\u1ec1u h\u00e0nh khi t\u1ea1o m\u00e1y.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Thu\u00ea VPS InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">CPU th\u1ebf h\u1ec7 m\u1edbi, SSD NVMe U.2, h\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt 24\/7<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">C\u1ea7n VPS Linux \u0111\u1ec3 c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Uptime Kuma?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">\u0110\u1ec3 c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Uptime Kuma theo d\u00f5i uptime, b\u1ea1n c\u1ea7n m\u1ed9t VPS Linux c\u00f3 quy\u1ec1n root \u0111\u1ec3 ch\u1ea1y Docker. InterData cung c\u1ea5p c\u00e1c g\u00f3i VPS ch\u1ea1y Ubuntu\/Debian, s\u1eb5n s\u00e0ng cho vi\u1ec7c c\u00e0i Docker v\u00e0 tri\u1ec3n khai Uptime Kuma ngay sau khi \u0111\u0103ng nh\u1eadp.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">Xem B\u1ea3ng Gi\u00e1 Thu\u00ea VPS \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section3\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u00e1ch C\u00e0i \u0110\u1eb7t Uptime Kuma B\u1eb1ng Docker Compose Tr\u00ean VPS Ubuntu<\/h2>\n<p style=\"text-align: justify;\">Docker Compose l\u00e0 c\u00e1ch c\u00e0i Uptime Kuma \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb. L\u00fd do r\u1ea5t th\u1ef1c t\u1ebf: khi c\u1ea7n n\u00e2ng c\u1ea5p, b\u1ea1n ch\u1ec9 ch\u1ea1y <code>docker compose pull &amp;&amp; docker compose up -d<\/code>, d\u1eef li\u1ec7u n\u1eb1m trong volume ri\u00eang n\u00ean kh\u00f4ng b\u1ecb m\u1ea5t khi rebuild container. C\u00e1ch c\u00e0i b\u1eb1ng npm\/Node.js ch\u1ec9 n\u00ean d\u00f9ng khi b\u1ea1n c\u00f3 l\u00fd do \u0111\u1eb7c bi\u1ec7t \u0111\u1ec3 kh\u00f4ng d\u00f9ng Docker.<\/p>\n<p><strong>1\/ T\u1ea1o th\u01b0 m\u1ee5c v\u00e0 t\u1ea3i file compose ch\u00ednh th\u1ee9c<\/strong><\/p>\n<pre><code class=\"language-bash\">mkdir -p \/opt\/uptime-kuma\r\ncd \/opt\/uptime-kuma\r\ncurl -o compose.yaml https:\/\/raw.githubusercontent.com\/louislam\/uptime-kuma\/master\/compose.yaml<\/code><\/pre>\n<p style=\"text-align: justify;\">File compose.yaml ch\u00ednh th\u1ee9c khai b\u00e1o image <code>louislam\/uptime-kuma:2<\/code>, volume <code>.\/data:\/app\/data<\/code> v\u00e0 c\u1ed5ng m\u1eb7c \u0111\u1ecbnh 3001. Mu\u1ed1n xem n\u1ed9i dung tr\u01b0\u1edbc khi ch\u1ea1y th\u00ec g\u00f5 <code>cat compose.yaml<\/code>.<\/p>\n<p><strong>2\/ Kh\u1edfi \u0111\u1ed9ng container<\/strong><\/p>\n<pre><code class=\"language-bash\">docker compose up -d<\/code><\/pre>\n<p style=\"text-align: justify;\">L\u1ec7nh n\u00e0y t\u1ea3i image, t\u1ea1o container t\u00ean <code>uptime-kuma<\/code> v\u00e0 ch\u1ea1y n\u1ec1n. Ki\u1ec3m tra l\u1ea1i b\u1eb1ng <code>docker ps<\/code>, c\u1ed9t STATUS ph\u1ea3i hi\u1ec3n th\u1ecb <code>Up<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43644\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-dong-Container.png\" alt=\"Kh\u1edfi \u0111\u1ed9ng Container\" width=\"800\" height=\"119\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-dong-Container.png 1560w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-dong-Container-300x45.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-dong-Container-1024x152.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-dong-Container-768x114.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-dong-Container-1536x228.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><strong>3\/ M\u1edf port 3001 tr\u00ean UFW<\/strong><\/p>\n<pre><code class=\"language-bash\">ufw allow 3001\/tcp\r\nufw status<\/code><\/pre>\n<p style=\"text-align: justify;\">N\u1ebfu ch\u01b0a quen v\u1edbi UFW, b\u00e0i <strong><a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-cau-hinh-ufw\/\">c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh UFW tr\u00ean Ubuntu<\/a><\/strong> gi\u1ea3i th\u00edch c\u00e1ch m\u1edf port an to\u00e0n m\u00e0 kh\u00f4ng t\u1ef1 kh\u00f3a SSH. L\u01b0u \u00fd m\u1ed9t chuy\u1ec7n kh\u00e1 phi\u1ec1n: Docker c\u00f3 th\u1ec3 bypass UFW trong m\u1ed9t s\u1ed1 c\u1ea5u h\u00ecnh, n\u00ean n\u1ebfu m\u1edf port r\u1ed3i m\u00e0 v\u1eabn kh\u00f4ng truy c\u1eadp \u0111\u01b0\u1ee3c th\u00ec n\u00ean ki\u1ec3m tra k\u1ef9 l\u1ea1i.<\/p>\n<p><strong>4\/ Truy c\u1eadp dashboard v\u00e0 t\u1ea1o t\u00e0i kho\u1ea3n admin<\/strong><\/p>\n<p style=\"text-align: justify;\">M\u1edf tr\u00ecnh duy\u1ec7t, v\u00e0o <code>http:\/\/IP_VPS:3001<\/code>. L\u1ea7n \u0111\u1ea7u truy c\u1eadp, Uptime Kuma y\u00eau c\u1ea7u t\u1ea1o t\u00e0i kho\u1ea3n admin. \u0110\u1eb7t username v\u00e0 password m\u1ea1nh, nh\u1edb b\u1eadt 2FA n\u1ebfu c\u00f3 th\u1ec3.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43646\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-Uptime-Kuma.png\" alt=\"Truy c\u1eadp Uptime Kuma\" width=\"800\" height=\"468\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-Uptime-Kuma.png 1081w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-Uptime-Kuma-300x176.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-Uptime-Kuma-1024x600.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-Uptime-Kuma-768x450.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><strong>5\/ Ki\u1ec3m tra log n\u1ebfu container kh\u00f4ng kh\u1edfi \u0111\u1ed9ng<\/strong><\/p>\n<pre><code class=\"language-bash\">docker logs uptime-kuma --tail 50<\/code><\/pre>\n<p style=\"text-align: justify;\">Log s\u1ebd ch\u1ec9 ra l\u1ed7i c\u1ee5 th\u1ec3: port b\u1ecb chi\u1ebfm, volume kh\u00f4ng ghi \u0111\u01b0\u1ee3c, ho\u1eb7c image kh\u00f4ng t\u1ea3i \u0111\u01b0\u1ee3c.<\/p>\n<p style=\"text-align: justify;\">\u0110\u1ebfn \u0111\u00e2y b\u1ea1n \u0111\u00e3 c\u00f3 Uptime Kuma ch\u1ea1y tr\u00ean port 3001. B\u01b0\u1edbc ti\u1ebfp theo l\u00e0 thay IP b\u1eb1ng domain v\u00e0 b\u1eadt HTTPS, v\u00ec \u0111\u1ec3 nguy\u00ean IP:3001 m\u00e0 d\u00f9ng th\u00ec kh\u00f4ng \u1ed5n ch\u00fat n\u00e0o.<\/p>\n<h2 id=\"section4\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u1ea5u H\u00ecnh Nginx Reverse Proxy V\u00e0 SSL Cho Uptime Kuma<\/h2>\n<p style=\"text-align: justify;\">Truy c\u1eadp dashboard qua <code>http:\/\/IP:3001<\/code> c\u00f3 ngh\u0129a l\u00e0 b\u1ea5t k\u1ef3 ai bi\u1ebft IP \u0111\u1ec1u th\u1ea5y trang \u0111\u0103ng nh\u1eadp c\u1ee7a b\u1ea1n. <a href=\"https:\/\/interdata.vn\/blog\/cau-hinh-nginx-reverse-proxy\/\">C\u1ea5u h\u00ecnh Nginx reverse proxy<\/a> gi\u1ea3i quy\u1ebft chuy\u1ec7n \u0111\u00f3: b\u1ea1n d\u00f9ng domain ri\u00eang v\u00e0 b\u1eadt HTTPS mi\u1ec5n ph\u00ed qua Certbot.<\/p>\n<p style=\"text-align: justify;\">M\u1ed9t \u0111i\u1ec3m c\u1ea7n nh\u1edb: Uptime Kuma d\u00f9ng WebSocket (Socket.IO) cho dashboard real-time. Thi\u1ebfu header WebSocket l\u00e0 dashboard hi\u1ec3n th\u1ecb &#8220;Lost connection to the socket server&#8221; ngay. C\u1ea5u h\u00ecnh d\u01b0\u1edbi \u0111\u00e2y \u0111\u00e3 bao g\u1ed3m c\u00e1c header c\u1ea7n thi\u1ebft.<\/p>\n<p><strong>1\/ C\u00e0i Nginx v\u00e0 Certbot<\/strong><\/p>\n<pre><code class=\"language-bash\">apt update\r\napt install nginx python3-certbot-nginx -y<\/code><\/pre>\n<p><strong>2\/ T\u1ea1o file c\u1ea5u h\u00ecnh Nginx<\/strong><\/p>\n<pre><code class=\"language-bash\">nano \/etc\/nginx\/sites-available\/uptime-kuma<\/code><\/pre>\n<p style=\"text-align: justify;\">D\u00e1n n\u1ed9i dung sau, nh\u1edb thay <code>status.yourdomain.com<\/code> b\u1eb1ng domain th\u1eadt c\u1ee7a b\u1ea1n:<\/p>\n<pre><code class=\"language-nginx\">server {\r\n    listen 80;\r\n    server_name status.yourdomain.com;\r\n\r\n    location \/ {\r\n        proxy_pass http:\/\/localhost:3001;\r\n        proxy_http_version 1.1;\r\n        proxy_set_header Upgrade $http_upgrade;\r\n        proxy_set_header Connection \"upgrade\";\r\n        proxy_set_header Host $host;\r\n        proxy_set_header X-Real-IP $remote_addr;\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header X-Forwarded-Proto $scheme;\r\n    }\r\n}<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43647\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-file-cau-hinh-Nginx.png\" alt=\"T\u1ea1o file c\u1ea5u h\u00ecnh Nginx\" width=\"700\" height=\"356\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-file-cau-hinh-Nginx.png 704w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-file-cau-hinh-Nginx-300x153.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p><strong>3\/ K\u00edch ho\u1ea1t site v\u00e0 ki\u1ec3m tra c\u1ea5u h\u00ecnh<\/strong><\/p>\n<pre><code class=\"language-bash\">ln -s \/etc\/nginx\/sites-available\/uptime-kuma \/etc\/nginx\/sites-enabled\/\r\nnginx -t\r\nsystemctl reload nginx<\/code><\/pre>\n<p style=\"text-align: justify;\"><code>nginx -t<\/code> s\u1ebd b\u00e1o l\u1ed7i n\u1ebfu c\u00fa ph\u00e1p sai. Kh\u00f4ng reload khi config ch\u01b0a pass ki\u1ec3m tra, k\u1ebbo Nginx ch\u1ebft lu\u00f4n.<\/p>\n<p><strong>4\/ C\u1ea5p SSL b\u1eb1ng Certbot<\/strong><\/p>\n<pre><code class=\"language-bash\">certbot --nginx -d status.yourdomain.com<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43648\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cap-SSL-bang-Certbot.png\" alt=\"C\u1ea5p SSL b\u1eb1ng Certbot\" width=\"800\" height=\"624\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cap-SSL-bang-Certbot.png 1089w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cap-SSL-bang-Certbot-300x234.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cap-SSL-bang-Certbot-1024x799.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cap-SSL-bang-Certbot-768x599.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/interdata.vn\/blog\/cai-ssl-lets-encrypt-bang-certbot\/\">Certbot<\/a> t\u1ef1 l\u1ea5y ch\u1ee9ng ch\u1ec9 Let&#8217;s Encrypt, s\u1eeda file Nginx \u0111\u1ec3 chuy\u1ec3n HTTP sang HTTPS, v\u00e0 thi\u1ebft l\u1eadp gia h\u1ea1n t\u1ef1 \u0111\u1ed9ng. Xong b\u01b0\u1edbc n\u00e0y th\u00ec th\u1eed <code>https:\/\/status.yourdomain.com<\/code> xem sao.<\/p>\n<p><strong>5\/ \u0110\u00f3ng port 3001 sau khi reverse proxy ho\u1ea1t \u0111\u1ed9ng<\/strong><\/p>\n<pre><code class=\"language-bash\">ufw delete allow 3001\/tcp\r\nufw status<\/code><\/pre>\n<p style=\"text-align: justify;\">Sau khi Nginx proxy th\u00e0nh c\u00f4ng, port 3001 kh\u00f4ng c\u1ea7n m\u1edf ra internet n\u1eefa. Gi\u1eef n\u00f3 ch\u1ec9 accessible t\u1eeb localhost gi\u00fap gi\u1ea3m b\u1ec1 m\u1eb7t t\u1ea5n c\u00f4ng.<\/p>\n<p style=\"text-align: justify;\">M\u1ed9t l\u01b0u \u00fd n\u1eefa: Uptime Kuma kh\u00f4ng h\u1ed7 tr\u1ee3 tri\u1ec3n khai trong subdirectory ki\u1ec3u <code>https:\/\/example.com\/uptime<\/code>. B\u1ea1n ph\u1ea3i d\u00f9ng subdomain ri\u00eang, v\u00ed d\u1ee5 <code>status.example.com<\/code>.<\/p>\n<div style=\"background: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%); border: 1.5px solid #2563EB; border-radius: 12px; padding: 28px; margin: 35px 0; text-align: center;\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-size: 22px; font-weight: bold; color: #1e3a8a; margin: 0 0 8px;\">S\u0103n \u01afu \u0110\u00e3i VPS Ti\u1ebft Ki\u1ec7m<\/p>\n<p style=\"font-size: 15px; color: #4b5563; margin-bottom: 20px;\">Canh Me t\u1ed5ng h\u1ee3p khuy\u1ebfn m\u00e3i, m\u00e3 gi\u1ea3m gi\u00e1, Hot Deals VPS v\u00e0 Cloud Server m\u1edbi nh\u1ea5t c\u1ee7a InterData, gi\u00fap b\u1ea1n xem tr\u01b0\u1edbc \u0111\u1ec3 ch\u1ecdn c\u1ea5u h\u00ecnh ph\u00f9 h\u1ee3p v\u1edbi chi ph\u00ed t\u1ed1t nh\u1ea5t.<\/p>\n<p><a style=\"background: #2563EB; color: #fff; padding: 12px 30px; text-decoration: none; font-weight: 600; border-radius: 8px; display: inline-block;\" href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">Xem C\u00e1c \u01afu \u0110\u00e3i Ti\u1ebft Ki\u1ec7m T\u1ea1i Canh Me \u27f6<\/a><\/p>\n<\/div>\n<h2 id=\"section5\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u00e1c Lo\u1ea1i Monitor Trong Uptime Kuma V\u00e0 C\u00e1ch C\u00e0i \u0110\u1eb7t<\/h2>\n<p style=\"text-align: justify;\">Uptime Kuma h\u1ed7 tr\u1ee3 nhi\u1ec1u lo\u1ea1i monitor cho c\u00e1c t\u00ecnh hu\u1ed1ng kh\u00e1c nhau. B\u1ea3ng d\u01b0\u1edbi t\u00f3m t\u1eaft nhanh:<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Lo\u1ea1i monitor<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">D\u00f9ng \u0111\u1ec3 l\u00e0m g\u00ec<\/th>\n<th style=\"padding: 12px; border: 1px solid #CBD5E1; text-align: left;\">Th\u00f4ng s\u1ed1 c\u1ea7n \u0111i\u1ec1n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">HTTP(s)<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Theo d\u00f5i website, API endpoint<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">URL, ph\u01b0\u01a1ng th\u1ee9c GET\/POST, m\u00e3 tr\u1ea1ng th\u00e1i mong \u0111\u1ee3i<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">Ping<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Ki\u1ec3m tra VPS c\u00f2n s\u1ed1ng kh\u00f4ng<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Hostname ho\u1eb7c IP<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">TCP Port<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Ki\u1ec3m tra d\u1ecbch v\u1ee5 c\u1ee5 th\u1ec3 (SSH, MySQL, Redis)<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Hostname, port<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">Docker Container<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Gi\u00e1m s\u00e1t container \u0111ang ch\u1ea1y<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">T\u00ean container (c\u1ea7n mount socket Docker)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0; font-weight: 600;\">DNS Record<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Ki\u1ec3m tra b\u1ea3n ghi DNS tr\u1ecf \u0111\u00fang<\/td>\n<td style=\"padding: 10px; border: 1px solid #E2E8F0;\">Domain, lo\u1ea1i b\u1ea3n ghi, gi\u00e1 tr\u1ecb mong \u0111\u1ee3i<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">Monitor HTTP\/HTTPS cho website<\/h3>\n<p style=\"text-align: justify;\">V\u00e0o <strong>Add New Monitor<\/strong>, ch\u1ecdn <strong>HTTP(s)<\/strong>. \u0110i\u1ec1n URL \u0111\u1ea7y \u0111\u1ee7, v\u00ed d\u1ee5 <code>https:\/\/interdata.vn<\/code>. \u0110\u1eb7t <strong>Heartbeat Interval<\/strong> 60 gi\u00e2y cho website \u00edt thay \u0111\u1ed5i, ho\u1eb7c 20 gi\u00e2y n\u1ebfu c\u1ea7n ph\u00e1t hi\u1ec7n s\u1ef1 c\u1ed1 nhanh. Nh\u1edb b\u1eadt <strong>Certificate Expiry Notification<\/strong> \u0111\u1ec3 nh\u1eadn c\u1ea3nh b\u00e1o khi SSL s\u1eafp h\u1ebft h\u1ea1n, chuy\u1ec7n n\u00e0y kh\u00e1 ph\u1ed5 bi\u1ebfn v\u00e0 d\u1ec5 b\u1ecb b\u1ecf qua.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">Monitor Ping cho VPS<\/h3>\n<p style=\"text-align: justify;\">Ch\u1ecdn <strong>Ping<\/strong>, nh\u1eadp IP ho\u1eb7c hostname c\u1ee7a VPS c\u1ea7n theo d\u00f5i. Ping monitor ch\u1ec9 ki\u1ec3m tra m\u00e1y ch\u1ee7 c\u00f3 ph\u1ea3n h\u1ed3i ICMP hay kh\u00f4ng, ch\u1ee9 kh\u00f4ng ki\u1ec3m tra d\u1ecbch v\u1ee5 b\u00ean trong. N\u1ebfu VPS ch\u1eb7n ICMP th\u00ec d\u00f9ng TCP Port monitor thay th\u1ebf.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">Monitor TCP Port<\/h3>\n<p style=\"text-align: justify;\">Ch\u1ecdn <strong>TCP Port<\/strong>, nh\u1eadp hostname v\u00e0 port. V\u00ed d\u1ee5 \u0111\u1ec3 ki\u1ec3m tra SSH: hostname l\u00e0 IP VPS, port l\u00e0 22. Mu\u1ed1n ki\u1ec3m tra MySQL th\u00ec port 3306. Lo\u1ea1i monitor n\u00e0y h\u1eefu \u00edch khi b\u1ea1n c\u1ea7n bi\u1ebft d\u1ecbch v\u1ee5 c\u1ee5 th\u1ec3 c\u00f2n listen hay kh\u00f4ng.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">Monitor Docker Container<\/h3>\n<p style=\"text-align: justify;\">\u0110\u1ec3 gi\u00e1m s\u00e1t Docker container, b\u1ea1n c\u1ea7n mount Docker socket v\u00e0o container Uptime Kuma. S\u1eeda file <code>compose.yaml<\/code>:<\/p>\n<pre><code class=\"language-yaml\">services:\r\n  uptime-kuma:\r\n    image: louislam\/uptime-kuma:2\r\n    restart: unless-stopped\r\n    volumes:\r\n      - .\/data:\/app\/data\r\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\r\n    ports:\r\n      - \"3001:3001\"<\/code><\/pre>\n<p style=\"text-align: justify;\">Ch\u1ea1y l\u1ea1i container b\u1eb1ng <code>docker compose up -d --force-recreate<\/code>. Trong Uptime Kuma, ch\u1ecdn <strong>Docker Container<\/strong> v\u00e0 ch\u1ec9 \u0111\u1ecbnh t\u00ean container c\u1ea7n gi\u00e1m s\u00e1t. C\u1ea7n n\u00f3i r\u00f5: mount Docker socket c\u00f3 r\u1ee7i ro b\u1ea3o m\u1eadt, ch\u1ec9 n\u00ean l\u00e0m khi b\u1ea1n th\u1ef1c s\u1ef1 hi\u1ec3u h\u1ec7 th\u1ed1ng c\u1ee7a m\u00ecnh.<\/p>\n<h2 id=\"section6\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u00e1ch C\u00e0i \u0110\u1eb7t Th\u00f4ng B\u00e1o Telegram Cho Uptime Kuma<\/h2>\n<p style=\"text-align: justify;\">Telegram l\u00e0 k\u00eanh th\u00f4ng b\u00e1o \u0111\u01b0\u1ee3c d\u00f9ng nhi\u1ec1u nh\u1ea5t v\u00ec mi\u1ec5n ph\u00ed, nhanh v\u00e0 c\u1ea5u h\u00ecnh \u0111\u01a1n gi\u1ea3n. B\u1ea1n c\u1ea7n hai th\u1ee9: Telegram Bot Token v\u00e0 Chat ID.<\/p>\n<p><strong>1\/ T\u1ea1o bot Telegram<\/strong><\/p>\n<p style=\"text-align: justify;\">M\u1edf Telegram, t\u00ecm <code>@BotFather<\/code>. G\u00f5 <code>\/newbot<\/code>, \u0111\u1eb7t t\u00ean bot v\u00e0 username. BotFather s\u1ebd tr\u1ea3 v\u1ec1 m\u1ed9t token d\u1ea1ng <code>123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ<\/code>. L\u01b0u token n\u00e0y l\u1ea1i.<\/p>\n<p><strong>2\/ L\u1ea5y Chat ID<\/strong><\/p>\n<p style=\"text-align: justify;\">G\u1eedi m\u1ed9t tin nh\u1eafn b\u1ea5t k\u1ef3 cho bot v\u1eeba t\u1ea1o. Sau \u0111\u00f3 truy c\u1eadp:<\/p>\n<pre><code class=\"language-bash\">curl https:\/\/api.telegram.org\/bot&lt;TOKEN&gt;\/getUpdates<\/code><\/pre>\n<p style=\"text-align: justify;\">Trong k\u1ebft qu\u1ea3 JSON, t\u00ecm tr\u01b0\u1eddng <code>\"chat\":{\"id\":...}<\/code>. \u0110\u00f3 l\u00e0 Chat ID. V\u1edbi nh\u00f3m, Chat ID th\u01b0\u1eddng c\u00f3 d\u1ea1ng s\u1ed1 \u00e2m.<\/p>\n<p><strong>3\/ C\u1ea5u h\u00ecnh trong Uptime Kuma<\/strong><\/p>\n<p style=\"text-align: justify;\">V\u00e0o <strong>Settings \u2192 Notifications \u2192 Setup Notification<\/strong>. Ch\u1ecdn <strong>Telegram<\/strong>, \u0111i\u1ec1n <strong>Bot Token<\/strong> v\u00e0 <strong>Chat ID<\/strong>. Nh\u1ea5n <strong>Test<\/strong> \u0111\u1ec3 g\u1eedi tin nh\u1eafn th\u1eed. Nh\u1eadn \u0111\u01b0\u1ee3c tin nh\u1eafn trong Telegram l\u00e0 c\u1ea5u h\u00ecnh th\u00e0nh c\u00f4ng.<\/p>\n<p><strong>4\/ G\u00e1n notification v\u00e0o monitor<\/strong><\/p>\n<p style=\"text-align: justify;\">Khi t\u1ea1o ho\u1eb7c s\u1eeda monitor, \u1edf m\u1ee5c <strong>Notifications<\/strong>, tick v\u00e0o notification Telegram v\u1eeba t\u1ea1o. B\u1ea1n c\u00f3 th\u1ec3 g\u00e1n nhi\u1ec1u notification cho c\u00f9ng m\u1ed9t monitor, ch\u1eb3ng h\u1ea1n v\u1eeba Telegram v\u1eeba email.<\/p>\n<h2 id=\"section7\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">T\u1ea1o Status Page Tr\u00ean Uptime Kuma \u0110\u1ec3 Chia S\u1ebb V\u1edbi Kh\u00e1ch H\u00e0ng<\/h2>\n<p style=\"text-align: justify;\">Status Page l\u00e0 trang c\u00f4ng khai hi\u1ec3n th\u1ecb tr\u1ea1ng th\u00e1i c\u00e1c d\u1ecbch v\u1ee5. B\u1ea1n chia s\u1ebb link n\u00e0y v\u1edbi kh\u00e1ch h\u00e0ng \u0111\u1ec3 h\u1ecd t\u1ef1 ki\u1ec3m tra, thay v\u00ec c\u1ee9 g\u1ecdi h\u1ecfi m\u00e3i.<\/p>\n<p><strong>1\/ T\u1ea1o Status Page m\u1edbi<\/strong><\/p>\n<p style=\"text-align: justify;\">Trong dashboard, v\u00e0o <strong>Status Pages \u2192 New Status Page<\/strong>. \u0110\u1eb7t t\u00ean, v\u00ed d\u1ee5 &#8220;Tr\u1ea1ng th\u00e1i d\u1ecbch v\u1ee5&#8221;, v\u00e0 slug URL, v\u00ed d\u1ee5 <code>trang-thai<\/code>.<\/p>\n<p><strong>2\/ Th\u00eam monitor v\u00e0o trang<\/strong><\/p>\n<p style=\"text-align: justify;\">Trong ph\u1ea7n <strong>Monitors<\/strong>, ch\u1ecdn c\u00e1c monitor mu\u1ed1n hi\u1ec3n th\u1ecb. B\u1ea1n c\u00f3 th\u1ec3 nh\u00f3m ch\u00fang th\u00e0nh c\u00e1c nh\u00f3m ri\u00eang nh\u01b0 &#8220;Website&#8221;, &#8220;API&#8221;, &#8220;H\u1ea1 t\u1ea7ng&#8221; cho d\u1ec5 nh\u00ecn.<\/p>\n<p><strong>3\/ Thi\u1ebft l\u1eadp quy\u1ec1n truy c\u1eadp<\/strong><\/p>\n<p style=\"text-align: justify;\">\u0110\u1eb7t <strong>Public<\/strong> n\u1ebfu mu\u1ed1n ai c\u0169ng xem \u0111\u01b0\u1ee3c, ho\u1eb7c <strong>Private<\/strong> n\u1ebfu ch\u1ec9 chia s\u1ebb v\u1edbi ng\u01b0\u1eddi c\u00f3 link. V\u1edbi kh\u00e1ch h\u00e0ng doanh nghi\u1ec7p, d\u00f9ng ch\u1ebf \u0111\u1ed9 private k\u00e8m m\u1eadt kh\u1ea9u s\u1ebd h\u1ee3p l\u00fd h\u01a1n.<\/p>\n<p><strong>4\/ G\u00e1n domain ri\u00eang<\/strong><\/p>\n<p style=\"text-align: justify;\">Trong ph\u1ea7n <strong>Custom Domain<\/strong>, nh\u1eadp domain mu\u1ed1n d\u00f9ng, v\u00ed d\u1ee5 <code>status.yourdomain.com<\/code>. Sau \u0111\u00f3 th\u00eam b\u1ea3n ghi CNAME tr\u1ecf v\u1ec1 domain Uptime Kuma. N\u1ebfu \u0111\u00e3 c\u1ea5u h\u00ecnh Nginx reverse proxy v\u1edbi wildcard ho\u1eb7c subdomain ri\u00eang th\u00ec c\u00f3 th\u1ec3 d\u00f9ng lu\u00f4n.<\/p>\n<p style=\"text-align: justify;\">Status Page gi\u00fap gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng ticket h\u1ed7 tr\u1ee3 khi c\u00f3 s\u1ef1 c\u1ed1. Kh\u00e1ch t\u1ef1 ki\u1ec3m tra \u0111\u01b0\u1ee3c thay v\u00ec g\u1ecdi \u0111i\u1ec7n h\u1ecfi.<\/p>\n<h2 id=\"section8\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">B\u1ea3o M\u1eadt Uptime Kuma Cho M\u00f4i Tr\u01b0\u1eddng Production<\/h2>\n<p style=\"text-align: justify;\">Khi Uptime Kuma d\u00f9ng \u0111\u1ec3 gi\u00e1m s\u00e1t production, b\u1ea3o m\u1eadt dashboard quan tr\u1ecdng kh\u00f4ng k\u00e9m vi\u1ec7c gi\u00e1m s\u00e1t ch\u00ednh n\u00f3. C\u00f3 v\u00e0i b\u01b0\u1edbc b\u1ea1n n\u00ean l\u00e0m:<\/p>\n<ul>\n<li style=\"margin-bottom: 10px;\"><strong>B\u1eadt 2FA<\/strong> trong <strong>Settings \u2192 Security<\/strong>. Kh\u00f4ng b\u1eadt th\u00ec ch\u1ec9 c\u1ea7n l\u1ed9 m\u1eadt kh\u1ea9u l\u00e0 to\u00e0n b\u1ed9 d\u1eef li\u1ec7u gi\u00e1m s\u00e1t b\u1ecb truy c\u1eadp.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>\u0110\u00f3ng port 3001 ra internet<\/strong> sau khi \u0111\u00e3 c\u00f3 Nginx reverse proxy. Ch\u1ec9 gi\u1eef port n\u00e0y accessible t\u1eeb localhost.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>C\u1eadp nh\u1eadt image \u0111\u1ecbnh k\u1ef3<\/strong> b\u1eb1ng <code>docker compose pull &amp;&amp; docker compose up -d<\/code>. Uptime Kuma ra b\u1ea3n v\u00e1 kh\u00e1 th\u01b0\u1eddng xuy\u00ean, b\u1ecf qua c\u1eadp nh\u1eadt l\u00e0 r\u1ee7i ro kh\u00f4ng \u0111\u00e1ng c\u00f3.<\/li>\n<li style=\"margin-bottom: 10px;\"><strong>\u0110\u1eb7t restart policy<\/strong> l\u00e0 <code>unless-stopped<\/code> ho\u1eb7c <code>always<\/code> trong file compose \u0111\u1ec3 container t\u1ef1 kh\u1edfi \u0111\u1ed9ng l\u1ea1i sau khi VPS reboot.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n ch\u1ea1y nhi\u1ec1u d\u1ecbch v\u1ee5 tr\u00ean c\u00f9ng m\u1ed9t VPS, v\u00ed d\u1ee5 \u1ee9ng d\u1ee5ng ch\u00ednh v\u00e0 Uptime Kuma, chuy\u1ec7n c\u00f4 l\u1eadp t\u00e0i nguy\u00ean v\u00e0 qu\u1ea3n l\u00fd container tr\u1edf n\u00ean quan tr\u1ecdng h\u01a1n. B\u00e0i <a href=\"https:\/\/interdata.vn\/blog\/deploy-nextjs-len-vps-bang-coolify\/\">tri\u1ec3n khai \u1ee9ng d\u1ee5ng tr\u00ean VPS v\u1edbi Coolify<\/a> tr\u00ecnh b\u00e0y c\u00e1ch qu\u1ea3n l\u00fd nhi\u1ec1u d\u1ecbch v\u1ee5 Docker song song, k\u00e8m giao di\u1ec7n web \u0111\u1ec3 gi\u00e1m s\u00e1t.<\/p>\n<p style=\"text-align: justify;\">Tr\u01b0\u1eddng h\u1ee3p VPS hi\u1ec7n t\u1ea1i \u0111\u00e3 qu\u00e1 t\u1ea3i ho\u1eb7c b\u1ea1n mu\u1ed1n reset l\u1ea1i t\u1eeb \u0111\u1ea7u, xem h\u01b0\u1edbng d\u1eabn <a href=\"https:\/\/interdata.vn\/blog\/cai-lai-he-dieu-hanh-cho-vps\/\">c\u00e0i l\u1ea1i h\u1ec7 \u0111i\u1ec1u h\u00e0nh VPS<\/a> \u0111\u1ec3 c\u00f3 m\u00f4i tr\u01b0\u1eddng s\u1ea1ch tr\u01b0\u1edbc khi tri\u1ec3n khai Uptime Kuma.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Cloud Server InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">N\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean nhanh theo t\u1ea3i, m\u1ea1ng t\u1ed1c \u0111\u1ed9 cao<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">Gi\u00e1m s\u00e1t nhi\u1ec1u d\u1ecbch v\u1ee5 cho m\u00f4i tr\u01b0\u1eddng production?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi Uptime Kuma ph\u1ee5c v\u1ee5 nhi\u1ec1u d\u1ecbch v\u1ee5, nhi\u1ec1u th\u00e0nh vi\u00ean nh\u00f3m c\u00f9ng truy c\u1eadp dashboard, ho\u1eb7c t\u1ea3i t\u0103ng \u0111\u1ed9t bi\u1ebfn, Cloud Server cho ph\u00e9p t\u0103ng RAM\/CPU m\u00e0 kh\u00f4ng c\u1ea7n rebuild c\u1ea5u h\u00ecnh Docker t\u1eeb \u0111\u1ea7u. Ph\u00f9 h\u1ee3p khi b\u1ea1n mu\u1ed1n m\u1edf r\u1ed9ng quy m\u00f4 gi\u00e1m s\u00e1t m\u00e0 v\u1eabn gi\u1eef nguy\u00ean ki\u1ebfn tr\u00fac \u0111\u00e3 tri\u1ec3n khai.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/cloud-server\/\" target=\"_blank\" rel=\"noopener\">Xem B\u1ea3ng Gi\u00e1 Cloud Server \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section9\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">X\u1eed L\u00fd C\u00e1c L\u1ed7i Th\u01b0\u1eddng G\u1eb7p Khi C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Uptime Kuma<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">L\u1ed7i 1: Kh\u00f4ng truy c\u1eadp \u0111\u01b0\u1ee3c http:\/\/IP:3001<\/h3>\n<p style=\"text-align: justify;\"><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Tr\u00ecnh duy\u1ec7t b\u00e1o &#8220;This site can&#8217;t be reached&#8221; ho\u1eb7c timeout.<\/p>\n<p style=\"text-align: justify;\"><strong>Nguy\u00ean nh\u00e2n:<\/strong> Port 3001 b\u1ecb UFW ch\u1eb7n, container kh\u00f4ng ch\u1ea1y, ho\u1eb7c firewall c\u1ee7a nh\u00e0 cung c\u1ea5p VPS ch\u1eb7n port n\u00e0y.<\/p>\n<p style=\"text-align: justify;\"><strong>Debug:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Ki\u1ec3m tra container\r\ndocker ps | grep uptime-kuma\r\n\r\n# Ki\u1ec3m tra UFW\r\nufw status\r\n\r\n# M\u1edf port n\u1ebfu ch\u01b0a m\u1edf\r\nufw allow 3001\/tcp<\/code><\/pre>\n<p style=\"text-align: justify;\">N\u1ebfu container \u0111ang ch\u1ea1y m\u00e0 v\u1eabn kh\u00f4ng v\u00e0o \u0111\u01b0\u1ee3c, ki\u1ec3m tra firewall c\u1ee7a nh\u00e0 cung c\u1ea5p VPS. Nhi\u1ec1u n\u01a1i c\u00f3 firewall ri\u00eang ch\u1eb7n port 3001.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">L\u1ed7i 2: 502 Bad Gateway sau khi c\u1ea5u h\u00ecnh Nginx<\/h3>\n<p style=\"text-align: justify;\"><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Truy c\u1eadp domain qua Nginx tr\u1ea3 v\u1ec1 502 Bad Gateway.<\/p>\n<p style=\"text-align: justify;\"><strong>Nguy\u00ean nh\u00e2n:<\/strong> Nginx kh\u00f4ng k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c t\u1edbi container Uptime Kuma. Th\u01b0\u1eddng g\u1eb7p khi container ch\u01b0a ch\u1ea1y, proxy_pass sai port, ho\u1eb7c thi\u1ebfu header WebSocket.<\/p>\n<p style=\"text-align: justify;\"><strong>Debug:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Ki\u1ec3m tra container\r\ndocker ps | grep uptime-kuma\r\n\r\n# Xem log Nginx\r\ntail -f \/var\/log\/nginx\/error.log\r\n\r\n# Ki\u1ec3m tra c\u1ea5u h\u00ecnh Nginx\r\nnginx -t<\/code><\/pre>\n<p style=\"text-align: justify;\">\u0110\u1ea3m b\u1ea3o <code>proxy_pass http:\/\/localhost:3001;<\/code> kh\u1edbp v\u1edbi port th\u1ef1c t\u1ebf. N\u1ebfu Uptime Kuma ch\u1ea1y trong Docker network ri\u00eang, d\u00f9ng t\u00ean container thay v\u00ec localhost.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">L\u1ed7i 3: Container d\u1eebng sau khi VPS reboot<\/h3>\n<p style=\"text-align: justify;\"><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Sau khi reboot VPS, Uptime Kuma kh\u00f4ng t\u1ef1 kh\u1edfi \u0111\u1ed9ng l\u1ea1i.<\/p>\n<p style=\"text-align: justify;\"><strong>Nguy\u00ean nh\u00e2n:<\/strong> Thi\u1ebfu <code>restart: unless-stopped<\/code> ho\u1eb7c <code>restart: always<\/code> trong file compose.<\/p>\n<p style=\"text-align: justify;\"><strong>Fix:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Xem file compose\r\ncat \/opt\/uptime-kuma\/compose.yaml\r\n\r\n# N\u1ebfu thi\u1ebfu restart policy, th\u00eam v\u00e0o r\u1ed3i ch\u1ea1y l\u1ea1i\r\ndocker compose down\r\ndocker compose up -d<\/code><\/pre>\n<p style=\"text-align: justify;\">File compose ch\u00ednh th\u1ee9c \u0111\u00e3 c\u00f3 <code>restart: unless-stopped<\/code>. N\u1ebfu b\u1ea1n t\u1ef1 vi\u1ebft file th\u00ec n\u00ean ki\u1ec3m tra l\u1ea1i ch\u1ed7 n\u00e0y.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 25px 0 10px;\">L\u1ed7i 4: Qu\u00ean m\u1eadt kh\u1ea9u admin Uptime Kuma<\/h3>\n<p style=\"text-align: justify;\"><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Kh\u00f4ng \u0111\u0103ng nh\u1eadp \u0111\u01b0\u1ee3c dashboard, giao di\u1ec7n kh\u00f4ng c\u00f3 ch\u1ee9c n\u0103ng &#8220;qu\u00ean m\u1eadt kh\u1ea9u&#8221;.<\/p>\n<p style=\"text-align: justify;\"><strong>Nguy\u00ean nh\u00e2n:<\/strong> Uptime Kuma kh\u00f4ng h\u1ed7 tr\u1ee3 reset qua email, ph\u1ea3i d\u00f9ng CLI.<\/p>\n<p style=\"text-align: justify;\"><strong>Fix:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker exec -it uptime-kuma bash\r\nnpm run reset-password<\/code><\/pre>\n<p style=\"text-align: justify;\">Script s\u1ebd h\u1ecfi username v\u00e0 m\u1eadt kh\u1ea9u m\u1edbi. M\u1eadt kh\u1ea9u \u0111\u01b0\u1ee3c l\u01b0u trong SQLite database t\u1ea1i <code>\/app\/data\/kuma.db<\/code>. Xong th\u00ec g\u00f5 <code>exit<\/code> \u0111\u1ec3 tho\u00e1t container.<\/p>\n<div style=\"background-color: #f8fafc; border: 1.5px solid #E2E8F0; border-radius: 12px; padding: 30px; margin: 40px 0;\">\n<h2 id=\"faq\" style=\"color: #1e3a8a; font-size: 22px; font-weight: bold; margin-top: 0;\">C\u00e2u H\u1ecfi Th\u01b0\u1eddng G\u1eb7p v\u1ec1 Uptime Kuma<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 20px 0 8px;\">Uptime Kuma c\u00f3 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">C\u00f3. Uptime Kuma l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf, mi\u1ec5n ph\u00ed s\u1eed d\u1ee5ng, kh\u00f4ng gi\u1edbi h\u1ea1n s\u1ed1 monitor v\u00e0 kh\u00f4ng c\u00f3 ph\u00ed license. Chi ph\u00ed duy nh\u1ea5t l\u00e0 VPS \u0111\u1ec3 ch\u1ea1y n\u00f3. N\u1ebfu ch\u1ec9 gi\u00e1m s\u00e1t v\u00e0i d\u1ecbch v\u1ee5, m\u1ed9t g\u00f3i VPS gi\u00e1 r\u1ebb l\u00e0 \u0111\u1ee7.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 20px 0 8px;\">Uptime Kuma c\u1ea7n VPS c\u1ea5u h\u00ecnh t\u1ed1i thi\u1ec3u bao nhi\u00eau?<\/h3>\n<p style=\"text-align: justify;\">T\u1ed1i thi\u1ec3u 1 vCPU v\u00e0 512 MB RAM l\u00e0 ch\u1ea1y \u0111\u01b0\u1ee3c v\u1edbi v\u00e0i monitor. N\u1ebfu gi\u00e1m s\u00e1t nhi\u1ec1u d\u1ecbch v\u1ee5 ho\u1eb7c \u0111\u1eb7t interval 20 gi\u00e2y, n\u00ean d\u00f9ng 1 GB RAM tr\u1edf l\u00ean. Dung l\u01b0\u1ee3ng \u0111\u0129a 5 \u0111\u1ebfn 20 GB l\u00e0 \u0111\u1ee7 v\u00ec d\u1eef li\u1ec7u ch\u1ee7 y\u1ebfu l\u00e0 text.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 20px 0 8px;\">C\u00f3 th\u1ec3 c\u00e0i Uptime Kuma tr\u00ean c\u00f9ng VPS \u0111ang ch\u1ea1y website kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">\u0110\u01b0\u1ee3c, mi\u1ec5n l\u00e0 VPS c\u00f2n \u0111\u1ee7 RAM v\u00e0 CPU. Tuy nhi\u00ean n\u1ebfu website \u0111ang ch\u1ea1y production, n\u00ean t\u00e1ch Uptime Kuma ra VPS ri\u00eang \u0111\u1ec3 tr\u00e1nh \u1ea3nh h\u01b0\u1edfng l\u1eabn nhau v\u00e0 \u0111\u1ea3m b\u1ea3o gi\u00e1m s\u00e1t \u0111\u1ed9c l\u1eadp. Khi VPS ch\u00ednh s\u1eadp, Uptime Kuma v\u1eabn ph\u1ea3i ho\u1ea1t \u0111\u1ed9ng.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 20px 0 8px;\">Uptime Kuma l\u01b0u d\u1eef li\u1ec7u \u1edf \u0111\u00e2u v\u00e0 c\u00f3 th\u1ec3 backup kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">D\u1eef li\u1ec7u m\u1eb7c \u0111\u1ecbnh n\u1eb1m trong SQLite database t\u1ea1i <code>.\/data\/kuma.db<\/code>, mount t\u1eeb volume Docker. B\u1ea1n c\u00f3 th\u1ec3 backup b\u1eb1ng c\u00e1ch copy th\u01b0 m\u1ee5c <code>data<\/code> ho\u1eb7c d\u00f9ng <code>docker exec<\/code> \u0111\u1ec3 dump database. N\u00ean backup \u0111\u1ecbnh k\u1ef3 n\u1ebfu c\u1ea5u h\u00ecnh nhi\u1ec1u monitor.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 20px 0 8px;\">L\u00e0m sao \u0111\u1ec3 c\u1eadp nh\u1eadt Uptime Kuma l\u00ean phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t?<\/h3>\n<p style=\"text-align: justify;\">V\u00e0o th\u01b0 m\u1ee5c ch\u1ee9a file compose, ch\u1ea1y <code>docker compose pull<\/code> \u0111\u1ec3 t\u1ea3i image m\u1edbi, sau \u0111\u00f3 <code>docker compose up -d<\/code> \u0111\u1ec3 recreate container. D\u1eef li\u1ec7u trong volume <code>.\/data<\/code> gi\u1eef nguy\u00ean. N\u00ean \u0111\u1ecdc release notes tr\u01b0\u1edbc khi n\u00e2ng c\u1ea5p major version.<\/p>\n<\/div>\n<div style=\"border-top: 2px dashed #BFDBFE; margin-top: 50px; padding-top: 30px;\">\n<h2 style=\"color: #1e3a8a; font-size: 22px; font-weight: bold;\">L\u1eddi k\u1ebft<\/h2>\n<p style=\"text-align: justify;\">C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Uptime Kuma theo d\u00f5i uptime kh\u00f4ng h\u1ec1 ph\u1ee9c t\u1ea1p n\u1ebfu b\u1ea1n \u0111i \u0111\u00fang th\u1ee9 t\u1ef1: Docker Compose \u0111\u1ec3 ch\u1ea1y container, Nginx reverse proxy \u0111\u1ec3 d\u00f9ng domain v\u00e0 HTTPS, Telegram \u0111\u1ec3 nh\u1eadn c\u1ea3nh b\u00e1o, Status Page \u0111\u1ec3 chia s\u1ebb tr\u1ea1ng th\u00e1i v\u1edbi kh\u00e1ch h\u00e0ng. To\u00e0n b\u1ed9 qu\u00e1 tr\u00ecnh m\u1ea5t kho\u1ea3ng 20 \u0111\u1ebfn 30 ph\u00fat tr\u00ean m\u1ed9t VPS Ubuntu s\u1ea1ch.<\/p>\n<p style=\"text-align: justify;\">\u0110i\u1ec3m m\u1ea1nh c\u1ee7a Uptime Kuma n\u1eb1m \u1edf quy\u1ec1n ki\u1ec3m so\u00e1t: d\u1eef li\u1ec7u tr\u00ean server c\u1ee7a b\u1ea1n, kh\u00f4ng gi\u1edbi h\u1ea1n monitor, kh\u00f4ng ph\u1ee5 thu\u1ed9c d\u1ecbch v\u1ee5 b\u00ean th\u1ee9 ba. Ch\u01b0a c\u00f3 VPS th\u00ec b\u1eaft \u0111\u1ea7u v\u1edbi m\u1ed9t g\u00f3i ph\u00f9 h\u1ee3p. \u0110\u00e3 c\u00f3 VPS r\u1ed3i th\u00ec ch\u1ea1y ngay <code>docker compose up -d<\/code> v\u00e0 th\u00eam monitor \u0111\u1ea7u ti\u00ean.<\/p>\n<\/div>\n<p style=\"text-align: justify; font-size: 13px; font-style: italic; color: #6b7280; margin-top: 30px; border-top: 1px solid #E5E7EB; padding-top: 15px;\"><em>N\u1ed9i dung mang t\u00ednh tham kh\u1ea3o. L\u1ec7nh, c\u00fa ph\u00e1p, \u0111\u01b0\u1eddng d\u1eabn file v\u00e0 t\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo phi\u00ean b\u1ea3n h\u1ec7 \u0111i\u1ec1u h\u00e0nh, phi\u00ean b\u1ea3n ph\u1ea7n m\u1ec1m v\u00e0 m\u00f4i tr\u01b0\u1eddng c\u1ee5 th\u1ec3. N\u00ean ki\u1ec3m th\u1eed, sao l\u01b0u d\u1eef li\u1ec7u v\u00e0 \u0111\u00e1nh gi\u00e1 r\u1ee7i ro tr\u01b0\u1edbc khi \u00e1p d\u1ee5ng l\u00ean server production.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Uptime Kuma theo d\u00f5i uptime gi\u1ea3i quy\u1ebft \u0111\u00fang m\u1ed9t v\u1ea5n \u0111\u1ec1 \u0111au \u0111\u1ea7u: b\u1ea1n bi\u1ebft website s\u1eadp ngay l\u00fac n\u00f3 s\u1eadp, ch\u1ee9 kh\u00f4ng ph\u1ea3i \u0111\u1ee3i kh\u00e1ch nh\u1eafn &#8220;web kh\u00f4ng v\u00e0o \u0111\u01b0\u1ee3c&#8221; r\u1ed3i m\u1edbi cu\u1ed1ng l\u00ean ki\u1ec3m tra. Nhi\u1ec1u qu\u1ea3n tr\u1ecb vi\u00ean v\u1eabn \u0111\u1ec3 s\u1ef1 c\u1ed1 k\u00e9o d\u00e0i h\u00e0ng gi\u1edd ch\u1ec9<\/p>\n","protected":false},"author":2,"featured_media":43650,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[161],"tags":[],"class_list":["post-43623","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-huong-dan-chung"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=43623"}],"version-history":[{"count":5,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43623\/revisions"}],"predecessor-version":[{"id":43651,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43623\/revisions\/43651"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/43650"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=43623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=43623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=43623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}