Startup and access
The stack refuses to start
The stack refuses to start
Compose exits with a message about
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_SECRET is shorter than 32 characters. The API validates it at boot and refuses to run with a weak signing secret. Generate one with openssl rand -hex 32 and recreate the API container.I cannot register a second account
I cannot register a second account
Registration closed automatically once the owner account existed, which is the default. Set
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 discards it. Terminate TLS, or set it to false while you are on HTTP. See Hosting behind TLS and a reverse proxy.Admin surfaces
/admin/queues returns 404
/admin/queues returns 404
You are not signed in as the owner in that browser. The surface answers
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
The daily pipeline starts at
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
Not a failure. The keyword was checked and the app was not found within the captured depth, which defaults to 200. The bound is read from that row’s own depth. See Positions and rank depth.
Collection is slow or jobs are backing up
Collection is slow or jobs are backing up
Both workers run at concurrency 1 behind a rate limiter, so a large keyword and market count simply takes longer. Check the request budget card on the settings page or
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.A store import fails to parse
A store import fails to parse
A store changed a response shape. The failure is contained to the provider layer, the job fails, and BullMQ retries it with backoff while request handling continues. Look at the failed job on the queue dashboard for the message, then open an issue with it. See How asobeast works.
Alerts and AI
Webhook alerts never arrive
Webhook alerts never arrive
The endpoint returned a non 2xx status, which the delivery log records per channel on the settings page. Fix the endpoint, then use flush now to claim the facts currently pending. See Send alerts.
Email alerts never arrive
Email alerts never arrive
Email stays disabled until both
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.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.