Understanding of options in the Config.yaml

Hi everyone,
we recently started some nodes with storj and there are several bugs related with the config.yaml file over windows server 2016, would be great to see them solved:

  1. server.address: :28967 with description public address to listen on
    -> if you try to place a ip before the dots like xxx.xxx.xxx.xxx:28967 node service will fail to start
    -> anyway there is another parameter storing the ip <contact.external-address>, so this is kind of duplicated parameter, or wrongly named, leading to confusion
    -> if it is simply a internal port as pointed by donald, the description confusing

  2. console.address: 127.0.0.1:14001
    -> if you change the default port, it is ignored by the shortcut button placed in Windows quick access menu, so every time you want to see Dashboard, you will be leaded to the default port <140001>, so you have to change it in your browser every time to the custom port

Thank you

server.address specifies the port Storj runs on inside the container.

You should not need to touch anything in the config.yaml, especially if you don’t completely understand all their meanings. Everything user configurable should be done in the docker command or the Windows GUI.

I really appreciate your advice, and thank you for your time, but it is not the point here. The config file is there to be used (with caution) but it is supposed to be useful. The point of me understanding it is completely off topic, it is just about naming the parameters more accurate way. I am sure you see a difference between <server.address> and for ex.: <server.port>, and besides, why u need to specify twice the port? (contact.external-address: xx.xx.xx.xx:28967)
And why the dots : if it is supposed to be only for a port.

Of course you will answer me why, just pointing that <server.address> it is not accurate, and dashboard/console port has a bug, so when i replicated the first node, lost some minutes, that could be avoided.

Because they are 2 different things. The first is the port the server runs, the second is the port your router accepts packets on. In between there is a portforwarding from the external IP to the storagenode. They can be different if you configure it correctly.

I have 4 storagenodes on the same server. All run on the same default port inside the container, but are of course reachable on different ports from the outside.

And understanding the config is of course on-topic. The parameters are named correctly, you just don’t understand it. And instead of thanking me for pointing that out and telling you the difference, you go on and say “everyone is at fault but me”.

Maybe you should tell us what do you want to achieve, there might be a better way to do it. You mentioned “replication”. If you want to move your storagenode to a different server, you only need to move the data and identity, change the path to it and change the portforwarding in your router. No other change in your config is required.

Sorry, I must be missing something, or I am simply not being too smart today.

Everything working fine, is just that in my humble opinion the <server.address> and specially with the dots : is leading me to think that there should be a ip, but in reality is simply a port. And as donald seems to be pointing, is the internal local network port. Is a guess since in the line above it says: public address to listen on and public means external, and then i go to the other parameter contact.external-address, and the line above says the public address of the node, useful for nodes behind NAT and it says public again. So, just to make it clear, i am only asking to make it more clear in the next update, since these are all very easy concepts: ports, forwarding, internal, external, firewall, hamburgers and mosquitos, but in the config file is confusing, since description mentions public in both of them.

That little confusion pushed me to make a small mistake, that was understood, and corrected some minutes later, and was just hoping to avoid the confusion for others. If the name server.address is good for a internal port, fine with me. And if the description saying public address to listen on gives you a hint about internal port than i must be so terribly wrong.

Hello @fasttrackhost,
Welcome to the forum!

The config.yaml have a format, known as YAML.

For short - every option is divided from the value by colon : and space after colon.
Questioned parameter server.address: should contain specified local address and port, which your node will listen on that PC or inside the container.

Regarding missed IP in the option and having only port, i.e :28967, this is generic notation for 0.0.0.0:28967. That’s mean, that your node can bind to all interfaces on your PC or inside the container.

You can specify here an IP and port, for example 192.168.1.34:28967. This IP must belongs the network interface of your PC or inside the container, otherwise node either fail to start or inaccessible in the LAN.
To be able to accept external connections your node should tell to the satellite, which external (public) address and port it has. Here is an contact.external-address: to specify it.

In the simple case, when you do not have a router and the interface of your PC has the external publicly accessible address and you do not run the node in the container (or used the --network host parameter in your docker run command), it can be the same as server.address.

But usually you have two addresses - local and public. And you can have a different port for each address - it is highly depends on your configuration.

4 Likes

Thank you so much. This is a quality answer.

I can only ask you to add it to the description in the config.yaml for the next update, since as for now, it is ambiguous.

And please also fix the windows shortcut to open the dashboard in the browser with the correct port