Kuma Mieru 文档
配置

环境变量

列出 Kuma Mieru 读取的全部环境变量,以及它们的默认值和生效时机。

最小配置

假设 Uptime Kuma 状态页的 URL 是 https://example.kuma-mieru.invalid/status/test1,只需要设置一个变量:

.env
UPTIME_KUMA_URLS=https://example.kuma-mieru.invalid/status/test1

有多个状态页时,用 | 分隔完整 URL:

.env
UPTIME_KUMA_URLS=https://example.kuma-mieru.invalid/status/test1|https://example.kuma-mieru.invalid/status/test2

变量模板是 apps/web/.env.example。各部署方式的设置位置:

部署方式设置位置
Vercel、Netlify、EdgeOne Pages平台控制台中的环境变量设置
Docker Compose仓库根目录的 .env
docker run-e 参数,或 --env-file 指定的文件
从源码运行apps/web/.env

生效时机

变量读取时机
UPTIME_KUMA_URLS、UPTIME_KUMA_BASE_URL、PAGE_ID、KUMA_MIERU_*、FEATURE_*generate 脚本运行时。结果写入 apps/web/config/generated-config.json 和 apps/web/config/generated/image-domains.json
STRICT_IMAGE_REMOTE_PATTERNS、NEXT_PUBLIC_ERROR_PAGE_DEV_MODEnext build 构建时
ALLOW_EMBEDDING服务运行时

generate 脚本在托管平台的构建阶段运行,在 Docker 容器中每次启动时运行。所以:

  • 在 Vercel、Netlify 或 EdgeOne Pages 修改任何变量后,需要重新部署。
  • 在 Docker Compose 中修改 .env 后,运行 docker compose up -d --force-recreate,让容器重新读取环境变量。

变量一览

变量必填默认值说明
UPTIME_KUMA_URLS是*无推荐。一个或多个完整的状态页 URL,可以来自不同的 Uptime Kuma 实例
UPTIME_KUMA_BASE_URL是*无兼容旧版。Uptime Kuma 实例的基础 URL,只在未设置 UPTIME_KUMA_URLS 时使用
PAGE_ID是*无兼容旧版。状态页 ID,多个 ID 用逗号分隔,只在未设置 UPTIME_KUMA_URLS 时使用
KUMA_MIERU_TITLE否状态页的标题浏览器标签页的标题
KUMA_MIERU_DESCRIPTION否状态页的描述页面的描述元信息
KUMA_MIERU_ICON否状态页的图标页面图标,必须来自状态页所在的 Uptime Kuma 实例
KUMA_MIERU_EDIT_THIS_PAGE否false是否显示 Edit This Page 按钮
KUMA_MIERU_SHOW_STAR_BUTTON否true是否显示 Star on GitHub 按钮
ALLOW_INSECURE_TLS否false服务端运行时请求 Uptime Kuma 是否跳过 HTTPS 证书校验
REQUEST_TIMEOUT_MS否8000服务端运行时请求的超时时间,单位毫秒
REQUEST_RETRY_MAX否3服务端运行时请求的最大重试次数
REQUEST_RETRY_DELAY_MS否500服务端运行时请求重试的基础间隔,单位毫秒
SSR_STRICT_MODE否false只校验取值,不改变页面行为
NEXT_PUBLIC_ERROR_PAGE_DEV_MODE否false是否在全局错误页显示完整堆栈,构建时写入
ALLOW_EMBEDDING否false是否允许其他网站用 iframe 嵌入
STRICT_IMAGE_REMOTE_PATTERNS否false是否只允许白名单中的远程图片域名

* UPTIME_KUMA_URLS 与 UPTIME_KUMA_BASE_URL 加 PAGE_ID 二选一。两者都设置时,使用 UPTIME_KUMA_URLS。两者都没有设置时,generate 脚本报错退出。

FEATURE_* 开头的旧变量名见旧变量名。Docker 镜像为部分变量内置了默认值,使用仓库的 docker-compose.yml 时 .env 中缺少的变量以空值传入,见 Docker。

