Troubleshooting
symptoms, causes and checks.
Start with two places: the console's Status page, which runs the checks, and the server's own messages (journalctl -u leadlantern -n 100 with systemd, or the terminal with pnpm start). Most problems below show a sentence in the console that names the cause.
01First checks
The commands on this page are written for macOS and Linux shells. On a Windows PC run them inside WSL (Ubuntu) or in Git Bash; production belongs on a Linux server. See Windows.
sudo systemctl status leadlantern # running?
journalctl -u leadlantern -n 100 # the server's messages
curl -s http://127.0.0.1:8080/healthz # {"ok":true} when it answers
02"The public OpenStreetMap server is busy"
Cause: the shared Overpass or Nominatim server answered 429, 502, 503 or 504. It is used by everyone and has no service promise.
- Wait a minute and search again.
- Search a smaller area (a town or district). A very large area can also end with "That area is too large for the OpenStreetMap server to search in one go".
- For regular use, run your own Overpass and Nominatim and enter their addresses in Place data, or use Google Places with your key.
"The OpenStreetMap server (…) did not answer" means no connection at all within the time limit: check the server's outgoing internet, or the address you entered in Place data.
03An e-mail is Failed: Resend says the domain is not verified
Cause: the sender in E-mail is on a domain Resend has not verified (or a different domain from the one you verified). Resend refused it; nothing was sent. The Failed tab shows the reason as "Resend <status>: <Resend's own words>", and Status shows "last outreach message failed: …".
- In Resend → Domains, check the domain shows as verified. If not, add the DNS records it lists at your domain host and wait.
- Press Test connection on the Resend key (Integrations). A full-access key lists your domains with their state.
- Make the sender match the verified domain exactly:
Anna <anna@your-agency.com>. - Open the failed message, press Save changes (it becomes a draft again) and Send now.
04The AI key test fails
| Result of Test connection | What to do |
|---|---|
| set the model under AI drafts first | Type the model id in AI drafts, save, test again. |
| The AI provider refused the API key (HTTP 401 / 403) | Wrong key, or a key for a different provider than the API format chosen. |
| The AI provider does not know this model or address (HTTP 404) | Check the model id spelling, and the API base address (e.g. OpenRouter or Ollama need one). |
| The AI provider's rate or spending limit is reached (HTTP 429) | Add credit or raise the limit at your provider. |
| The AI provider did not answer within 30 seconds / could not be reached | Check the base address; a local Ollama must be reachable from the server. |
While the AI does not work, drafts come from the template; the lead's history says "The AI draft was not used (…). The template was used instead."
05The setup code is lost
Restart the server: each start before the owner exists prints a new code, and any printed code works. sudo systemctl restart leadlantern, then journalctl -u leadlantern -n 50. "Too many failed attempts. Try again later." means five wrong codes in 15 minutes: wait 15 minutes (why).
06Send now is greyed out
A rule on the right is red. Each red line says what to change (Send rules). Press Save changes after a change so the lamps are checked again.
07No "Create a report link" button
- "Set the public address under Settings → Your agency to create report links": the public URL is empty or not https.
- The check did not read the site (blocked by robots.txt, no answer, no https): there is nothing to report.
- Your role is Viewer.
08A check says "The site asks robots not to read it"
The site's robots.txt forbids LeadlanternAudit or all robots. That is the site owner's choice and is respected; there is no way around it. Look at the site yourself in a browser.
09A check says something is missing that the site clearly has
The check reads the HTML and does not run JavaScript. Sites built entirely with scripts can hide their content, booking widget or form from it. Open the site yourself before you mention that finding, and edit the draft.
10"ADMIN_SECRET_KEY must be 32 bytes as 64 hex characters"
The value in .env is not 64 hex characters. Create one with openssl rand -hex 32. If you change the key on a running installation, type every key in Integrations again (details).
11pnpm install stops with ERR_PNPM_IGNORED_BUILDS
pnpm 12 needs pnpm-workspace.yaml next to package.json (pnpm 12 note). Copy it from the download and run pnpm install again. If better-sqlite3 then fails to compile, install build-essential and python3.
12Every change says "Read-only demo."
DEMO_MODE or ADMIN_DEMO_PASSWORD is set in .env. Remove both and restart (Demo mode).
13The site does not open in the browser
- With Caddy: check
sudo systemctl status caddy, that the domain points at the server, and that ports 80 and 443 are open. - Without a proxy,
HOST=127.0.0.1answers only on the server itself; use the ssh tunnel (Installation). - "Cross-site request refused." on every change behind nginx: the proxy does not pass the
Hostheader (nginx example).