Skip to content

Running a node with dhtnode

Adrien Béraud edited this page Apr 20, 2019 · 39 revisions

dhtnode is a command-line utility included with OpenDHT to run, control and monitor an OpenDHT node.

Using the systemd service (GNU/Linux with systemd)

OpenDHT includes a systemd service for dhtnode starting from version 1.3.4. To use it, build OpenDHT using CMake with the argument -DOPENDHT_SYSTEMD=On.

See Build the library for details about how to build OpenDHT.

Once installed, start the dhtnode service using:

systemctl start dhtnode

Or enable dhtnode to run automatically on startup using:

systemctl enable dhtnode

Running dhtnode directly

dhtnode [-p local_port] [-b bootstrap_host:port] [-i] [-D] [-f] [-v [-l logfile|-L]] [-s|-d]

  • -b allows to specify a bootstrap node address
  • -p allows to specify the local UDP port to bind (optional). If not set, will use any available port. Note that the default OpenDHT port (to ideally use for public nodes) is 4222
  • -D enables the multicast automatic local peer discovery mechanism
  • -f allows to specify a file path to persist/load the node state (routing table and values)
  • -i enables generating a DHT "identity" with the node (RSA key pair, and certificate published on the DHT). Required to perform cryptographic operations (encrypt/sign values)
  • -v enables logging, to standard output by default
  • -L logs to syslog
  • -l logs to a specified file path
  • -s enables service mode (non-forking daemon)
  • -d enables daemon mode (forking daemon, -v logs to syslog by default)

for instance:

dhtnode -b bootstrap.jami.net:4222 will run a node and use bootstrap.jami.net port 4222 as a bootstrap node.

Commands

help

Show a command list with usage.

b {node_hostname:port}

Bootstrap/ping a DHT node. Similar to providing -b host:port as a command line parameter.

g {key}

Get values for {key} (the key is a 40 hexadecimal characters string).

l {key}

Listen for value changes at {key} (the key is a 40 hexadecimal characters string).

p {key} {string_value}

Put the text value {string_value} at {key}.

Clone this wiki locally