-
Notifications
You must be signed in to change notification settings - Fork 58
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: add docker and quickstart guides
- Loading branch information
Showing
4 changed files
with
158 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
# Quickstart: running nwaku in a Docker container | ||
|
||
This guide explains how to run a nwaku node in a Docker container. | ||
|
||
## Prerequisites | ||
|
||
Make sure you have Docker installed. | ||
Installation instructions for different platforms can be found in the [Docker docs](https://docs.docker.com/engine/install/). | ||
|
||
For example, to use Docker's convenience script for installation: | ||
|
||
```bash | ||
curl -fsSL https://get.docker.com -o get-docker.sh | ||
sudo sh get-docker.sh | ||
``` | ||
|
||
## Step 1: Get Docker image | ||
|
||
Nwaku Docker images are published to the Docker Hub public registry under [`statusteam/nim-waku`](https://hub.docker.com/r/statusteam/nim-waku). | ||
For specific releases the published images are tagged with the release version, e.g. [`statusteam/nim-waku:v0.12.0`](https://hub.docker.com/layers/statusteam/nim-waku/v0.12.0/images/sha256-7b5bcd3f8084218b411e627ab7864ce999d7b49e37ad1d0b1089b18cbf4b79d4?context=explore). | ||
Images are also published for each commit to the `master` branch in the [nwaku repo](https://github.com/status-im/nwaku/commits/master) | ||
and tagged with the corresponding commit hash. | ||
See [`statusteam/nim-waku`](https://hub.docker.com/r/statusteam/nim-waku/tags) on Docker Hub for a full list of available tags. | ||
|
||
To pull the image of your choice, use | ||
|
||
```bash | ||
docker pull statusteam/nim-waku:v0.12.0 # or, whichever tag you prefer in the format statusteam/nim-waku:[tag] | ||
``` | ||
|
||
You can also build the Docker image locally using | ||
|
||
```bash | ||
git clone --recurse-submodules https://github.com/status-im/nwaku | ||
cd nwaku | ||
docker build -t statusteam/nim-waku:latest . | ||
``` | ||
|
||
## Step 2: Run | ||
|
||
To run nwaku in a new Docker container, | ||
use the following command: | ||
|
||
```bash | ||
docker run [OPTIONS] IMAGE [ARG...] | ||
``` | ||
|
||
where `OPTIONS` are your selected Docker options, | ||
`IMAGE` the image and tag you pulled from the registry or built in Step 1 | ||
and `ARG...` the list of nwaku arguments for your [chosen nwaku configuration](./how-to/configure.md). | ||
|
||
For Docker options we recommend explicit port mappings (`-p`) at least | ||
for your exposed libp2p listening ports | ||
and any discovery ports (e.g. the Waku discv5 port) that must be reachable from outside the host. | ||
|
||
As an example, consider the following command to run nwaku in a Docker container with the most typical configuration: | ||
|
||
```bash | ||
docker run -i -t -p 60000:60000 -p 9000:9000/udp statusteam/nim-waku:v0.12.0 \ | ||
--dns-discovery:true \ | ||
--dns-discovery-url:enrtree://AOGECG2SPND25EEFMAJ5WF3KSGJNSGV356DSTL2YVLLZWIV6SAYBM@prod.waku.nodes.status.im \ | ||
--discv5-discovery \ | ||
--nat:extip:[yourpublicip] # or, if you are behind a nat: --nat=any | ||
``` | ||
|
||
This runs nwaku in a new container from the `statusteam/nim-waku:v0.12.0` image, | ||
connects to `wakuv2.prod` as bootstrap fleet and | ||
enables [Waku Discovery v5](https://rfc.vac.dev/spec/33/) for ambient peer discovery, | ||
while mapping the default libp2p listening port (`60000`) | ||
and default discv5 UDP port (`9000`) to the host. | ||
|
||
> **Tip:** The `docker run` command will pull the specified image from Docker Hub if it's not yet available locally, | ||
so it's possible to skip Step 1 and pull the image from your configured registry automatically when running. | ||
|
||
If you've used the `-i` and `-t` Docker options when running the new container, | ||
the `run` command would have allocated an interactive terminal | ||
where you'll see the `stdout` logs from the running nwaku process. | ||
To detach gracefully from the running container, | ||
use `Ctrl-P` followed by `Ctrl-Q`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Overview: running a nwaku node | ||
|
||
This guide provides on overview for newcomers | ||
on how to build and run a nwaku node | ||
for the most common use cases. | ||
For a more advanced configuration see our [configuration guides](./how-to/configure.md) | ||
|
||
To set up a nwaku node on a DigitalOcean droplet, | ||
refer to our [quickstart guide for droplets](./droplet-quickstart.md). | ||
If you prefer running nwaku in Docker container, | ||
see our [Docker guide](./docker-quickstart.md). | ||
|
||
## 1. Build | ||
|
||
[Build the nwaku node](./how-to/build.md) | ||
or download a precompiled binary from our [releases page](https://github.com/status-im/nwaku/releases). | ||
Docker images are published to [statusteam/nim-waku](https://hub.docker.com/r/statusteam/nim-waku/tags) on Docker Hub. | ||
See our [Docker quickstart guide](./docker-quickstart.md) to run nwaku in a Docker container. | ||
|
||
## 2. Run | ||
|
||
[Run the nwaku node](./how-to/run.md) using a default or common configuration | ||
or [configure](./how-to/configure.md) the node for more advanced use cases. | ||
|
||
[Connect](./how-to/connect.md) the nwaku node to other peers to start communicating. | ||
|
||
## 3. Interact | ||
|
||
A running nwaku node can be interacted with using the [Waku v2 JSON RPC API](https://rfc.vac.dev/spec/16/). | ||
|
||
> **Note:** Private and Admin API functionality are disabled by default. | ||
To configure a nwaku node with these enabled, | ||
use the `--rpc-admin:true` and `--rpc-private:true` CLI options. | ||
|
||
```bash | ||
curl -d '{"jsonrpc":"2.0","method":"get_waku_v2_debug_v1_info","params":[],"id":1}' -H 'Content-Type: application/json' localhost:8546 -s | jq | ||
``` | ||
|
||
|
||
Or using the [Waku v2 HTTP REST API](../api/v2/rest-api.md): | ||
|
||
> **Note:** REST API functionality is in ALPHA and therefore it is disabled by default. To configure a nwaku node with this enabled, use the `--rest:true` CLI option. | ||
|
||
```bash | ||
curl http://localhost:8546/debug/v1/info -s | jq | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,46 @@ | ||
# Quickstart: running a nwaku node | ||
|
||
This guide explains how to build and run a nwaku node | ||
for the most common use cases. | ||
For a more advanced configuration see our [configuration guides](./how-to/configure.md) | ||
This guide helps you run a nwaku node with typical configuration. | ||
It connects your node to the `wakuv2.prod` fleet for bootstrapping | ||
and enables discovery v5 for continuous peer discovery. | ||
Only [`relay`](https://rfc.vac.dev/spec/11/) protocol is enabled. | ||
For a more comprehensive overview, | ||
see our [step-by-step guide](./overview.md). | ||
|
||
To quickly set up a nwaku node on DigitalOcean, refer to this [guide](./droplet-quickstart.md) | ||
## Option 1: run nwaku binary | ||
|
||
## 1. Build | ||
*Prerequisites are the usual developer tools, | ||
such as a C compiler, Make, Bash and Git.* | ||
|
||
[Build the nwaku node](./how-to/build.md) | ||
or download a precompiled binary from our [releases page](https://github.com/status-im/nwaku/releases). | ||
Docker images are published to [statusteam/nim-waku](https://hub.docker.com/r/statusteam/nim-waku/tags) on DockerHub. | ||
|
||
<!-- TODO: more advanced explanation on finding and using docker images --> | ||
|
||
## 2. Run | ||
|
||
[Run the nwaku node](./how-to/run.md) using a default or common configuration | ||
or [configure](./how-to/configure.md) the node for more advanced use cases. | ||
|
||
[Connect](./how-to/connect.md) the nwaku node to other peers to start communicating. | ||
|
||
## 3. Interact | ||
```bash | ||
git clone --recurse-submodules https://github.com/status-im/nwaku | ||
cd nwaku | ||
make wakunode2 | ||
./build/wakunode2 \ | ||
--dns-discovery:true \ | ||
--dns-discovery-url:enrtree://AOGECG2SPND25EEFMAJ5WF3KSGJNSGV356DSTL2YVLLZWIV6SAYBM@prod.waku.nodes.status.im \ | ||
--discv5-discovery \ | ||
--nat=extip:[yourpublicip] # or, if you are behind a nat: --nat=any | ||
``` | ||
|
||
A running nwaku node can be interacted with using the [Waku v2 JSON RPC API](https://rfc.vac.dev/spec/16/). | ||
## Option 2: run nwaku in a Docker container | ||
|
||
> **Note:** Private and Admin API functionality are disabled by default. | ||
To configure a nwaku node with these enabled, | ||
use the `--rpc-admin:true` and `--rpc-private:true` CLI options. | ||
*Prerequisite is a [Docker installation](./docker-quickstart.md#prerequisites).* | ||
|
||
```bash | ||
curl -d '{"jsonrpc":"2.0","method":"get_waku_v2_debug_v1_info","params":[],"id":1}' -H 'Content-Type: application/json' localhost:8546 -s | jq | ||
docker run -i -t -p 60000:60000 -p 9000:9000/udp \ | ||
statusteam/nim-waku:v0.12.0 \ # or, the image:tag of your choice | ||
--dns-discovery:true \ | ||
--dns-discovery-url:enrtree://AOGECG2SPND25EEFMAJ5WF3KSGJNSGV356DSTL2YVLLZWIV6SAYBM@prod.waku.nodes.status.im \ | ||
--discv5-discovery \ | ||
--nat:extip:[yourpublicip] # or, if you are behind a nat: --nat=any | ||
``` | ||
|
||
## Tips and tricks | ||
|
||
Or using the [Waku v2 HTTP REST API](../api/v2/rest-api.md): | ||
|
||
> **Note:** REST API functionality is in ALPHA and therefore it is disabled by default. To configure a nwaku node with this enabled, use the `--rest:true` CLI option. | ||
To find the public IP of your host, | ||
you can use | ||
|
||
```bash | ||
curl http://localhost:8546/debug/v1/info -s | jq | ||
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}' | ||
``` |