# How to onboard a new node **⚠️ Experimental:** warning, this file might be out of date! It is important that both `public key` and `address` are correct as they are immutable and cannot be changed in the future. ## Step 1) Get All Keys An easy way to generate a new private key is to use our CLI: ```bash ./dev/cli generate-key | jq { "level": "INFO", "time": "2024-10-15T13:21:14.036-0400", "message": "generated private key", "private-key": "0x7d3cd4989b92c593db9a4b3ac1c2a5d542efad058b2a83e26c3467392b29c6f9", "public-key": "0x03da53968d81f4eb3c9dd8b96617575767ec0cccbd28103b2cfd7f1511bb282d30", "address": "0x9419db765e6b469edc028ffa72ba2944f2bad169" } ``` If you already have a private key, you can extract the relevant public details via: ```bash ./dev/cli get-pub-key --private-key 0xa9b48d687f450ea99a5faaae1be096ddb49487cb28393d3906d7359ede6ea460 | jq { "level": "INFO", "time": "2024-10-15T13:21:51.276-0400", "message": "parsed private key", "pub-key": "0x027a64295b98e48682cb77be1b990d4ecf8f1a86badf051df0af123e6fe3790e3f", "address": "0x9419db765e6b469edc028ffa72ba2944f2bad169" } ``` ## Step 2) Share `pub-key` and `address` TBD. Before official testnet launch, only the members of @ephemerahq/backend can register nodes. ## Step 3) Register Node with smart contract ```shell export XMTPD_CONTRACTS_RPC_URL="https://rpc-testnet-staging-88dqtxdinc.t.conduit.xyz/" export XMTPD_CONTRACTS_CHAIN_ID=34498 export XMTPD_CONTRACTS_NODES_ADDRESS=<depends> export PRIVATE_KEY=<secret> dev/cli register-node \ --http-address=<node DNS> \ --node-owner-address=<node address> \ --admin-private-key=$PRIVATE_KEY \ --node-signing-key-pub=<node pub-key> ``` ## Step 4) Start the node This step might differ for every operator. A good starting point is our [Deployment Guide](deploy.md)