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

  1. Install Chromium/Chrome: apt install chromium-browser / dnf install chromium / apk add chromium.
  2. Set the Chromium executable path explicitly in the Uptime Kuma settings page.
  3. Run UPTIME_KUMA_IS_CONTAINER=1 so the monitor installs Chromium via APT to /usr/bin/chromium.
  4. 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

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


AI-assisted analysis of louislam/uptime-kuma@6b5ea01557 (2026-08-12). Data as JSON: /api/errors/9ee9bccaa33e8ab4. Report an issue: GitHub.