# Troubleshooting

### Collect logs

```bash
docker compose ps
docker compose logs --no-color > syntho.log
```

{% hint style="info" %}
You can share `syntho.log` with Syntho Support at <support@syntho.ai>.
{% endhint %}

### Quick triage

1. Check container status: `docker compose ps`.
2. Check logs: `docker compose logs -f`.
3. Confirm host ports are reachable (or via reverse proxy).
4. Confirm `.env` matches your access method (HTTP vs HTTPS).

### UI not reachable

* Check containers: `docker compose ps`.
* Check logs: `docker compose logs -f`.
* Confirm your reverse proxy / firewall exposes port `3000` (or your configured port).

<details>

<summary>Common causes</summary>

* Wrong `FRONTEND_DOMAIN` / `FRONTEND_PORT` in `.env`.
* Reverse proxy not forwarding websockets.
* TLS enabled at the proxy, but Syntho configured for `http` (cookie/security mismatch).

</details>

### Image pull failures

Fix:

Use the registry host and credentials provided by Syntho to login with:

```bash
docker login syntho.azurecr.io -u <USERNAME> -p <PASSWORD>
```

{% hint style="info" %}
Ensure that `syntho.azurecr.io` is added to your firewall allowlist to enable image pulls
{% endhint %}

Then:

```bash
docker compose pull
docker compose up -d
```

### Login loop / can’t stay logged in

If TLS is terminated at a reverse proxy / load balancer / Ingress, Syntho must be configured for `https`.

If Syntho is configured for `http`, browsers can reject cookies.

Symptoms include login loops or sessions not sticking.

Fix:

* Set the frontend protocol to `https`.
* Disable secure cookies.

### Backend / Core API errors (5xx)

Check which service errors:

```bash
docker compose logs -f backend
docker compose logs -f backend-worker
docker compose logs -f core-api
docker compose logs -f core-api-worker
```

If you use external PostgreSQL/Redis, verify network access from the host.

### External PostgreSQL issues

Checks:

* Host can reach PostgreSQL (DNS, routing, firewall, security groups).
* User has permissions to create tables and run migrations.
* DB names match your `.env`.

If you use the bundled PostgreSQL from `deployment-tools`, the default database names are:

* `syntho-backend` (Backend)
* `syntho-core` (Core API)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.syntho.ai/deploy-syntho/deploy-syntho-using-docker/troubleshooting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
