2.6 KiB
Description
A poorly named "Mailserver" is essentially a Whisper node that stores message history in either a LevelDB or PostgreSQL database.
A Status app user can run their own Mailserver for faster message retrieval or additional security.
Service Ports
30303
TCP/UDP - DevP2P wire protocol port. Must ALWAYS be public.8545
TCP - JSON RPC management port. Must NEVER be public.9090
TCP - Prometheus metrics port. Should not be public.
Setup methods
This document describes the two alternative ways to start a Status Mailserver:
- Docker Compose - More self-contained and portable
- Systemd Service - More local and configurable
Docker Compose
The simplest way is to just use:
make run-mailserver-docker
This will generate the necessary config, compose and then start the container.
For more details read the README.
Systemd Service
The other way is to run the mailserver
under systemd
:
make run-mailserver-systemd
This will generate the necessary config, define and then start a user service.
Use sudo
if you want it to be a system service.
For more details read the README.
Service Healthcheck
There's two simple ways to verify your Mailserver is up and running.
Query Metrics
By making an HTTP request to the metrics port(9090
by default) you can check if you Mailserver is receiving envelopes:
> curl -sS localhost:9090/metrics | grep '^waku_envelopes_received_total'
waku_envelopes_received_total 123
Or numbers and types of peers connected:
> curl -sS localhost:9090/metrics | grep '^p2p_peers_count'
p2p_peers_count{platform="linux-amd64",type="Statusd",version="v0.79.0"} 3
JSON RPC Calls
The JSON RPC port (8545
by default) allows you to manage your node.
You can list connected peers by doing:
> export RPC_HOST=localhost RPC_PORT=8545
> _assets/scripts/rpc.sh admin_peers | jq -r '.result[].network.remoteAddress'
34.68.132.118:30305
134.209.136.123:30305
178.128.141.249:443
Where rpc.sh
is simply a thin wrapper around curl
.
You can use it to easily add peers too:
> _assets/scripts/rpc.sh admin_addPeer enode://7aa648d6e855950b2e3d3bf220c496e0cae4adfddef3e1e6062e6b177aec93bc6cdcf1282cb40d1656932ebfdd565729da440368d7c4da7dbd4d004b1ac02bf8@178.128.142.26:443
{"jsonrpc": "2.0", "id": 1, "result": true}