Skip to main content

rawops.dev

RawMon Docs

Troubleshooting & FAQ

Solutions to common RawMon issues: notifications, background checks, Kuma connections, certificate warnings, DNS, and more.

Last updated: 2026-04-24

Notifications Not Arriving

Check push permissions: Go to your device Settings > RawMon and verify that notifications are enabled. On iOS, ensure "Allow Notifications" is on and the alert style is set to Banners or Alerts.

Verify push token: In RawMon, go to Settings > Push Notifications. Your device ID and push token should be displayed. If the push token is missing, try force-closing and reopening the app.

Test the relay: Use the "Test Notification" button in Settings > Push Notifications. If the test arrives, your relay is working and the issue is with the webhook source configuration.

Check webhook URL: Verify the webhook URL in your monitoring tool matches the URL shown in the app, including the correct source parameter and deviceId.

Background Checks Not Running

iOS

From v1.1.2 onwards RawMon uses three cooperating background layers. The main one — silent push wake — fires every 60 minutes per device (v1.2.0+; was 30 minutes earlier). The two legacy BGTaskScheduler layers (BGProcessingTask and BGAppRefreshTask) still run on top of that, most reliably overnight on a charger. All three layers are gated by Apple's DAS (Duet Activity Scheduler) Energy Budget — when the budget is exhausted, iOS drops wake pushes and refuses to schedule BGProcessingTask until the budget recovers.

If you see no background activity at all, check in order:

  1. Push notifications enabled — iOS Settings > RawMon > Notifications > Allow Notifications. Without this, the silent-push layer cannot reach the app.
  2. Background App Refresh enabled — iOS Settings > General > Background App Refresh (global switch + RawMon toggle both on).
  3. Low Power Mode off — iOS aggressively throttles background work in Low Power Mode.
  4. Device registered with the relay — open RawMon > Settings > Push Notifications and confirm your device token is displayed. If missing, force-quit and relaunch once.
  5. DAS budget exhausted (v1.2.0 finding) — earlier RawMon builds had a background pattern that drained the iOS DAS Energy Budget over time. Symptoms: BG Task Log empty for many hours, no success rows appearing even overnight on charger. In-place app updates do NOT reset the DAS history — only a full uninstall + reinstall does. If you've upgraded RawMon and BG activity stopped: export your Pro Backup (Settings > Backup > Export), delete RawMon, reinstall from the App Store, then restore the backup. Background should resume within minutes.
  6. Off-charger expectation resetBGProcessingTask strictly requires the device to be plugged in (Apple pluggedIn == 0 hard policy). Off-charger, you're relying solely on silent-push wakes, which are subject to iOS DAS scoring and Apple's 2–3 push/h APNs budget. For real-time off-charger alerts, connect a SaaS provider (Uptime Kuma, UptimeRobot, Better Stack, HetrixTools, etc.) — state-change webhooks from providers arrive via mutable-content push, which is not subject to the silent-push budget and is delivered reliably.

Open Settings > Background Checks > View Log to see the last 20+ executions. Look for the post-update-detected row (logged once per build transition) to confirm the new build is running. coalesced-onto-sibling rows indicate the in-flight lock is doing its job. tail-skipped-alerts or tail-skipped-activity-state rows mean a silent-push handler exceeded its 24/30-second tail budget — rare; the skipped sync catches up on the next wake.

Android

Android battery optimization can kill the foreground service. To prevent this:

  1. Go to device Settings > Apps > RawMon > Battery.
  2. Select Unrestricted (or "Don't optimize").
  3. Ensure the RawMon notification channel is not silenced.

Some manufacturers (Xiaomi, Huawei, Samsung) have aggressive battery management. You may need to add RawMon to the device's auto-start whitelist.

Uptime Kuma Connection Drops

WebSocket stability: The Socket.IO connection may drop due to network changes, server restarts, or proxy timeouts. RawMon automatically reconnects with exponential backoff.

Reverse proxy: If Kuma is behind Nginx or Caddy, ensure WebSocket upgrade is enabled:

location / {
    proxy_pass http://localhost:3001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Heartbeat backfill: After reconnection, RawMon requests recent heartbeats to fill any gaps. If heartbeats appear missing, wait a few seconds for the backfill to complete.

Certificate Warnings

Multi-threshold behavior: Certificate monitors support multiple warning thresholds (e.g., 30, 14, 7 days). The lowest threshold triggers DOWN status; higher thresholds show WARNING (orange) status.

Ignored certificates: If you enable "Ignore TLS errors" on an HTTP monitor, certificate checks are skipped for that monitor. Use a separate Certificate-type monitor if you want both HTTP checking and cert monitoring.

DNS Uses Cloudflare DoH Only

All DNS checks route through Cloudflare's DNS-over-HTTPS resolver (1.1.1.1). You cannot configure a custom DNS resolver. This means:

  • Results may differ from your local DNS resolver.
  • Internal/split-horizon DNS names will not resolve.
  • DNS propagation may appear faster or slower than your ISP's resolver.

For internal DNS monitoring, use an HTTP monitor that hits the internal hostname directly.

TLS "Ignore Errors" Limitations

The "Ignore TLS Errors" toggle skips certificate validation for HTTP checks only. It does not affect:

  • Certificate-type monitors (always validate the full chain)
  • TCP monitors (no TLS involved)
  • DNS monitors (uses DoH which always validates Cloudflare's cert)

Use this toggle for self-signed certificates in development or staging environments.

App Data and Storage

All data is local. RawMon does not upload your monitoring data, credentials, or check results to any cloud service. The only external communication is:

  • Push relay: device ID + push token sent to Cloudflare Worker
  • SaaS API calls: your API keys sent to the respective provider endpoints
  • Expo Push: notification delivery via Expo's push service

Database location: SQLite database stored in the app's sandboxed storage. Uninstalling the app deletes all data — export a backup first.