Kuma Mieru Docs
Configuration

Environment Variables

Lists all environment variables that Kuma Mieru reads, with their defaults and when they apply.

Minimum configuration

If the URL of your Uptime Kuma status page is https://example.kuma-mieru.invalid/status/test1, you need only one variable:

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

For multiple status pages, separate the full URLs with |:

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

The template of the variables is apps/web/.env.example. Where you set the variables depends on the deployment method:

Deployment methodWhere to set
Vercel, Netlify, EdgeOne PagesThe environment variable settings in the platform console
Docker Compose.env in the repository root
docker run-e options, or the file given with --env-file
Run from sourceapps/web/.env

When variables apply

VariablesRead
UPTIME_KUMA_URLS, UPTIME_KUMA_BASE_URL, PAGE_ID, KUMA_MIERU_*, FEATURE_*When the generate script runs. The result goes to apps/web/config/generated-config.json and apps/web/config/generated/image-domains.json
STRICT_IMAGE_REMOTE_PATTERNS, NEXT_PUBLIC_ERROR_PAGE_DEV_MODEDuring next build
ALLOW_EMBEDDINGWhile the server runs

Hosting platforms run the generate script during the build. A Docker container runs it each time it starts. Thus:

  • After you change a variable on Vercel, Netlify or EdgeOne Pages, redeploy.
  • After you edit .env for Docker Compose, run docker compose up -d --force-recreate. The container then reads the environment variables again.

Variable list

VariableRequiredDefaultDescription
UPTIME_KUMA_URLSYes*NoneRecommended. One or more full status page URLs. They can come from different Uptime Kuma instances
UPTIME_KUMA_BASE_URLYes*NoneLegacy. Base URL of the Uptime Kuma instance. Used only when UPTIME_KUMA_URLS is not set
PAGE_IDYes*NoneLegacy. Status page IDs, separated by commas. Used only when UPTIME_KUMA_URLS is not set
KUMA_MIERU_TITLENoTitle of the status pageTitle of the browser tab
KUMA_MIERU_DESCRIPTIONNoDescription of the status pageDescription metadata of the page
KUMA_MIERU_ICONNoIcon of the status pagePage icon. It must come from the Uptime Kuma instance of the status page
KUMA_MIERU_EDIT_THIS_PAGENofalseShow the Edit This Page button
KUMA_MIERU_SHOW_STAR_BUTTONNotrueShow the Star on GitHub button
ALLOW_INSECURE_TLSNofalseSkip HTTPS certificate validation for runtime server requests to Uptime Kuma
REQUEST_TIMEOUT_MSNo8000Timeout of runtime server requests, in milliseconds
REQUEST_RETRY_MAXNo3Maximum number of retries for runtime server requests
REQUEST_RETRY_DELAY_MSNo500Base interval between retries of runtime server requests, in milliseconds
SSR_STRICT_MODENofalseOnly the value is validated. It does not change the page behavior
NEXT_PUBLIC_ERROR_PAGE_DEV_MODENofalseShow the full stack trace on the global error page. Written at build time
ALLOW_EMBEDDINGNofalseAllow other sites to embed the dashboard in an iframe
STRICT_IMAGE_REMOTE_PATTERNSNofalseAllow only remote image domains on the allowlist

* Set either UPTIME_KUMA_URLS or UPTIME_KUMA_BASE_URL with PAGE_ID. If you set both, Kuma Mieru uses UPTIME_KUMA_URLS. If you set neither, the generate script stops with an error.

For the legacy names that start with FEATURE_, see Legacy variable names. The Docker image has built-in defaults for some variables. With the docker-compose.yml of the repository, variables that are missing from .env go to the container as empty values. See Docker.

Status page addresses

UPTIME_KUMA_URLS

This is the recommended form. The value is one or more full status page URLs:

  • Each URL has the format https://<host>/status/<page ID>. The part before /status/ is the base URL of Uptime Kuma, and it can include a path prefix. The segment after /status/ is the page ID.
  • Separate multiple URLs with |. The URLs can come from different Uptime Kuma instances. The first URL is the default page.
  • Each page ID must be unique across all instances. If the same page ID appears under two different base URLs, configuration generation fails.
  • When UPTIME_KUMA_URLS is set, Kuma Mieru ignores UPTIME_KUMA_BASE_URL and PAGE_ID.

For examples of how Kuma Mieru parses a URL, see Connect Uptime Kuma.

UPTIME_KUMA_BASE_URL and PAGE_ID

This is the legacy form. Kuma Mieru uses it only when UPTIME_KUMA_URLS is not set. All status pages come from one Uptime Kuma instance:

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

Separate multiple IDs in PAGE_ID with commas. The first ID is the default page.

Page appearance

Title and description

KUMA_MIERU_TITLE and KUMA_MIERU_DESCRIPTION set the title of the browser tab and the description metadata of the page (<meta name="description">). The generate script selects the values in this order:

  1. The value of the environment variable. It applies to all status pages.
  2. The title and description of the Uptime Kuma status page.
  3. The defaults: the title Kuma Mieru and the description A beautiful and modern uptime monitoring dashboard.

If the request to the status page fails, each item that is not set uses its default.

The navigation bar title and the multi-page tabs show the live title and description of the Uptime Kuma status page first. They use the values above only when the live value is empty or the request fails.

