在当今数字化时代,服务的可用性至关重要,无论是个人网站、企业应用还是 API 接口,一旦出现故障,都可能带来不可估量的损失。而 Uptime Kuma 作为一款开源的自托管监控工具,为我们提供了监测 HTTP (s)、TCP、DNS、Docker 等服务的强大能力,本文将详细介绍这款工具及其贡献指南。
📊Uptime Kuma 简介
Uptime Kuma 是一个开源的自托管监控工具,具备以下特点:
✅支持多种监控类型,包括 HTTP (s)、TCP、DNS 记录、Docker 容器等
✨提供精美的、响应式的快速用户界面
🔔支持通过 Telegram、Discord、邮件等 90 多种通知服务发送告警
🌍支持 20 秒间隔监控、多语言、多个状态页面等功能
🎯演示站点
如果你想先体验一下 Uptime Kuma 的功能,可以访问演示站点:https://up.tibtob.cn/status/home。通过演示站点,你可以直观地了解 Uptime Kuma 的界面风格和主要功能。
官方也提供了一个临时演示服务器(位于德国法兰克福):https://demo.kuma.pet/start-demo,不过该演示服务器的数据会每 10 分钟删除一次。
🎨效果图
浅色模式:

状态页面:

🐳使用 Docker 部署 Uptime Kuma
使用以下 Docker 命令可以快速部署 Uptime Kuma:
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2说明:
-d: 后台运行容器。--restart=always: 容器退出时总是自动重启。-p 3001:3001: 将主机的 3001 端口映射到容器的 3001 端口。-v uptime-kuma:/app/data: 将容器内的/app/data目录(用于存储配置和数据库)挂载到名为uptime-kuma的 Docker 卷,确保数据持久化。--name uptime-kuma: 给容器起一个易于识别的名字。louislam/uptime-kuma:1: 使用1.x稳定版镜像。你也可以使用latest标签获取最新版本,但生产环境建议使用具体版本号。
执行上述命令后,Uptime Kuma 将会在所有网络接口上运行,你可以通过 http://localhost:3001 或 http://你的IP地址:3001 访问。
🔒限制仅本地访问
docker run -d --restart=always -p 127.0.0.1:3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2🐳使用 Docker Compose 部署 Uptime Kuma
部署步骤
创建并进入 uptime-kuma 目录:
mkdir uptime-kuma
cd uptime-kuma下载 compose.yaml 文件:
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml启动服务:
docker compose up -d启动后,同样可以通过 http://localhost:3001 或 http://你的IP地址:3001 访问 Uptime Kuma。
⚠️注意事项
🚫Uptime Kuma 不支持 NFS(网络文件系统),请将数据映射到本地目录或卷。
🔌服务器及面板开放端口:默认通过 3001 端口提供服务,需确保该端口在防火墙(如阿里云安全组)中开放;若修改映射端口(如 8080),则开放对应宿主机端口。同时,监控目标涉及的特定端口(如 TCP 8080、DNS 53 等)需允许 Uptime Kuma 服务器访问。
🎨 自定义美化
样式演示:

