Startup and access
The stack refuses to start
The stack refuses to start
POSTGRES_PASSWORD or AUTH_SECRET. Both are required in the root .env and Compose refuses to start when either is missing or empty. Generate them, then start again.The API exits immediately on boot
The API exits immediately on boot
AUTH_SECRETis shorter than 32 characters. The API refuses to run with a weak signing secret. Generate one withopenssl rand -hex 32and recreate the API container.AUTH_COOKIE_SECUREisfalsewhileNODE_ENVisproduction, which the Docker image always sets. The log readsAUTH_COOKIE_SECURE must be true when NODE_ENV is production.Set it back totrueand see Sessions do not persist behind a proxy for ways to reach the stack without TLS. See What the API refuses to start with.
I cannot register a second account
I cannot register a second account
AUTH_ALLOW_REGISTRATION=true and restart the API. See Authentication and accounts.I am signed out after a restart
I am signed out after a restart
AUTH_SECRET changed, which invalidates every session signature. Personal API tokens are unaffected. See Rotate secrets.Sessions do not persist behind a proxy
Sessions do not persist behind a proxy
AUTH_COOKIE_SECURE=true marks the cookie Secure, so a browser reaching the site over plain HTTP from another machine discards it. Setting it to false is not an option, because the Docker image then refuses to boot. Pick one of these instead.- Terminate TLS in front of port 3001 with your own reverse proxy and certificate.
- Compose the Cloudflare Tunnel overlay, which terminates TLS at Cloudflare.
- Forward the port over SSH and open
http://localhost:3001. Browsers treat localhost as a secure context and keep aSecurecookie there without TLS.
Admin surfaces
/admin/queues returns 404
/admin/queues returns 404
404 rather than 403 so it does not confirm it exists. Sign in and reload, or check that BULL_BOARD_ENABLED is not false. See The queue dashboard and the OpenAPI surface./docs returns 404
/docs returns 404
API_DOCS defaults to owner, which gates the documentation routes the same way. Sign in as the owner, or set API_DOCS=public if the surface should be readable by anyone. See The queue dashboard and the OpenAPI surface.Collection
No rankings appeared overnight
No rankings appeared overnight
CRON_DAILY, which defaults to 0 3 * * * and is evaluated in UTC rather than in your local timezone. Check pipeline.lastDailyRunAt on /api/backend/health, then look at the queue dashboard for stuck or failed jobs. See The daily pipeline and rate limits.Rankings show >200 instead of a number
Rankings show >200 instead of a number
Collection is slow or jobs are backing up
Collection is slow or jobs are backing up
GET /jobs/budget. Remove keywords or markets rather than raising the limits, which risks the store throttling your IP address. See The daily pipeline and rate limits.The health badge says degraded after an upgrade
The health badge says degraded after an upgrade
/admin/queues, select the store queue, open its failed jobs and clean them. The badge recovers on the next health check. See The queue dashboard and the OpenAPI surface.A store import fails to parse
A store import fails to parse
Alerts and AI
Webhook alerts never arrive
Webhook alerts never arrive
Email alerts never arrive
Email alerts never arrive
SMTP_HOST and SMTP_FROM are set. One without the other leaves it off. Check the delivery log for a relay rejection, which usually means the envelope sender is not on a domain the relay accepts.A confirmation, recovery or invitation email never arrives
A confirmation, recovery or invitation email never arrives
account channel, with the event naming what it was for, verification, recovery or invitation, and one of three outcomes./metrics as asobeast_account_mail_attempts over the last day, and mail.failures.clustered fires once a fifth of the attempts are being refused. See Hosted observability.The relay is verified once before the first message of a process, so a wrong host, port or credential fails with the relay’s own response rather than being discovered by a customer who never got their link.Alert links point at localhost or are missing
Alert links point at localhost or are missing
WEB_PUBLIC_URL is unset, so the link field is null by design rather than a guess that would not open. Set it to your public origin. See Hosting behind TLS and a reverse proxy.The AI endpoints return 409
The AI endpoints return 409
OPENAI_API_KEY is unset, which disables the AI audit, the metadata drafts card and action explanations. Every other feature works without it. See Enable the optional AI features.