I am trying to prepare a contingency plan for my node in case of an ISP failure. I have a spare LTE connection that just stays unused most of the time. Would like to have it do something when a crisis arises.
The LTE has no public IP and no port forwarding, so I want to use VPN from portmap.io, but I’m having trouble making it work with docker. I’ve created a config on portmap.io to route a single TCP port. Clearly the node is not able to communicate using that port.
What’s working:
- Node on docker with my regular internet, having public IP and port forwarding
- portmap.io VPN, tested using netcat listen on the port specified (single TCP port)
- Node as a service (“GUI install”) with VPN (status is online, quic misconfigured, but works)
What’s not working:
- Node on docker with VPN (status offline, quic obviously misconfigured)
Setups I’ve tried (port changed to 12345 for extra obscurity):
[1] Regular docker run:
docker run -d --stop-timeout 300 -p 10.9.62.82:12345:28967/tcp -p 10.9.62.82:12345:28967/udp -p 127.0.0.1:14002:14002 -e WALLET="[REDACTED]" -e EMAIL="[REDACTED]" -e ADDRESS="[REDACTED].portmap.host:12345" -e STORAGE="500GB" --mount type=bind,source="F:\identity\",destination=/app/identity --mount type=bind,source="F:\config\",destination=/app/config --name storagenode storjlabs/storagenode:latest
Results in:
2023-03-20 17:55:42 2023-03-20T16:55:42.374Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo"}
2023-03-20 17:55:42 2023-03-20T16:55:42.397Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE"}
2023-03-20 17:55:42 2023-03-20T16:55:42.406Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6"}
2023-03-20 17:55:42 2023-03-20T16:55:42.421Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S"}
2023-03-20 17:55:42 2023-03-20T16:55:42.425Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs"}
2023-03-20 17:57:51 2023-03-20T16:57:51.715Z ERROR contact:service ping satellite failed {"Process": "storagenode", "Satellite ID": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S", "attempts": 1, "error": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out", "errorVerbose": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out\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:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75"}
2023-03-20 17:57:51 2023-03-20T16:57:51.764Z ERROR contact:service ping satellite failed {"Process": "storagenode", "Satellite ID": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE", "attempts": 1, "error": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out", "errorVerbose": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out\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:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75"}
... continues for all sats ...
And:
[2] Use VPN’s assigned IP (mine in network, not server’s) in port mapping:
docker run -d --stop-timeout 300 -p 10.9.62.82:12345:28967/tcp -p 10.9.62.82:12345:28967/udp -p 127.0.0.1:14002:14002 -e WALLET="[REDACTED]" -e EMAIL="[REDACTED]" -e ADDRESS="[REDACTED].portmap.host:12345" -e STORAGE="500GB" --mount type=bind,source="F:\identity\",destination=/app/identity --mount type=bind,source="F:\config\",destination=/app/config --name storagenode storjlabs/storagenode:latest
Results in the same output:
2023-03-20 17:09:26 2023-03-20T16:09:26.478Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE"}
2023-03-20 17:09:26 2023-03-20T16:09:26.490Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S"}
2023-03-20 17:09:26 2023-03-20T16:09:26.499Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6"}
2023-03-20 17:09:26 2023-03-20T16:09:26.518Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs"}
2023-03-20 17:09:26 2023-03-20T16:09:26.521Z INFO pieces:trash emptying trash started {"Process": "storagenode", "Satellite ID": "12tRQrMTWUWwzwGh18i7Fqs67kmdhH9t6aToeiwbo5mfS2rUmo"}
2023-03-20 17:09:46 2023-03-20T16:09:46.822Z INFO orders.12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S sending {"Process": "storagenode", "count": 3}
2023-03-20 17:09:47 2023-03-20T16:09:47.396Z INFO orders.12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S finished {"Process": "storagenode"}
2023-03-20 17:11:35 2023-03-20T16:11:35.363Z ERROR contact:service ping satellite failed {"Process": "storagenode", "Satellite ID": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs", "attempts": 1, "error": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out", "errorVerbose": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out\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:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75"}
2023-03-20 17:11:36 2023-03-20T16:11:36.078Z ERROR contact:service ping satellite failed {"Process": "storagenode", "Satellite ID": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE", "attempts": 1, "error": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out", "errorVerbose": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp 193.161.193.99:12345: connect: connection timed out\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:99\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:75"}
... continues for all sats ...
and
No other ERRORS prior to ones shown, though in case [1] it previously showed something else, but now it’s ping satellite failed
for both.
What can be done to make it work?
Using OpenVPN Connect application
Windows 10 Home 22H2 (I know, Home sucks, but it doesn’t work on Pro either)
Docker Desktop 4.17.0 (99724) with WSL 2 engine