Skip to the article

Instance diagnostics

Run the read-only doctor from the exact release checkout and installed environment.

Start with the installed profile

Run the read-only doctor from the exact release checkout and installed environment. Use --mode full with the upstream Compose path or managed with the provider database connection. It checks compatibility, configuration, container state, DNS/TLS, app health, disk space and scheduler; database/migration and Storage verification require the appropriate connection. Its redaction is useful, but inspect a report before sharing it. A passing liveness check does not prove account email, readable encrypted content or restored files.

Bash
pnpm self-host:doctor -- --mode full --env-file "$MINDDY_ENV_FILE" \
  --supabase-compose "$SUPABASE_DIR/docker/docker-compose.yml" --json

Map the symptom to a safe check

Map the symptom to a safe check
SymptomCheck
Broad 401 responses after restorationVerify that JWT, anon and service-role keys belong to the same stack.
Failed uploads or 404 filesCompare Storage policies, object records, raw bytes and keys.
Missing database relationsPreserve the first migration error and check disk, locks and the target URL. Rerun release bootstrap only after resolving the cause; never mark failed migrations applied by hand.
Realtime failuresCheck publication, JWT, the WebSocket proxy and service logs.
Idle cron or 401 jobsVerify scheduler state, canonical origin and CRON_SECRET privately.
Version compatibility failsCompare MINDDY_RELEASE with a row of deploy/self-hosted/compatibility.json and MINDDY_IMAGE with that row or the verified immutable digest. The installer copies MINDDY_RELEASE from the deployment template.

Retain evidence and retry deliberately

Fix missing Docker/CLI prerequisites or incomplete API values and repeat the idempotent installer using the preserved environment. Correct runtime public URLs and recreate the application; rebuilding the OCI image is unnecessary. Do not delete non-empty buckets, reset database data or rotate roots to clear warnings. Optional-disabled capability reports can be expected when those providers are intentionally absent. Share release, profile, timestamps, controlled error codes and redacted diagnostics for support. Remove passwords, tokens, Authorization headers, cookies, private object URLs and user content.

If a fresh image download stops with a long progress log and no registry error, the v0.11.0 installer can exceed its subprocess output buffer. Later installers pull quietly with a larger buffer and, if the output still exceeds it, stop with an explicit instruction. In either case, run compose pull --quiet in the exact installed Compose context, then rerun the same installer with --skip-pull to use those loaded images, preserving the environment. This workaround does not repair a registry or signature failure. If offline function compilation reports a jose version mismatch, stop. The v0.11.0 tooling requests 6.2.3 while its direct frozen dependency resolves to 6.2.12; obtain a corrected release/tooling combination before treating that installation as accepted. In later releases, the pin matches the frozen dependency, so a mismatch means pnpm install --frozen-lockfile did not complete in that checkout. Do not silently relax the dependency identity check.

The v0.11.0 OCI runner also fails to start because agent-runner-storage.mjs is missing from its runtime image, so the application never becomes healthy. Later releases remove the runner and its code sandboxes. Upgrade to such a release instead of mounting runner files or weakening container isolation.

Related articles