I’m running storagenodes on NAS (linux) in Docker.
After starting a few nodes in different months, I see that the parameters in config.yaml had changed over time with newer releases. Some new appeared, some disappeared, some changed the default values. But the config file dosen’t change with stortagenode update. I imagine that storagenode uses the default values for new parameters, even if they are not present in config file. But what if someone needs/wants to change something, and has and older version that is not displaying that parameters/values? I think it’s best that storagenode update should bring to date the config file as well, keeping the user modifications. I personaly stopped all nodes and replaced the old config files with the one from the newest node, just to have everything in line, but this manual intervention could be avoided.
What this parameters mean? When and why they should be modified?
#Enable additional details about the satellite connections via the HTTP healthcheck.
# Provide health endpoint (including suspension/audit failures) on main public port, but HTTP protocol.
# private address to listen on
How to modify the list of trusted satellites if I only want to whitelist a few? How can I specify the ones I want? I see only this line:
# list of trust sources
# storage2.trust.sources: https://www.storj.io/dcs-satellites
and this one is “unused”:
# a comma-separated list of approved satellite node urls (unused)
# storage.whitelisted-satellites: ""
This port should be configurable in docker run command as well. Or if it can, how is the correct imput and where to put it? Whould be easy for multinodes or special configs to see it in forums and explanations, instead of the reference to config file. I myself discovered it after 2 years, because I did’t understood the pointers others gaved me about the port in config.yaml.
# public address to listen on
These two configures how your node would respond to http requests on its port (if you disable healthcheck, it will not respond on http requests, only on DRPC as before).
This is an address and port where storeagenode will listen for requests from CLI. If you have several binary nodes or uses --network host in your docker run command, you need to change it to unique port and use this port when you run some commands like storagenode dashboard or storagenode graceful-exit. For docker version without --network host you usually wouldn’t change this parameter.
There are several ways.
You may prepare an own list of trusted satellites and provide this file in the storage2.trust.sources parameter (like option in the config.yaml or as argument in your docker run command after the image name).
You may list them in the parameter storage.whitelisted-satellites (as an option or as an argument).
You may list only blacklisted satellites in the parameter storage2.trust.exclusions
As usual - either in the config.yaml or as an argument in your docker run command after the image name, i.e.
However, you do not need to change it unless you used --network host parameter before the image name in your docker run command. This is a listening port inside the container, you usually provide a mapping for it with -p 28967:28999 option (here is an example if you changed the server.address parameter to listen on :28999).
All parameters you can get with storagenode setup --help and runtime parameters with storagenode run --help, i.e.
In my case, I don’t use network host, but for some unexplained reason, the 28967 din’t worked for both nodes in one machine, so I used 28968 all the way, like this:
router portWAN:portNAS > docker portNAS:portDKR
-p 28968:28968/tcp \
-p 28968:28968/udp \
-p 14003:14002 \
-e ADDRESS="wanIP:28968" \
# public address to listen on
Maybe I changed this port in config, from 28967 to 28968 at setup, and I forgot, and all the tryes using 28967 failed after that… Now that I know about this, I will try again with docker port 28967 for both nodes.
The default port will not work on the same machine for two nodes only in one condition - both nodes in the same internal network. This could be because your default docker network is configured to share address space between containers, so it’s basically the same as having --network host.
I meant the network configuration for docker. It uses the default virtual network, but usually it’s not shared between containers, unless you especially configure them to be connected with special options like changing a network with --network option or with deprecated --link option.
So seems your default configuration forces all containers to be connected (they uses the same address and network space), and thus you cannot use the same internal listening port.