Skip to content
HomeKnowledge BaseStatisticsChangelog GitHub Discord Email
operations / Telemetry

No results for ""

Telemetry

Overview

Demyx can send a daily active-install ping from the host stack. Telemetry is controlled by the host DEMYX_TELEMETRY variable and runs during the daily cron when enabled.

bash
demyx host edit
bash
DEMYX_TELEMETRY=true

Set it to false to disable daily telemetry:

bash
DEMYX_TELEMETRY=false

Then restart the host stack:

bash
demyx host restart

Install Opt-Out

The installer sends a one-time active install ping by default. To install without that ping and start with telemetry disabled:

bash
wget https://demyx.sh/install
bash install --no-ping

Signed Identity

Demyx 1.11.0 uses a trust-on-first-use identity for telemetry. During daily cron, Demyx creates /demyx/.telemetry when missing and stores:

FilePurpose
/demyx/.telemetry/private_key.pemLocal Ed25519 private key
/demyx/.telemetry/public_key.pemPublic key registered with demyx.sh
/demyx/.telemetry/identity.jsonRegistered install_id, key_id, and timestamp

When an identity is not registered yet, Demyx registers the public key with:

text
POST /wp-json/demyx/v1/telemetry/register

After registration, daily telemetry is sent as a signed REST request to:

text
POST /wp-json/demyx/v1/telemetry

Signed requests include install identity headers such as X-Demyx-Install-Id, X-Demyx-Key-Id, X-Demyx-Request-Id, and X-Demyx-Signature-Alg. The REST endpoint verifies the Ed25519 signature before storing telemetry. The signed body also includes the public key so demyx.sh can recreate a missing identity row only after the signature verifies against that key.

Fallback Behavior

If signed telemetry cannot run, Demyx falls back to the legacy active endpoint when compatibility fallback is enabled. Public pages and the host stack should not fail because telemetry is unavailable.

The compatibility endpoint is:

text
GET /?action=active&version=<version>&token=<legacy-token>

Legacy pings are stored as telemetry events with ingest_path set to legacy. They do not create registered server identities because they do not submit a public key.

Servers

The Servers admin page primarily shows identities created through /wp-json/demyx/v1/telemetry/register. REST telemetry events that include an install_id but do not have a matching registered identity are shown as REST so active installs are visible while remaining distinct from fully registered identities.

  • demyx cron — daily cron runs telemetry when enabled
  • demyx host edit — edit DEMYX_TELEMETRY
  • Environment Variables — host variable reference