Container startup issues
SUPABASE_JWT_SECRET is required
SUPABASE_JWT_SECRET is required
The API validates the Supabase JWT secret at startup and will not boot without it.Fixes:
- Check that
SUPABASE_JWT_SECRETis set in your.envfile. - Verify you copied it from Project Settings → API → JWT Settings in Supabase — not the
anonkey orservice_rolekey. - Make sure the variable name is spelled exactly right, with no trailing spaces or quotes around the value.
failed to connect to database
failed to connect to database
- The Postgres container may still be starting. Wait 10–15 seconds and run
docker compose up -dagain — it’s idempotent. - Check that
DB_HOST,DB_PORT,DB_USER, andDB_PASSWORDin.envmatch your Postgres configuration. - For Docker Compose,
DB_HOSTshould bepostgres(the service name), notlocalhost.
Port 8080 already in use
Port 8080 already in use
SERVER_PORT in .env to an available port and update the port mapping in docker-compose.yml:Migration failure at startup
Migration failure at startup
- Drop the migration tracking table (this marks all migrations as unapplied):
- Restart the API — it will re-run all migrations.
Authentication errors
401 Unauthorized on all API requests
401 Unauthorized on all API requests
Cannot log in — redirect errors in the browser
Cannot log in — redirect errors in the browser
Fixes:
- In your Supabase project, go to Authentication → URL Configuration and set the Site URL to your frontend URL (e.g.
http://localhost:5173). - Add your frontend URL to the Redirect URLs allowlist in the same section.
- If you’ve changed
FRONTEND_URLin.env, make sure the new URL is also added to Supabase.
Resources not appearing
No resources appear after connecting a provider
No resources appear after connecting a provider
The initial resource sync runs in the background after you connect a provider. For small accounts it takes under a minute; for large accounts with 1,000 or more resources, it can take up to 10 minutes.Check the sync status:In the InfraAudit UI, go to Cloud Providers and look at the provider’s status:
syncing— the sync is in progress, wait for it to completesynced— the sync finished; resources should be visibleerror— the sync failed; click the provider to see the error message
error, the most likely cause is invalid credentials or missing IAM permissions. See the relevant integration guide for required permissions:Drift detection returns zero findings after first setup
Drift detection returns zero findings after first setup
This is expected behavior. InfraAudit captures baselines during the initial resource sync. The drift scanner compares live state against those baselines, so on the very first scan there is nothing to compare against.To see drift findings:
- Make a change in your cloud account (add a tag, modify a security group rule, etc.)
- Wait for or manually trigger a resource sync.
- Run drift detection — the change will appear as a finding.
Scans not running
Scheduled scans are not executing
Scheduled scans are not executing
Fixes:
- Check the
JOB_*_SCHEDULEvariables in your.env. The defaults use standard cron syntax — verify the expressions are valid. - Check the API logs for job scheduler errors:
docker compose logs api | grep -i "job\|scheduler\|cron". - Check
JOB_TIMEOUT_SECONDS— if the previous job run timed out, the scheduler may be waiting for it to complete. The default is300seconds. - If using the
LOG_LEVEL=debugsetting, scheduler activity is logged at startup.
Scans time out on large accounts
Scans time out on large accounts
For accounts with many resources, scans may exceed the default 5-minute timeout.Fix: Increase Restart the API for the change to take effect.
JOB_TIMEOUT_SECONDS in .env:Performance issues
High memory usage
High memory usage
Memory usage spikes during large vulnerability scans and compliance assessments — this is expected. If memory stays elevated after a job finishes, restart the API container:If memory consistently exceeds 1 GB during normal operation (not during scans), increase
DB_MAX_IDLE_CONNS and reduce DB_MAX_OPEN_CONNS in your .env to reduce connection pool overhead.Viewing logs
LOG_LEVEL=debug in .env for verbose output. Remember to set it back to info when you’re done — debug logging significantly increases log volume.
Filing a GitHub issue
If you can’t resolve an issue with this page, open an issue at github.com/pratik-mahalle/infraudit-go/issues. Include:- Your InfraAudit version:
docker compose exec api ./infraudit-api --version - Your deployment method (Docker Compose, Kubernetes, or binary)
- The full error log output
- Your
.envfile contents with all secrets redacted