Troubleshooting
Agent issues
Agent shows as offline in the dashboard
Symptoms: Agent status is "Offline" or last-seen timestamp is stale.
Check agent logs:
docker compose --profile agent logs agent --tail=50
Common causes:
CONTROL_URLis wrong or unreachable from the agent hostAGENT_API_KEYis invalid or has been revoked- Network firewall blocking outbound HTTPS to the control plane
Verify connectivity from the agent host:
curl -v https://your-tiaki-domain.com/health
Agent fails to start: "failed to register with control plane"
The agent could not reach the control plane during initial registration.
- Verify
CONTROL_URLis set correctly and reachable - Check that the control plane is running:
docker compose ps - Check control plane logs:
docker compose logs server --tail=50 - Ensure there is no firewall blocking the connection
Agent shows containers but no updates are detected
Possible causes:
- Images are up to date — no newer version exists in the registry
- Registry rate limiting — Docker Hub has pull rate limits for unauthenticated requests. Set
REGISTRY_USERNAMEandREGISTRY_PASSWORD - Private registry not authenticated — see Private Registries
- Tag comparison — if using
latest, Tiaki compares digests. If the registry serves the same digest, no update is detected
Force a rescan: In the dashboard, go to the agent and click Trigger Scan.
Deployment fails: "failed to pull image"
Check agent logs for the specific pull error:
docker compose --profile agent logs agent | grep -i "pull\|error"
Common causes:
- Image tag no longer exists in the registry
- Registry authentication expired (especially ECR tokens, which expire after 12 hours)
- Disk space exhausted on the agent host:
df -h
Deployment fails: "compose file not found"
The agent cannot locate the docker-compose.yml file for the target service.
- Verify the compose file path is correctly mounted into the agent container
- Check that
composeFilein the container report matches the actual file path on the host
Control plane issues
Dashboard shows "Internal Server Error"
Check server logs:
docker compose logs server --tail=100
Common causes:
- Database connection failure — check
DATABASE_URLand that PostgreSQL is running - Missing or invalid
JWT_SECRET/ADMIN_TOKEN - Database migrations haven't run:
docker compose exec server pnpm db:migrate
Can't log in: "Invalid token"
- Verify
ADMIN_TOKENin your.envmatches exactly what you're typing - There are no leading/trailing spaces
- Restart the server after changing
ADMIN_TOKEN:docker compose restart server
Emails not being sent
- Verify all
SMTP_*variables are set correctly - Check server logs for SMTP errors:
docker compose logs server | grep -i smtp - Test SMTP connectivity from the server host:
openssl s_client -connect smtp.example.com:587 -starttls smtp - For Gmail, ensure you're using an App Password, not your regular password
Database issues
"relation does not exist" errors
Migrations haven't been applied. Run:
docker compose exec server pnpm db:migrate
Or for Docker Compose without exec:
docker compose run --rm server pnpm db:migrate
Database connection refused
- Ensure PostgreSQL container is running:
docker compose ps - Check
DATABASE_URLin your.env - Wait a few seconds after
docker compose up— the server may start before PostgreSQL is ready
Getting more help
- Check GitHub Issues for known problems
- Open a GitHub Discussion for questions
- Include relevant logs when reporting issues