Storj node status offline on Synology NAS

Hello!
This is my first time when I try to create a Storj node on a Synology NAS.
The issue is that I see the node dashboard with status Offline and Quic Misconfigured.
I also allowed the firewall on my NAS to access the ports 14002 and 28967.

I already create and run 11 nodes running on Windows that are working fine.
I have a static IP and all nodes are setup and checked with yougetsignal to see if ports are open. All nodes have port forwarded in my router, even for this node: 28978

Below is the command that can create the node and managed to start the dashboard so far:

sudo docker run -d --restart unless-stopped --stop-timeout 300
-p 28967:28978/tcp
-p 28967:28978/udp
-p 192.168.100.5:14002:14002
-e WALLET=“0xxxxxxxxxxxxxxxxxxxxx”
-e EMAIL="user@gmail.com"
-e ADDRESS=“MY_IP_STATIC:28978”
-e STORAGE=“21TB”
–mount type=bind,source=“/volume1/docker/storj/identity”,destination=/app/identity
–mount type=bind,source=“/volume1/docker/storj/data”,destination=/app/config
–name storagenode storjlabs/storagenode:latest

I am sure there is something small, but I don’t see it.
Please help!

One of these is wrong: you are telling storj that you are listening on port 28978 but you are mapping port 28967

Also check your DNAT/port forwarding on your gateway and turn off DDoS protection on Synology (that would be the next issue you hit after you sort out the ports)

I switched the ports between them for both TCP and UDP:
-p 28978:28967/tcp \

Now I checked the yougetsignal and it shows me that the 28978 port is closed.

Also checked my NAS if DoS protection is disabled - all good on this side.

See the last replay in this:

Put all ports as 28967 or 28968. Forword in router 28967 > 28967, or 28968 > 28968 etc and you’re good. The port that is always forgoton is the server.address.

I don’t know how does the storagenode docker container deduce the port in server.address from the ADDRESS environment variable passed to container, if at all: you can look up what ends up being used in config.yml. This will tell you port on which the node is listening in the container.

What are your forwarding/DNAT settings on your firewall?

Hello @blanaru ,
Welcome to the forum!

If you did not change the server.address: option in your config.yaml, then port mapping should be

-p 28978:28967/tcp -p 28978:28967/udp -e ADDRESS=MY_IP_STATIC:28978

Your firewall should allow connections to 28978 TCP and 28978 UDP, your router should forward TCP+UDP from 28978 to 28978 too to the IP of your Synology.

Hello Alexey!
Thank you for the advice and the warm welcome!
I know it sounds strange, but I don’t know how to edit the config.yaml file without corrupt it. In windows I used Notepad++ but here on NAS I think things are a bit different.

I want to have a look on this file so I can give you correct answer on this issue.

Hopefully this helps, I am taking a screenshot with the status of the docker in GUI.

Copy it to your PC with File… (can’t rememeber the app name) - right click on it and Download. Than edit it with Notepad++. Than upload it on Synology with Overwrite.
config.yaml is located in storagenode folder where node’s data is.

Thanks snorkel for the hint!
Had a look inside…not really sure what to check for in it, but I found some lines that are not actually correct:

total allocated disk space in bytes

storage.allocated-disk-space: 2.00 TB

private address to listen on

server.private-address: 127.0.0.1:7778

I actually allocated 21tb of space, and my internal ip is different…

What should I edit on this file so I can start running the node?

Thanks!

You usually should not edit anything in this file.
What do you have in the server.address: option?
The default value is:

server.address: :28967

Also, please post here the last 20 lines from your logs between two new lines with three backticks, like this:

```
log lines here
```

Please also show your port forwarding rule from your router.
Make sure that you allowed ports TCP 28978 and UDP 28978 in the firewall on your router (or disable it) and in the firewall on your Synology.

All the settings that you need are made in the docker run command and they will overwrite the settings in config.yaml. You don’t have to change anything in config.yaml. I already pointed you to my run command from other topic, and it has everything that you can set. You don’t have to use everything in it, though.

I already been using your run command, but I think the problem is in the ports or something wrongly setup.
Will reply to Alexey my router setting and the log text in a minute.

Ok, here is my router setting:

And below is my log text, copied from ssh console with command: docker logs --tail 20 storagenode

