What this PR does
Each Homeio server now reports itself to homeio.app/api/stats a minute after startup and every 12 hours, so homeio.app/stats can show how many servers are running and on which versions.
A ping carries four fields and nothing else: a random instance ID, the Homeio version, the CPU architecture and the OS. It only runs in production, never in demo mode, and it can be turned off in Settings → Advanced → Usage Stats. Setting HOMEIO_TELEMETRY=false turns it off and locks the switch in the UI. HOMEIO_TELEMETRY_URL points it elsewhere for testing.
The README and .env.example still described the PostHog ping removed in 1.5.10; they now describe this one.
Migration 0012_telemetry adds telemetry_enabled (default true) and telemetry_instance_id to settings.
Type of change
- Bug fix
- New feature
- Refactor
- Docs / chore
Checklist
-
npm run testpasses (844 tests) -
npm run lintpasses - If UI change — screenshot or description of how to verify included below
How it was verified
- Script install (my server, 192.168.1.43):
update.shon this branch applied the migration, the first ping landed and homeio.app/stats counts it./api/healthand the auth redirect answerprivate, no-storewithcf-cache-status: BYPASSthroughhomeio.ahmedtabib.com. - Docker, upgrading from the published
ghcr.io/doctor-io/homeio:latestwith an existing user:drizzle-kit pushadded both columns and kept the user. The first ping went out from the container with the stored instance ID. Turning the switch off in Settings → Advanced stopped pings across a restart. WithHOMEIO_TELEMETRY=false, the API reportsdisabledByEnv, ignores a PUT turning it back on, and the switch shows as locked with an explanation.