louislam/uptime-kuma · error · Error
Chromium not found, please specify Chromium executable path
Error message
Chromium not found, please specify Chromium executable path in the settings page.
What it means
findChrome caches the last successful auto-detected binary in lastAutoDetectChromeExecutable and otherwise iterates a built-in `executables` list, probing each with commandExists. If none is found on PATH, it throws telling the user to set a path in settings. This is the no-Chromium-present terminal condition.
Source
Thrown at server/monitor-types/real-browser-monitor-type.js:196
* @param {string[]} executables Executables to search through
* @returns {Promise<string>} Executable
* @throws {Error} Could not find executable
*/
async function findChrome(executables) {
// Use the last working executable, so we don't have to search for it again
if (lastAutoDetectChromeExecutable) {
if (await commandExists(lastAutoDetectChromeExecutable)) {
return lastAutoDetectChromeExecutable;
}
}
for (let executable of executables) {
if (await commandExists(executable)) {
lastAutoDetectChromeExecutable = executable;
return executable;
}
}
throw new Error("Chromium not found, please specify Chromium executable path in the settings page.");
}
/**
* Reset chrome
* @returns {Promise<void>}
*/
async function resetChrome() {
if (browser) {
await browser.close();
browser = null;
}
}
/**
* Test if the chrome executable is valid and return the version
* @param {string} executablePath Path to executable
* @returns {Promise<string>} Chrome version
*/View on GitHub (pinned to 6b5ea01557)
Solutions
- Install Chromium/Chrome: apt install chromium-browser / dnf install chromium / apk add chromium.
- Set the Chromium executable path explicitly in the Uptime Kuma settings page.
- Run UPTIME_KUMA_IS_CONTAINER=1 so the monitor installs Chromium via APT to /usr/bin/chromium.
- Ensure the browser's binary directory is on PATH for the Uptime Kuma process.
Example fix
# before # chromium not installed # after apt-get update && apt-get install -y chromium
Defensive patterns
Strategy: validation
Validate before calling
const util = require('util'), execFile = util.promisify(require('child_process').execFile);
async function ensureChromium() {
const candidates = ['chromium', 'chromium-browser', 'google-chrome', 'google-chrome-stable'];
for (const c of candidates) {
try { await execFile('which', [c]); return c; } catch {}
}
throw new Error('Chromium not found; install it or set executablePath');
} Type guard
async function chromiumOnPath() { try { await execFile('which', ['chromium']); return true; } catch { return false; } } Try / catch
try {
await findChrome();
} catch (e) {
if (/Chromium not found/.test(e.message)) {
// install chromium or prompt user for executablePath
}
throw e;
} Prevention
- Install Chromium in the base image, not at runtime.
- In containers, set UPTIME_KUMA_IS_CONTAINER=1 to use the APT install path.
- Pin a Chromium version that matches the bundled Playwright expectations.
When it happens
Trigger: No executable in the `executables` array resolves via PATH, and the cached last-detection is missing too. Common in minimal containers or fresh OS installs without Chrome/Chromium installed.
Common situations: Alpine/slim Docker images without chromium, CI runners without a browser, servers where Chrome was never installed, or PATH not including the browser's bin directory.
Related errors
- This Chromium executable path is not allowed by default. If
- Both ${envName} and ${envName}_FILE are set. Please use only
- Invalid db-config.json, type must be a string
- Unknown Database type: ${dbConfig.type}
- Failed to load docker host config
AI-assisted analysis of louislam/uptime-kuma@6b5ea01557 (2026-08-12).
Data as JSON: /api/errors/9ee9bccaa33e8ab4.
Report an issue: GitHub.