2023-02-23T05:58:50.013Z INFO Current binary version {“Process”: “storagenode-updater”, “Service”: “storagenode”, “Version”: “v1.72.5”}
2023-02-23T05:58:50.014Z INFO Version is up to date {“Process”: “storagenode-updater”, “Service”: “storagenode”}
2023-02-23T05:58:50.023Z INFO Current binary version {“Process”: “storagenode-updater”, “Service”: “storagenode-updater”, “Version”: “v1.72.5”}
2023-02-23T05:58:50.023Z INFO Version is up to date {“Process”: “storagenode-updater”, “Service”: “storagenode-updater”}
2023-02-23T05:58:51.168Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12rfG3sh9NCWiX3ivPjq2HtdLmbqCrvHVEzJubnzFzosMuawymB”, “attempts”: 10, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T05:59:18.041Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo”, “attempts”: 10, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:141\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T05:59:26.719Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “attempts”: 10, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:141\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T05:59:39.687Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE”, “attempts”: 10, “error”: “ping satellite: check-in ratelimit: node rate limited by id”, “errorVerbose”: “ping satellite: check-in ratelimit: node rate limited by id\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:141\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:00:26.856Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6”, “attempts”: 10, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:07:22.245Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs”, “attempts”: 11, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:07:23.463Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12rfG3sh9NCWiX3ivPjq2HtdLmbqCrvHVEzJubnzFzosMuawymB”, “attempts”: 11, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:07:50.626Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo”, “attempts”: 11, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:07:59.333Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “attempts”: 11, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:08:12.484Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE”, “attempts”: 11, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:09:00.003Z ERROR contact:service ping satellite failed {“Process”: “storagenode”, “Satellite ID”: “121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6”, “attempts”: 11, “error”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused”, “errorVerbose”: “ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 86.125.46.206:28978: connect: connection refused\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:147\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:101\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:160\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75”}
2023-02-23T06:13:49.535Z INFO Downloading versions. {“Process”: “storagenode-updater”, “Server Address”: “https://version.storj.io”}
2023-02-23T06:13:49.981Z INFO Current binary version {“Process”: “storagenode-updater”, “Service”: “storagenode”, “Version”: “v1.72.5”}
2023-02-23T06:13:49.981Z INFO Version is up to date {“Process”: “storagenode-updater”, “Service”: “storagenode”}
2023-02-23T06:13:49.991Z INFO Current binary version {“Process”: “storagenode-updater”, “Service”: “storagenode-updater”, “Version”: “v1.72.5”}
2023-02-23T06:13:49.991Z INFO Version is up to date {“Process”: “storagenode-updater”, “Service”: “storagenode-updater”}

I checked also the yougetsignal site for that port, and surprisingly, the port is closed, but all the other ports from windows nodes are open…

do you have any other nodes on this host?
if not, you should modify either your router rule or docker run command, because you forward on your router port 28978 to 28967, but in your docker run command you instructed to listen the port 28978.
So, you should either forward 28978 to 28978 and your node will listen 28978 (the left part of the port-mapping in the docker run command) or use the port 28967 in your docker run command instead of 28978 in the port-mapping. In both cases the external address must use 28978 port anyway.

I have nodes from 28967 to 28977 live and working, so I have to play with 28978 port on this NAS.
I changed the router rules:

and create a new node in docker, this time with these ports:
Screenshot 2023-02-23 at 08.53.27

Now the 28978 port looks open in yougetsignal, but the node still offline shows.

in this case your docker run command should use

-p 28978:28967/tcp \
-p 28978:28967/udp \

instead of:

as I said many times - you should not modify the right side of the port mapping after the colon, unless you also changed it in the server.address option/argument.

The left side of the port-mapping before the colon is a port on your host (I.e. Synology), the right part is a port inside the container. This internal port also defined in the server.address configuration option, and by default it is 28967:

server.address: :28967

or

server.address: 0.0.0.0:28967

Thanks Alexey!
It seems that the only change I had to do is to modify the router internal port from 28967 to 28978 to make it work.

1 Like

Yes, it’s always need to think about this:
28978 (external address) → 28967 (router to host) → 28978 (host) → 28967 (container)
as you can see

28967 (router to host) → 28978 (host)

doesn’t match each other.

So you need either:
28978 (external address) → 28967 (router to host) → 28967 (host) → 28967 (container)
or
28978 (external address) → 28978 (router to host) → 28978 (host) → 28967 (container)