Troubleshooting
Deployment Issues
Deploy script fails with “Missing required env var”
Cause: Required variables not set in .env.prod.
Fix: Ensure all required variables are set:
# Required variables:BREEZE_DOMAIN, ACME_EMAIL, POSTGRES_PASSWORD, JWT_SECRET,AGENT_ENROLLMENT_SECRET, METRICS_SCRAPE_TOKEN, PUBLIC_API_URL,GRAFANA_ADMIN_PASSWORDTLS certificate not provisioning
Cause: DNS not pointing to server, or ports 80/443 blocked.
Fix:
- Verify DNS:
dig +short breeze.yourdomain.com - Check ports:
sudo ss -tlnp | grep -E ':(80|443)' - Check Caddy logs:
docker logs breeze-caddy
Database migration fails
Cause: PostgreSQL not ready or connection string incorrect.
Fix:
# Check PostgreSQL is runningdocker compose -f docker/docker-compose.prod.yml exec postgres pg_isready
# Check connection stringdocker compose -f docker/docker-compose.prod.yml exec api env | grep DATABASE_URLAgent Issues
Agent not appearing in dashboard
Causes:
- Enrollment failed
- WebSocket connection blocked
- Agent can’t resolve server hostname
Fix:
# Check agent logssudo journalctl -u breeze-agent -n 50
# Test connectivity from agentcurl -v https://breeze.yourdomain.com/health
# Verify enrollmentsudo cat /etc/breeze/config.jsonAgent shows “offline” despite running
Cause: WebSocket connection dropping or heartbeat not reaching API.
Fix:
- Check agent logs for reconnection messages
- Verify API WebSocket handling:
docker logs breeze-api | grep "ws" - Check if a firewall is terminating long-lived connections (increase WebSocket timeout)
Terminal not connecting
Common causes:
- Browser sends resize before server
onOpencompletes - WebSocket messages rejected by validation
Fix: Check API logs for WebSocket errors. The terminal uses term- prefixed command IDs that bypass database lookup.
Performance Issues
High API response times
Check:
# Prometheus metricscurl -H "Authorization: Bearer $TOKEN" \ http://localhost:9090/api/v1/query?query=histogram_quantile(0.95,rate(http_request_duration_seconds_bucket[5m]))
# Database slow queriesdocker compose -f docker/docker-compose.prod.yml exec postgres \ psql -U breeze -c "SELECT * FROM pg_stat_activity WHERE state = 'active';"Redis memory growing
Check:
docker compose -f docker/docker-compose.prod.yml exec redis redis-cli info memoryFix: Adjust REDIS_MAXMEMORY in .env.prod. Redis uses allkeys-lru eviction by default.
Disk space running low
# Check Docker volumesdocker system df
# Prune unused imagesdocker image prune -a
# Check backup retentionls -la /var/backups/breeze/Container Issues
Container won’t start
# Check container logsdocker compose -f docker/docker-compose.prod.yml logs <service-name>
# Check resource limitsdocker stats --no-stream
# Recreate containerdocker compose -f docker/docker-compose.prod.yml up -d --force-recreate <service-name>Health check failing
# Manual health checkdocker compose -f docker/docker-compose.prod.yml exec api \ wget --no-verbose --tries=1 --spider http://localhost:3001/health
# Check readinesscurl http://localhost:3001/health/readyGetting Help
- Check the GitHub Issues
- Join the community Discord
- Review API logs:
docker compose -f docker/docker-compose.prod.yml logs -f api