An empty value for one of these two variables counts as set. Then the generated configuration does not use the title or description of the status page. The browser tab shows the title Kuma Mieru, the description is the default description, and the navigation bar still shows the live title from Uptime Kuma.

Icon

All icons on the page come from Uptime Kuma through the /api/icon proxy of Kuma Mieru. The generate script selects the icon address in this order:

  1. The value of KUMA_MIERU_ICON. An empty value skips this item.
  2. The icon of the Uptime Kuma status page.
  3. The default icon /icon.svg.

KUMA_MIERU_ICON must point to an image on the Uptime Kuma instance of the status page:

ValueResult
A full URL with the same origin as the Uptime Kuma base URLKuma Mieru uses this image
A relative path, for example /logo.pngKuma Mieru appends it to the Uptime Kuma base URL
A URL on another domain, an address that starts with //, or a data: addressIgnored. The default icon appears
/icon.svgThe default Kuma Mieru icon appears

The default icon also appears if the response type is not image/* or the image is larger than 2 MB.

Title, description and icon in the template

The apps/web/.env.example template contains the lines KUMA_MIERU_TITLE, KUMA_MIERU_DESCRIPTION and KUMA_MIERU_ICON. They replace the title, description and icon of the status page. To keep the values of the status page, delete these three lines. For the values in Docker, see Docker.

Buttons

VariableDefaultEffect
KUMA_MIERU_EDIT_THIS_PAGEfalseShows the Edit This Page button
KUMA_MIERU_SHOW_STAR_BUTTONtrueShows the Star on GitHub button

The value true (in any letter case) turns a button on. All other values, including an empty value, turn it off.

With the docker-compose.yml of the repository, a missing KUMA_MIERU_SHOW_STAR_BUTTON in .env goes to the container as an empty value. The Star button is then hidden. To show it, write KUMA_MIERU_SHOW_STAR_BUTTON=true in .env.

Legacy variable names

If a KUMA_MIERU_* variable is not set, Kuma Mieru reads the matching FEATURE_* variable. If both are set, Kuma Mieru uses KUMA_MIERU_*.

VariableLegacy name
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

Upstream requests

ALLOW_INSECURE_TLS

Controls whether the Kuma Mieru server validates the HTTPS certificate when it requests Uptime Kuma at runtime (monitoring data, status page data and icons). The default is false, which validates the certificate strictly. The value true skips certificate validation and is a security risk. Use it only in a trusted environment with a self-signed certificate. The value must be true or false (in any letter case). Any other value makes the server fail when it loads.

This variable does not affect the requests of the generate script that read the title, description and icon of the status page. These requests always validate the certificate. With a self-signed certificate, this step fails, and the title, description and icon come from the environment variables or the defaults.

Timeout and retries

These variables apply to the requests that the Kuma Mieru server sends to Uptime Kuma at runtime. They do not affect the requests of the generate script that read the status page metadata. The icon proxy uses a fixed timeout of 10 seconds and does not read REQUEST_TIMEOUT_MS.

VariableDefaultRangeMeaning
REQUEST_TIMEOUT_MS80001000 to 60000Request timeout, in milliseconds
REQUEST_RETRY_MAX30 to 10Maximum number of retries
REQUEST_RETRY_DELAY_MS500100 to 10000Base interval between retries, in milliseconds

Each value must be an integer in its range. Otherwise the server fails when it loads.

Error handling

SSR_STRICT_MODE

Kuma Mieru only validates the value of this variable. The value must be true or false (in any letter case), and the default is false. Any other value makes the server fail when it loads. The variable does not change the page behavior.

NEXT_PUBLIC_ERROR_PAGE_DEV_MODE

Controls whether the global error page shows the full stack trace. The default is false. The global error page appears when the root layout fails. When this variable is true, the global error page shows the stack trace. With NODE_ENV=development, the global error page always shows the stack trace. The regular error page does not read this variable. It shows the stack trace whenever the error has one.

The client can read this variable. Its value is written into the client code during next build, so a change needs a new build. The build stage of the Docker image does not set this variable, so you cannot turn it on with a container environment variable.

Security

ALLOW_EMBEDDING

Controls whether other sites can embed the dashboard in an iframe. Kuma Mieru reads this variable at runtime, so a change needs no image rebuild.

ValueEffect
false or not setBlocks embedding. This is the default and the most secure setting
trueAllows any site to embed the dashboard. Not recommended
A comma-separated list of originsAllows only the same origin and the listed origins
# Allow the same origin and example.com
ALLOW_EMBEDDING=example.com
# Allow the same origin and multiple origins
ALLOW_EMBEDDING=example.com,app.example.com
# An origin can include the protocol
ALLOW_EMBEDDING=https://example.com

With true, any site can embed your dashboard. This can allow clickjacking attacks. When possible, list the allowed origins.

STRICT_IMAGE_REMOTE_PATTERNS

Controls which remote image domains next/image can load. It applies during next build.

ValueEffect
falseDefault. Allows all remote image domains
trueAllows only the domains that the generate-image-domains script generates: the domains of the Uptime Kuma base URLs and the domain of KUMA_MIERU_ICON

The default relaxes the remote image domain restrictions. This prevents image failures when the Docker runtime endpoints change. In high-security environments, set STRICT_IMAGE_REMOTE_PATTERNS=true when you build your own image. The build step must be able to generate the complete domain allowlist.

Last updated on