Debugging & databases

Everything you need to see what your app is doing — logs, errors, container status — and to inspect/manage its databases.

The Inspect panel

In the dashboard, the Logs button on any app opens the Inspect panel:

  • Failure banner — the app’s last_error, shown in red when a deploy failed.
  • Containers — a live table of every service container: state (running / exited / absent), health, image, and exposed ports. This is how you confirm your mysql, redis, etc. are actually up.
  • Build & deploy events — the platform’s own log of the build/deploy (clone, build steps, errors). This is where a failed build shows its error — even when no container exists. Error lines are highlighted.
  • Live container logs — streamed from the container, with a per-service selector so you can read the logs of an internal service (e.g. the database), not just the public one.

If a deploy fails and the site never comes up, open Inspect and read Build & deploy events first — the real error is there.

Actions (buttons at the top of the detail view):

  • Redeploy — re-runs the deployment from the app’s config: re-pulls the image, or re-clones + rebuilds a git app (picks up new commits). This is “deploy again”.
  • Restart — just bounces the existing containers (no rebuild). Use it to apply a restart, not to ship new code.
  • Show env / credentials reveals the app’s environment variables — including any auto-generated passwords/keys — with a Download .env. This is how you recover credentials after deploy (they’re shown only once at import otherwise).
  • Open opens the app, Manage database opens Adminer (below).

Same data via the API

curl -s $API/apps/<appId>/events     -H "authorization: Bearer $TOKEN"  # build/deploy log + lastError
curl -s $API/apps/<appId>/containers -H "authorization: Bearer $TOKEN"  # per-service status
curl -s "$API/apps/<appId>/logs?tail=500&container=app-<appId>-<svc>" \
        -H "authorization: Bearer $TOKEN"                               # logs of a specific service

Managing databases (Adminer)

A shared web database manager — Adminer — speaks MySQL / MariaDB / PostgreSQL / SQLite / MS SQL / Oracle, so you can browse tables, run SQL, and import/export — all from the browser.

  • Open it from the dashboard: the Database link in the top bar, or Manage database in an app’s detail view (also at https://db.cynchro.cloud).
  • It reaches your databases over the internal networkno database port is exposed to the internet, and it still requires valid DB credentials to do anything.

Connecting

The Manage database button (in an app’s detail view) logs you straight in — it reads the app’s database service and the credentials it’s configured with, so you don’t type anything. One click and you’re in your DB.

If you open Adminer directly (the top-bar Database link), fill it in manually:

Field Value
System MySQL / PostgreSQL / … (match your DB)
Server the service name of your DB (e.g. db)
Username / Password / Database your DB credentials

Databases inside a multi-service stack are on a private network. New multi-service deploys are wired into Adminer automatically — if a database deployed earlier doesn’t show up, hit Redeploy on that app to wire it in.

Tip: keep credentials in Secrets

Put your DB user/password in a Secret and inject it into the app — then the same values are what you type into Adminer.

→ Error reference: Troubleshooting


This site uses Just the Docs, a documentation theme for Jekyll.