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 yourmysql,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.
- 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’s protected by basic auth (ask your operator for the credentials).
- It reaches your databases over the internal network — no database port is exposed to the internet.
Connecting
Log in to Adminer and fill:
| Field | Value |
|---|---|
| System | MySQL / PostgreSQL / … (match your DB) |
| Server | your DB’s hostname (see below) |
| Username / Password / Database | your DB credentials |
What to put in “Server”:
- A database deployed as its own app (e.g. an app named
mydb): use the app name →mydb. - A database inside a multi-service app (e.g. a
dbservice in your stack): use the service name →db.
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