The server exposes a GET /health endpoint that returns 200 OK when the service is running. Check it from the server or any machine with network access:
curl https://<your-server>/health
For account-scoped stats (number of synced lists and registered devices), use the authenticated status endpoint:
curl -H "Authorization: Bearer <auth-token>" https://<your-server>/dailyroundup/status
The healthcheck.py script in roundup-server/ performs a more thorough post-deployment check: it polls GET /health until the service responds, validates APNs JWT signing, and verifies Trello API connectivity for all configured accounts. It is run automatically by the Deploy code to sync server GitHub Actions workflow after each deployment.
GitHub Actions sends a notification when the Deploy code to sync server or Upload to App Store Connect workflow fails. No automated alerting is configured for runtime server errors; monitor the service by watching logs (see Server Logs) or polling GET /health.
The auth token in Settings is invalid or missing. Tap Connect to Server… and enter your bootstrap token to create a new account. If you already have a permanent token, expand “I already have a token” and paste it directly.
403 responses or no trello_webhook_secret configured warnings.The Webhook Secret in the iOS app does not match the value Trello is signing requests with. Update the Webhook Secret in Settings → Trello Configuration to match, then save.
Check that all four APNS_* environment variables are set in .env and the server has been restarted. The server logs a DEBUG message on startup if any are missing. Confirm APNS_USE_SANDBOX matches the build type (set to 1 for development builds, omit for App Store/TestFlight).
iCloud Keychain syncs the auth token automatically, but may take a few minutes. If the token does not appear, use “I already have a token” in Settings to paste it from your previous device.
The server logs to stdout/stderr, captured by systemd’s journal. Logs are written in this format:
2026-02-24T14:32:01 INFO [dailyroundup.webhook] Recorded 'create' change for Trello card abc123
Fields: YYYY-MM-DDTHH:MM:SS LEVEL [logger.name] message
Reading logs requires SSH access to the server and the journalctl tool (included with systemd). Replace <username> with the system user running the service:
# Stream live logs
journalctl -u dailyroundup@<username> -f
# Last 100 lines
journalctl -u dailyroundup@<username> -n 100
# Logs from the past hour
journalctl -u dailyroundup@<username> --since "1 hour ago"
# Errors only
journalctl -u dailyroundup@<username> -p err
# Save today's logs to a file
journalctl -u dailyroundup@<username> --since today > ~/dailyroundup-$(date +%F).log