状态页地址

UPTIME_KUMA_URLS

推荐的写法,值是一个或多个完整的状态页 URL:

  • 每个 URL 的格式是 https://<主机>/status/<页面 ID>。/status/ 前面的部分是 Uptime Kuma 的基础 URL,可以带路径前缀;/status/ 后面的一段是页面 ID。
  • 多个 URL 用 | 分隔,可以来自不同的 Uptime Kuma 实例。第一个 URL 是默认页面。
  • 页面 ID 在所有实例之间必须唯一。同一个页面 ID 出现在两个不同的基础 URL 下时,配置生成失败。
  • 设置了 UPTIME_KUMA_URLS 后,UPTIME_KUMA_BASE_URL 和 PAGE_ID 会被忽略。

URL 的解析示例见连接 Uptime Kuma。

UPTIME_KUMA_BASE_URL 和 PAGE_ID

兼容旧版的写法,只在没有设置 UPTIME_KUMA_URLS 时使用。所有状态页都来自同一个 Uptime Kuma 实例:

.env
UPTIME_KUMA_BASE_URL=https://example.kuma-mieru.invalid
PAGE_ID=default,status-asia

PAGE_ID 中的多个 ID 用逗号分隔,第一个 ID 是默认页面。

页面外观

标题和描述

KUMA_MIERU_TITLE 和 KUMA_MIERU_DESCRIPTION 决定浏览器标签页的标题和页面的描述元信息(<meta name="description">)。generate 脚本按以下顺序取值:

  1. 环境变量的值。设置后对所有状态页生效。
  2. Uptime Kuma 状态页自身的标题和描述。
  3. 默认值:标题 Kuma Mieru,描述 A beautiful and modern uptime monitoring dashboard。

请求状态页失败时,未设置的项使用默认值。

导航栏的标题和多页面标签优先显示 Uptime Kuma 状态页的实时标题和描述。实时的值为空或请求失败时,才使用上面取到的值。

把这两个变量设为空值也算已设置。这时生成的配置不再使用状态页自身的标题或描述:浏览器标签页的标题显示 Kuma Mieru,描述使用默认描述,导航栏仍显示 Uptime Kuma 的实时标题。

图标

页面上的图标都通过 Kuma Mieru 的 /api/icon 接口从 Uptime Kuma 代理获取。generate 脚本按以下顺序确定图标地址:

  1. KUMA_MIERU_ICON 的值。值为空时跳过这一项。
  2. Uptime Kuma 状态页自身的图标。
  3. 默认图标 /icon.svg。

KUMA_MIERU_ICON 必须指向该状态页所在 Uptime Kuma 实例上的图片:

写法结果
与 Uptime Kuma 基础 URL 同源的完整 URL使用这张图片
相对路径,例如 /logo.png拼接到 Uptime Kuma 基础 URL 后面
其他域名的 URL、以 // 开头的地址、data: 地址忽略,显示默认图标
/icon.svg显示 Kuma Mieru 的默认图标

