Ready to use docker-compose to run your own nwaku full node:
docker-compose
and git
.š 0. Prerequisites
You need:
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
ā ļø The node might take ~5' the very first time it runs because it needs to build locally the RLN community membership tree.
šš¼āāļø 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"}'
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.
We regularly announce new available versions in our Discord server.
If your last running version is v0.29
or older, you will need to delete both the keystore
and rln_tree
folders, and register your membership again before using the new version by running the following commands:
docker-compose down
sudo rm -r keystore rln_tree
git pull origin master
./register_rln.sh
docker-compose up -d
For nodes running on v0.30
or newer, updating the node is as simple as running the following:
docker-compose down
git pull origin master
docker-compose up -d