status-go/config/README.md

108 lines
3.0 KiB
Markdown

# Introduction
This document describes the available options in the JSON config for `status-go`.
The structure of the JSON config is defined in the [`params/config.go`](/params/config.go) file, which also contains detailed comments on meaning of each option. The `NodeConfig` struct defines the general configuration keys at the __root__ of the JSON file.
If the descriptions of any options are too vague feel free to [open an issue](https://github.com/status-im/status-go/issues/new).
Example config files can be viewed in the [`config/cli`](/config/cli) folder.
# Important Sections
The JSON config is separated into several sections. The most important ones are listed below.
## `NodeConfig`
The root of the JSON configuration.
An example of most important settings would include:
```json
{
"NetworkID": 1,
"DataDir": "/tmp/status-go-data",
"NodeKey": "123qwe123qwe123qwe123",
"Rendezvous": false,
"NoDiscovery": false,
"ListenAddr": "0.0.0.0:30303",
"RegisterTopics": ["whispermail"]
}
```
If you'd want to enable JSON RPC port you'd need:
```json
{
"HTTPEnabled": true,
"HTTPHost": "0.0.0.0",
"HTTPPort": 8545,
"APIModules": "eth,net,web3,admin"
}
```
In order to adjust logging settings you'd need:
```json
{
"LogFile": "/var/log/status-go.log",
"LogLevel": "INFO",
"LogMaxSize": 200,
"LogMaxBackups": 5,
"LogCompressRotated": true
}
```
Valid `LogLevel` settings are: `ERROR`, `WARN`, `INFO`, `DEBUG`, `TRACE`
## `WakuConfig`
If you want your node to relay Waku(modified Whisper) protocol messages you'll want to include this:
```json
{
"WakuConfig": {
"Enabled": true,
"EnableMailServer": true,
"DataDir": "/tmp/status-go-data/waku",
"MailServerPassword": "status-offline-inbox",
"MailServerDataRetention": 30
}
}
```
The `MailServerPassword` is used for symmetric encryption of history requests.
The `MailServerDataRetention` defines number of days for which to keep messages.
By default it will use `leveldb` embedded database. To use postgres instead you need to
add this to your config:
```json
{
"DatabaseConfig": {
"PGConfig": {
"Enabled": true,
"URI": "postgres://user:password@host:port?options"
}
}
}
```
__NOTE:__ The default password used by Status App and [our mailservers](https://fleets.status.im/) is `status-offline-inbox`.
## `ClusterConfig`
This config manages what peers and bootstrap nodes your `status-go` instance connects when it starts.
```json
{
"ClusterConfig": {
"Enabled": true,
"Fleet": "eth.prod",
"BootNodes": [
"enode://345ert345ert@23.45.67.89:30404"
],
"TrustedMailServers": [
"enode://qwe123qwe123@98.76.54.32:30504"
],
"StaticNodes": [
"enode://123qwe123qwe@12.34.56.78:30305"
]
}
}
```
`BootNodes` help the `status-go` instance find peers. They are more important to have than `StaticNodes` or `TrustedMailServers`, which are just statically added peers on start.