Skip to main content

Node configuration

A Demos node is configured almost entirely from a single .env file. The repo ships .env.example as the canonical template:
The defaults are tuned for the Track 1 (Docker Compose, recommended) flow. If you are running Track 2 (bare metal ./run, advanced), two settings differ — see Track-specific overrides below.
Old docs referenced RPC_FEE=5 and SERVER_PORT. Both are wrong. The current names are RPC_PORT for the listen port and RPC_FEE (default 1, paired with NETWORK_FEE=1 and BURN_FEE=1 for a per-tx total of 3).

Track-specific overrides

Everything else in .env is shared between the two tracks.

Consensus and governance

These values are the chain’s bootstrap defaults at genesis. Governance proposals can override them at runtime — see Network Governance.

Network and ports

If you set EXPOSED_URL to a public IP or DNS name, also open inbound TCP for RPC_PORT (53550), OMNI_PORT (53551), and 7047 (TLSNotary, if enabled) on your firewall before peers start trying to reach you. Do not expose 5432 / 5332 (Postgres), 9090 (node metrics), 9091 (Prometheus), or 3000 (Grafana) to the public internet.

Database (PostgreSQL)

See Browsing the Postgres DB via psql for connection commands per track.

Identity and peers

See Backing up and restoring a node.demos_identity is the single most important file to back up.

TLSNotary

TLSNotary provides cryptographic attestation of HTTPS responses. Under Track 1, keep TLSNOTARY_ENABLED aligned with the tlsnotary profile in COMPOSE_PROFILES — enabling one without the other produces noisy warnings.

Monitoring

Logging and runtime

Docker Compose only

These variables are consumed by docker-compose.yml and not by the node binary itself, so they only matter on Track 1.

Optional external API keys

.env.example ships with these commented out. Uncomment only the ones you need; each unlocks a specific feature:

Generating your identity

You do not configure the node’s keypair manually. On first boot the node:
  1. Generates a fresh ed25519 keypair.
  2. Writes the private key to IDENTITY_FILE (default .demos_identity).
  3. Writes the public key to a file named publickey_<timestamp> in the same directory and prints it to the console.
For the exact first-boot procedure on each track, see Running the node.

Configuring the peerlist

demos_peerlist.json lists known peers as { "<publicKey>": "<url>" }. Copy the example and edit it:
For solo / local dev, the file can stay empty (or contain only your own entry). To join an existing network, seed it with at least one known bootstrap peer — see Joining the testnet using a custom genesis for the full procedure.