CSS样式代码:
:root {
--bs-white: #1a1d23;
--bs-light: #2d3036;
--bs-dark: #f8f9fa;
--bs-blue: #4dabf7;
--bs-primary: #4dabf7;
--bs-primary-rgb: 77, 171, 247;
--bs-success: #51cf66;
--bs-danger: #ff6b6b;
--bs-info: #339af0;
--bs-body-bg: #12141c;
--bs-border-color: #373b44;
--bs-card-bg: #1a1d23;
--bs-text-color: #f8f9fa;
/* 蓝白主题变量 - 深色模式优化 */
--bg-gradient: linear-gradient(135deg, #1e3a5f 0%, #12141c 100%);
--card-shadow: 0 4px 12px rgba(13, 110, 253, 0.2);
--card-hover-shadow: 0 8px 24px rgba(13, 110, 253, 0.3);
--button-hover-bg: #339af0;
}
body {
background-color: var(--bs-body-bg) !important;
color: var(--bs-text-color);
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
}
/* 卡片样式 */
.shadow-box {
background: var(--bs-card-bg);
border: 1px solid var(--bs-border-color);
border-radius: 0.75rem;
box-shadow: var(--card-shadow) !important;
margin-top: 1rem !important;
}
.shadow-box:hover {
box-shadow: var(--card-hover-shadow) !important;
}
/* 标题样式 */
.title-flex {
font-weight: 700;
justify-content: center;
color: var(--bs-primary);
}
.group-title {
font-size: 2rem;
font-weight: 700;
color: var(--bs-primary);
border-bottom: 2px solid var(--bs-primary);
padding-bottom: 0.5rem;
margin-bottom: 1.5rem;
}
/* 监控列表布局 */
.monitor-list .monitor-list {
min-height: 45px;
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
.monitor-list .item {
background: var(--bs-card-bg);
border: 1px solid var(--bs-border-color);
border-radius: 0.5rem;
padding: 1rem;
}
.monitor-list .item:hover {
background-color: #252932;
border-color: var(--bs-primary);
}
.monitor-list .item .info {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
/* 状态指示器 */
.status-up {
color: var(--bs-success) !important;
}
.status-down {
color: var(--bs-danger) !important;
}
/* 按钮样式 */
.btn-info {
color: #ffffff;
background-color: var(--bs-primary);
border-color: var(--bs-primary);
border-radius: 0.5rem;
font-weight: 500;
}
.btn-info:hover {
color: #ffffff;
background-color: var(--button-hover-bg);
border-color: var(--button-hover-bg);
}
/* 服务项目标题 */
.item-name {
font-weight: 600;
}
a.item-name {
color: var(--bs-primary);
text-decoration: none !important;
}
a.item-name:hover {
color: var(--button-hover-bg) !important;
}
/* 状态徽章 - 简化版,不干扰百分比显示 */
.info .badge.rounded-pill {
font-size: 0.75rem;
padding: 0.35em 0.65em;
min-width: auto;
}
.info .badge.rounded-pill.bg-primary {
background-color: var(--bs-success) !important;
}
.info .badge.rounded-pill.bg-danger {
background-color: var(--bs-danger) !important;
}
/* 响应式设计 */
@media screen and (max-width: 768px) {
.monitor-list .monitor-list {
grid-template-columns: repeat(1, 1fr);
}
.group-title {
font-size: 1.75rem;
}
.col-md-4, .col-md-8 {
width: 100%;
max-width: 100%;
}
}
/* 底部样式 */
footer[data-v-b8247e57] {
margin: 2rem 0 1rem !important;
padding-top: 1rem;
border-top: 1px solid var(--bs-border-color);
text-align: center;
}
/* 布局调整 */
.col-md-4 {
width: 50%;
}
.col-md-8 {
max-width: 50%;
display: flex;
flex-wrap: wrap;
flex-direction: column;
}
.mb-5 {
margin-bottom: 2rem !important;
}
/* 隐藏原始复选框 */
#ll-footer-toggle {
display: none;
}
/* 针对Uptime Kuma深色模式的特殊调整 */
.dark {
--bs-white: #1a1d23 !important;
--bs-body-bg: #12141c !important;
--bs-dark: #f8f9fa !important;
}
/* 链接颜色优化 */
a {
color: var(--bs-primary);
}
a:hover {
color: var(--button-hover-bg);
}
/* 确保状态图标颜色正确 */
.info .bg-primary {
background-color: var(--bs-success) !important;
}
.info .bg-danger {
background-color: var(--bs-danger) !important;
}
/* 确保状态正常显示绿色 */
.ok {
color: var(--bs-success) !important;
}总结
通过 Docker 或 Docker Compose 部署 Uptime Kuma 非常简单快捷,几分钟内就可以完成部署并开始使用这个强大的监控工具。如果你还没有尝试过,不妨按照本文的步骤部署一个,或者先访问演示站点 https://up.tibtob.cn 体验一下它的功能。
Uptime Kuma 的出现为自托管监控提供了一个优秀的选择,无论是个人使用还是企业部署,都能满足基本的监控需求。