Skip to content

Troubleshooting

Daniel J. Saldaña edited this page Oct 29, 2026 · 1 revision

Troubleshooting

🇪🇸 Español

Local setup

The dashboard fails with a TLS error connecting to PostgreSQL. For a local server without TLS, set DB_SSL=false. With DB_SSL=true, the certificate and host name are verified; set DB_SSL_CA_PATH to a PEM file if the server uses a private CA.

Tailwind or Next.js fails with a native binary error. Dependencies were installed on a different operating system. Run npm ci again on the system where Next.js runs.

Sign-in is blocked instead of showing the dashboard. The authentication configuration is incomplete or invalid. Check DASHBOARD_AUTH_MODE, AUTH_SECRET (at least 32 bytes) and AUTH_URL. Goliat never falls back to public access.

The port changed and sign-in redirects to the wrong address. Update AUTH_URL and SITE_URL together with PORT.

npm run db:seed refuses to run. It is disabled when NODE_ENV=production.

Refresh and inventory

Refresh returns 409 refresh_busy. Another user or replica is already refreshing. Only one manual refresh runs at a time; wait for it to finish.

The Function HTTP API returns 503. The Entra API of the Function is not configured. Run .\iac\configure-refresh.ps1. The timer and worker keep working meanwhile.

The first generation after deployment fails. Azure RBAC assignments can take several minutes to propagate. Confirm that the Function identity has Reader on the subscriptions (-GrantReader) and request a new generation.

The dashboard still shows old data after the timer ran. The timer publishes the blob; it does not import it. Press Refresh, or run npm run collect:azure. Administration shows a warning when the published and imported inventories differ.

Large inventories fail or time out. Increase the Function memory with -InstanceMemoryMB 2048, INVENTORY_REFRESH_TIMEOUT_MS (maximum 900000) and, if needed, AZURE_MAX_OBJECT_MB.

New tag columns do not appear. After saving tags in Administration, refresh the inventory so the collector regenerates the columns.

Access

Administration does not appear for a new administrator. The user must sign out and sign in again after being added, so the session includes oid and tid. Check that the object ID (not the email) is configured. Administration requires Entra ID sign-in.

The Members view fails right after .\goliat.ps1 members. Graph consent and the managed identity token can take a while to propagate. An Entra administrator must grant consent for User.Read.All; subscription Owner is not enough.

The Members script stops with appRoleAssignmentRequired=true. The Members view lists every account of the tenant and does not support applications that require individual user assignment. Keep DASHBOARD_MEMBERS_ENABLED=false in that case.

FinOps

FinOps returns 429. Each process allows two concurrent cost queries. Wait for the Retry-After interval.

A subscription is shown as unavailable. The web identity needs Cost Management Reader on it. EA, MCA or CSP agreements may require additional billing access.

Azure deployment

PowerShell refuses to run the scripts. Run Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned. It affects only the current session.

az is not found. Pass its path with -AzPath 'C:\path\to\az.cmd'.

The web is suspended or slow on F1. F1 has 60 CPU minutes per day and cold starts. Redeploy with -WebSku B1.

PostgreSQL started by itself. Azure automatically restarts a stopped Flexible Server after seven days.

Deployment refuses to use an existing resource group. The group does not have Goliat ownership tags. Use another -Name instead of taking over a group that belongs to something else.

Still stuck? Open an issue with the steps, the error and the relevant requestId from the logs. Never include secrets or tokens.

Clone this wiki locally