Docker image for the Songbird & Coston1 node implementation found on github.
docker run -d \
-p 9650:9650 \
-e AUTOCONFIGURE_BOOTSTRAP=1 \
-v /tmp/conf:/app/conf \
flarefoundation/go-songbird:latest
Currently the default network is coston
but you can change that by providing a NETWORK_ID
environment variable (i.e. NETWORK_ID=songbird
).
The three points of interest for mounting are:
Name | Default location |
---|---|
Database | /app/db |
Logging | /app/logs |
Configuration | /app/conf |
All of these may be changed using the environment variables.
docker run -d \
-v /tmp/db:/app/db \
-v /tmp/conf:/app/conf \
-p 9650:9650 \
-e AUTOCONFIGURE_BOOTSTRAP=1 \
flarefoundation/go-songbird:latest
These are the environment variables you can edit and their default values:
Name | Default | Description |
---|---|---|
HTTP_HOST |
0.0.0.0 |
HTTP host binding address |
HTTP_PORT |
9650 |
The listening port for the HTTP host |
STAKING_PORT |
9651 |
The staking port for bootstrapping nodes |
PUBLIC_IP |
(empty) | Public facing IP |
DB_DIR |
/app/db |
The database directory location |
DB_TYPE |
leveldb |
The database type to be used |
BOOTSTRAP_IPS |
(empty) | A list of bootstrap server ips; ref --bootstrap-ips-string |
BOOTSTRAP_IDS |
(empty) | A list of bootstrap server ids; ref --bootstrap-ids-string |
CHAIN_CONFIG_DIR |
/app/conf |
Configuration folder where you need to mount your configuration files |
LOG_DIR |
/app/logs |
Logging directory |
LOG_LEVEL |
info |
Logging level set with AvalancheGo flag --log-level . |
NETWORK_ID |
coston |
Name of the network you want to connect to. Can be coston or songbird |
AUTOCONFIGURE_PUBLIC_IP |
0 |
Set to 1 to autoconfigure PUBLIC_IP , skipped if PUBLIC_IP is set |
AUTOCONFIGURE_BOOTSTRAP |
0 |
Set to 1 to autoconfigure BOOTSTRAP_IPS and BOOTSTRAP_IDS |
AUTOCONFIGURE_BOOTSTRAP_ENDPOINT |
https://coston.flare.network/ext/info |
Endpoint that the bootstrap auto-configuration works. Possible values: https://coston.flare.network/ext/info or https://songbird.flare.network/ext/info |
BOOTSTRAP_BEACON_CONNECTION_TIMEOUT |
1m |
Set the duration value (eg. 45s / 5m / 1h ) for --bootstrap-beacon-connection-timeout AvalancheGo flag. |
EXTRA_ARGUMENTS |
Extra arguments passed to flare binary |
The flare node can be configured by specifying your own configuration for the different chains but mainly the C (aka. Contract) chain. The specified configuration determines which capabilities the node has and it affects how the node has to be set up. We mainly distinguish between the three standard configurations described below.
The external API configuration is set to only respond to API calls so it offloads the other internal nodes. What makes it external is the relatively small set of functions that it exposes which are meant for public use. The node with this configuration exposes the HTTP port (default: 9650) and does not need any publicly open ports to work. The images tagged with the suffix api
have this configuration preloaded by default.
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"coreth-admin-api-dir": "",
"eth-apis": [
"public-eth",
"public-eth-filter",
"net",
"web3",
"internal-public-eth",
"internal-public-blockchain",
"internal-public-transaction-pool"
],
}
Similarly to the external API configuration, this one also responds to API calls but has additional calls exposed that help with longer running tasks, debugging, etc. It is therefore NOT meant for public use and it should NOT be publicly accessible. The node with this configuration exposes the HTTP port (default: 9650) and does not need any publicly open ports to work.
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"coreth-admin-api-dir": "",
"eth-apis": [
"public-eth",
"public-eth-filter",
"private-admin",
"public-debug",
"private-debug",
"net",
"debug-tracer",
"web3",
"internal-public-eth",
"internal-public-blockchain",
"internal-public-transaction-pool",
"internal-public-tx-pool",
"internal-public-debug",
"internal-private-debug",
"internal-public-account",
"internal-private-personal"
],
}
The bootstrap configuration is meant for nodes that will accept and help provision new nodes that want to connect to the network. They need to be publicly accessible and need the staking port (default: 9651) port-forwarded while the http port may remain inaccessible from the public but is needed to initialise the bootstrapping process of a new node.
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"coreth-admin-api-dir": "",
"eth-apis": [
"web3"
],
}
Here's a list of helpful links for additional information about configuration: