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:
UPTIME_KUMA_URLS=https://example.kuma-mieru.invalid/status/test1For multiple status pages, separate the full URLs with |:
UPTIME_KUMA_URLS=https://example.kuma-mieru.invalid/status/test1|https://example.kuma-mieru.invalid/status/test2The template of the variables is apps/web/.env.example. Where you set the variables depends on the deployment method:
| Deployment method | Where to set |
|---|---|
| Vercel, Netlify, EdgeOne Pages | The 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 source | apps/web/.env |
When variables apply
| Variables | Read |
|---|---|
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_MODE | During next build |
ALLOW_EMBEDDING | While 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
.envfor Docker Compose, rundocker compose up -d --force-recreate. The container then reads the environment variables again.
Variable list
| Variable | Required | Default | Description |
|---|---|---|---|
UPTIME_KUMA_URLS | Yes* | None | Recommended. One or more full status page URLs. They can come from different Uptime Kuma instances |
UPTIME_KUMA_BASE_URL | Yes* | None | Legacy. Base URL of the Uptime Kuma instance. Used only when UPTIME_KUMA_URLS is not set |
PAGE_ID | Yes* | None | Legacy. Status page IDs, separated by commas. Used only when UPTIME_KUMA_URLS is not set |
KUMA_MIERU_TITLE | No | Title of the status page | Title of the browser tab |
KUMA_MIERU_DESCRIPTION | No | Description of the status page | Description metadata of the page |
KUMA_MIERU_ICON | No | Icon of the status page | Page icon. It must come from the Uptime Kuma instance of the status page |
KUMA_MIERU_EDIT_THIS_PAGE | No | false | Show the Edit This Page button |
KUMA_MIERU_SHOW_STAR_BUTTON | No | true | Show the Star on GitHub button |
ALLOW_INSECURE_TLS | No | false | Skip HTTPS certificate validation for runtime server requests to Uptime Kuma |
REQUEST_TIMEOUT_MS | No | 8000 | Timeout of runtime server requests, in milliseconds |
REQUEST_RETRY_MAX | No | 3 | Maximum number of retries for runtime server requests |
REQUEST_RETRY_DELAY_MS | No | 500 | Base interval between retries of runtime server requests, in milliseconds |
SSR_STRICT_MODE | No | false | Only the value is validated. It does not change the page behavior |
NEXT_PUBLIC_ERROR_PAGE_DEV_MODE | No | false | Show the full stack trace on the global error page. Written at build time |
ALLOW_EMBEDDING | No | false | Allow other sites to embed the dashboard in an iframe |
STRICT_IMAGE_REMOTE_PATTERNS | No | false | Allow 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_URLSis set, Kuma Mieru ignoresUPTIME_KUMA_BASE_URLandPAGE_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:
UPTIME_KUMA_BASE_URL=https://example.kuma-mieru.invalid
PAGE_ID=default,status-asiaSeparate 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:
- The value of the environment variable. It applies to all status pages.
- The title and description of the Uptime Kuma status page.
- The defaults: the title
Kuma Mieruand the descriptionA 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:
- The value of
KUMA_MIERU_ICON. An empty value skips this item. - The icon of the Uptime Kuma status page.
- The default icon
/icon.svg.
KUMA_MIERU_ICON must point to an image on the Uptime Kuma instance of the status page:
| Value | Result |
|---|---|
| A full URL with the same origin as the Uptime Kuma base URL | Kuma Mieru uses this image |
A relative path, for example /logo.png | Kuma Mieru appends it to the Uptime Kuma base URL |
A URL on another domain, an address that starts with //, or a data: address | Ignored. The default icon appears |
/icon.svg | The 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
| Variable | Default | Effect |
|---|---|---|
KUMA_MIERU_EDIT_THIS_PAGE | false | Shows the Edit This Page button |
KUMA_MIERU_SHOW_STAR_BUTTON | true | Shows 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_*.
| Variable | Legacy name |
|---|---|
KUMA_MIERU_TITLE | FEATURE_TITLE |
KUMA_MIERU_DESCRIPTION | FEATURE_DESCRIPTION |
KUMA_MIERU_ICON | FEATURE_ICON |
KUMA_MIERU_EDIT_THIS_PAGE | FEATURE_EDIT_THIS_PAGE |
KUMA_MIERU_SHOW_STAR_BUTTON | FEATURE_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.
| Variable | Default | Range | Meaning |
|---|---|---|---|
REQUEST_TIMEOUT_MS | 8000 | 1000 to 60000 | Request timeout, in milliseconds |
REQUEST_RETRY_MAX | 3 | 0 to 10 | Maximum number of retries |
REQUEST_RETRY_DELAY_MS | 500 | 100 to 10000 | Base 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.
| Value | Effect |
|---|---|
false or not set | Blocks embedding. This is the default and the most secure setting |
true | Allows any site to embed the dashboard. Not recommended |
| A comma-separated list of origins | Allows 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.comWith 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.
| Value | Effect |
|---|---|
false | Default. Allows all remote image domains |
true | Allows 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