图片的响应类型不是 image/*,或者图片大于 2 MB 时,也显示默认图标。

模板中的标题、描述和图标

apps/web/.env.example 模板写入了 KUMA_MIERU_TITLE、KUMA_MIERU_DESCRIPTION 和 KUMA_MIERU_ICON 三行,会覆盖状态页自身的标题、描述和图标。想沿用状态页的值时,删掉这三行。在 Docker 中的取值见 Docker。

按钮

变量默认值作用
KUMA_MIERU_EDIT_THIS_PAGEfalse显示 Edit This Page 按钮
KUMA_MIERU_SHOW_STAR_BUTTONtrue显示 Star on GitHub 按钮

值为 true(不区分大小写)时开启,其他值都视为关闭,空值也视为关闭。

使用仓库的 docker-compose.yml 时,.env 中缺少 KUMA_MIERU_SHOW_STAR_BUTTON 会以空值传入容器,Star 按钮因此隐藏。需要显示时,在 .env 中写上 KUMA_MIERU_SHOW_STAR_BUTTON=true。

旧变量名

KUMA_MIERU_* 没有设置时,Kuma Mieru 读取对应的 FEATURE_* 变量。两者都设置时,使用 KUMA_MIERU_*。

变量旧变量名
KUMA_MIERU_TITLEFEATURE_TITLE
KUMA_MIERU_DESCRIPTIONFEATURE_DESCRIPTION
KUMA_MIERU_ICONFEATURE_ICON
KUMA_MIERU_EDIT_THIS_PAGEFEATURE_EDIT_THIS_PAGE
KUMA_MIERU_SHOW_STAR_BUTTONFEATURE_SHOW_STAR_BUTTON

上游请求

ALLOW_INSECURE_TLS

控制 Kuma Mieru 的服务端在运行时请求 Uptime Kuma(监控数据、状态页数据和图标)时是否校验 HTTPS 证书。默认值 false,严格校验证书。设为 true 会跳过证书校验,存在安全风险,只在受信任的自签名证书环境中使用。取值必须是 true 或 false(不区分大小写),其他值会让服务端加载时报错。

generate 脚本读取状态页标题、描述和图标的请求不受这个变量影响,仍然校验证书。在自签名证书环境中,这一步请求失败,标题、描述和图标使用环境变量的值或默认值。

超时与重试

以下变量作用于 Kuma Mieru 的服务端在运行时向 Uptime Kuma 发出的请求。generate 脚本读取状态页元信息的请求不受影响。图标代理的超时时间固定为 10 秒,不读取 REQUEST_TIMEOUT_MS。

变量默认值取值范围含义
REQUEST_TIMEOUT_MS80001000 到 60000请求超时时间,单位毫秒
REQUEST_RETRY_MAX30 到 10最大重试次数
REQUEST_RETRY_DELAY_MS500100 到 10000重试的基础间隔,单位毫秒

取值必须是范围内的整数,否则服务端加载时报错。

错误处理

SSR_STRICT_MODE

Kuma Mieru 只校验这个变量的取值:必须是 true 或 false(不区分大小写),默认值 false,其他值会让服务端加载时报错。它不改变页面行为。

NEXT_PUBLIC_ERROR_PAGE_DEV_MODE

控制全局错误页是否显示完整的错误堆栈,默认值 false。根布局出错时,页面显示全局错误页;这个变量的值为 true 时,全局错误页显示堆栈。NODE_ENV=development 时,全局错误页总会显示堆栈。普通错误页不读取这个变量,错误带有堆栈信息时就会显示。

这个变量对客户端可见,它的值在 next build 时写入客户端代码,修改后需要重新构建。Docker 镜像的构建阶段没有传入这个变量,所以不能通过容器的环境变量开启。

安全

ALLOW_EMBEDDING

控制其他网站能否用 iframe 嵌入仪表盘。这个变量在运行时读取,修改后不需要重新构建镜像。

值效果
false 或不设置禁止嵌入。这是默认值,也是最安全的设置
true允许任何网站嵌入,不推荐
逗号分隔的源列表只允许同源页面和列出的源嵌入
# 允许同源页面和 example.com
ALLOW_EMBEDDING=example.com
# 允许同源页面和多个源
ALLOW_EMBEDDING=example.com,app.example.com
# 源可以带协议
ALLOW_EMBEDDING=https://example.com

设为 true 后,任何网站都能嵌入你的仪表盘,可能导致点击劫持攻击。请尽量列出允许的源。

STRICT_IMAGE_REMOTE_PATTERNS

控制 next/image 允许加载的远程图片域名,在 next build 构建时生效。

值效果
false默认值。允许所有远程图片域名
true只允许 generate-image-domains 脚本生成的域名:各 Uptime Kuma 基础 URL 的域名和 KUMA_MIERU_ICON 的域名

默认放开远程图片域名限制,是为了避免 Docker 运行时域名变化导致图片加载失败。运行在高安全要求的环境时,建议在自建镜像时设置 STRICT_IMAGE_REMOTE_PATTERNS=true,并让构建阶段能生成完整的域名白名单。

最后更新于