Uptime Kuma:一款强大的自托管监控工具

Uptime Kuma:一款强大的自托管监控工具

_

在当今数字化时代,服务的可用性至关重要,无论是个人网站、企业应用还是 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 分钟删除一次。

🎨效果图

浅色模式:

1764638239610.png

状态页面:

1764638238941.png

🐳使用 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:3001http://你的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

部署步骤

  1. 创建并进入 uptime-kuma 目录:

mkdir uptime-kuma
cd uptime-kuma
  1. 下载 compose.yaml 文件:

curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
  1. 启动服务:

docker compose up -d

启动后,同样可以通过 http://localhost:3001http://你的IP地址:3001 访问 Uptime Kuma。

⚠️注意事项

  1. 🚫Uptime Kuma 不支持 NFS(网络文件系统),请将数据映射到本地目录或卷。

  2. 🔌服务器及面板开放端口默认通过 3001 端口提供服务,需确保该端口在防火墙(如阿里云安全组)中开放;若修改映射端口(如 8080),则开放对应宿主机端口。同时,监控目标涉及的特定端口(如 TCP 8080、DNS 53 等)需允许 Uptime Kuma 服务器访问。

🎨 自定义美化

样式演示:

1764638238970.png

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 的出现为自托管监控提供了一个优秀的选择,无论是个人使用还是企业部署,都能满足基本的监控需求。

Halo博客halo-theme-hao主题功能标签汇总 2025-11-11
免费图标神器Icônes上线啦!80+ 图标集随便用 2025-11-21

评论区