Deployment docker-compose files to deploy an nwaku node
Go to file
NagyZoltanPeter a8a3a8a672
Adjusted run params, port expose to outer, 1.5GB db size retention, use of waku-test fleet
2024-03-11 16:26:01 +01:00
monitoring Add Postgres Dashboards using Prometheus source (#40) 2024-02-02 15:52:33 +01:00
postgres_cfg Initial release of nwaku-compose 2023-08-09 12:36:03 +02:00
.env.example chore:add comments for env example to make it more user friendly (#42) 2024-02-02 06:22:31 +05:30
.gitignore fix: include timestamp in curl command (#31) 2024-02-01 21:03:49 +01:00
ADVANCED.md feat: allow mounting custom certs dir 2024-01-05 10:34:20 +01:00
README.md Update README.md $(date +%s%N) -> '$(date +%s%N)' (#44) 2024-02-02 15:01:16 +01:00
docker-compose.yml Adjusted run params, port expose to outer, 1.5GB db size retention, use of waku-test fleet 2024-03-11 16:26:01 +01:00
msg_publisher.sh Separate branch prepared to support release candidate testing of the shelves 2024-02-09 14:04:50 +01:00
register_rln.sh Update for rc test v0.26.0-rc.0 2024-03-07 18:09:09 +01:00
run_node.sh Adjusted run params, port expose to outer, 1.5GB db size retention, use of waku-test fleet 2024-03-11 16:26:01 +01:00

README.md

nwaku-compose

Ready to use docker-compose to run your own nwaku full node:

  • nwaku node running relay and store protocols with RLN enabled.
  • Simple frontend to interact with your node and the network, to publish and receive messages.
  • Grafana dashboard for advanced users or node operators.
  • Requires docker-compose and git.

📝 0. Prerequisites

You need:

  • Ethereum Sepolia WebSocket endpoint. Get one free from Infura.
  • Ethereum Sepolia account with some balance <0.01 Eth. Get some here.
  • A password to protect your rln membership.

docker-compose will read the ./.env file from the filesystem. There is .env.example available for you as a template to use for providing the above values. The process when working with .env files is to copy the .env.example, store it as .env and edit the values there.

cp .env.example .env
${EDITOR} .env

Make sure to NOT place any secrets into .env.example, as they might be unintentionally published in the Git repository.

🔑 1. Register RLN membership

The RLN membership is your access key to The Waku Network. Its registration is done onchain, and allows your nwaku node to publish messages in a decentralized and private way, respecting some rate limits. Messages exceeding the rate limit won't be relayed by other peers.

This command will register your membership and store it in keystore/keystore.json. Note that if you just want to relay traffic (not publish), you don't need one.

./register_rln.sh

🖥️ 2. Start your node

Start all processes: nwaku node, database and grafana for metrics. Your RLN membership is loaded into nwaku under the hood.

docker-compose up -d

🏄🏼‍♂️ 3. Interact with your nwaku node

📬 4. Use the REST API

Your nwaku node exposes a REST API to interact with it.

# get nwaku version
curl http://127.0.0.1:8645/debug/v1/version
# get nwaku info
curl http://127.0.0.1:8645/debug/v1/info

Publish a message to a contentTopic. Everyone subscribed to it will receive it. Note that payload is base64 encoded.

curl -X POST "http://127.0.0.1:8645/relay/v1/auto/messages" \
 -H "content-type: application/json" \
 -d '{"payload":"'$(echo -n "Hello Waku Network - from Anonymous User" | base64)'","contentTopic":"/my-app/2/chatroom-1/proto","timestamp":`$(date +%s%N)`}'

Get messages sent to a contentTopic. Note that any store node in the network is used to reply.

curl -X GET "http://127.0.0.1:8645/store/v1/messages?contentTopics=%2Fmy-app%2F2%2Fchatroom-1%2Fproto&pageSize=50&ascending=true" \
 -H "accept: application/json"

For advanced documentation, refer to ADVANCED.md.