Also, I don’t know if it’s normal or not but with your wireguard configuration, when I try to ping from wireguard client to wireguard server (or the other way around), it doesn’t work.
That’s the problem — the tunnel does not work. It does not make sense to triage further until tunnel works.
How come it works first and then stops? Or you mean logss log failure after some time? Then it’s normal - tunnel is broken so responses don’t go back.
Make sure the wireguard tunnel works. You shall be able to ping host and client from each other. See if you have stale iptables rules or firewall config.
[Interface]
PrivateKey = <Wireguard client private key>
Address = 10.10.0.2/24
Table = off # Important : wg-quick ne touche pas Ă la table de routage principale
[Peer]
PublicKey = <Wireguard server public key>
AllowedIPs = 10.10.0.1/32
Endpoint = 46.224.42.102:51820
PersistentKeepalive = 25
But it still doesn’t work.
Though, on the server config, the tunnel works when I remove the follwing:
Question: Why are you forwarding port 51820 (wireguard) to 28967 (storj)?
Answer: Because that’s the easiest way to break wireguard which uses UDP port 51820.
Holy crap. My bad. I command/replaced wrong value in my opus. I’ll fix it asap. Sorry about that! It was meant to be my non-standard storj port, not wireguard port, obviously…
(i.e. I took my config, and meant to replace 2618 with 28967, but instead replaced it with 51820. )
The fixed version shall be live, you may need to Option+Reload (Reload from Origin) to see the changes.
Thank you @Mitsos and @smokemodel for noticing the glaring enmorontment of my post.
Yes. There are no downsides, and if you use inadyn or similar tool to update DDNS – you want all traffic from node to go via tunnel (this would include inadyn traffic).
Node is supposed to run in a separate jail/container, with a separate networking.
[Interface]
PrivateKey = <Wireguard client private key>
Address = 10.10.0.2/24
Table = off # Important : wg-quick ne touche pas Ă la table de routage principale
[Peer]
PublicKey = <Wireguard server public key>
AllowedIPs = 0.0.0.0/0
Endpoint = 46.224.42.102:51820
PersistentKeepalive = 25
Results:
It worked for a few minutes, while the QUIC statut on the Dashboard GUI was “Refreshing”. Then, it turned to “Misconfigured” and the ERRORS started to show up:
curl ipinfo.io from node host returns wireguard server external IP?
Curl node ip:port from wireguard client/node machine
Curl node ip:port from your wireguard server machine (through the tunnel)
Curl using external wireguard server ip:port from an unrelated network. (Avoid hairpin)
TCP forwarding enabled?
Does port appear open? I recommend testing with simple http server, not node, to avoid satellites throttling connection attempts. Only start node once networking is fully working.
Depending on where does the process break next step would be tracking packets with tcpdump at each endpoint.
Also, are you reporting the client and server to purge state iptables?
What is the client and server OS? Is firewall-cmd available? What zones are your interfaces in? Did you read the article in its entirety?
curl 10.10.0.2:28967 from the Wireguard server:
{
“Statuses”: null,
“Help”: “To access Storagenode services, please use DRPC protocol!”,
“AllHealthy”: false
}
Sorry, could you elaborate? I don’t understand what I need to run.
Yes, on the Wireguard server with the following command.
The last line of /etc/sysctl.conf is net.ipv4.ip_forward=1. Then, I run sudo sysctl --system.
On Hetzner, the VM is running without firewall, so everything is open by default.
On my local machine (Raspberry), I confirm the port 28967 is open and redirects incoming traffic to the Raspberry.
How should I do that? I run all of these commands on both Wireguard server and client to make sure everything is clean:
Run curl ipinfo.io from the docker container. It keeps returning my ISP IP. Though, when I try to ping the Wireguard server (10.10.0.1) from the containe, it works.
Maybe something is wrong with the routes on the Storj machine (machine = the Raspberry that hosts the Storj container)? How can I check that?
Every time I try a new configuration, this is what I do:
make sure the docker compose file uses the wireguard server public IP with the following line in the environment section: ADDRESS: "46.224.42.102:28967"
start Storj container: sudo docker compose up -d --build
EDIT:
Some news.
I commented the following line in the Wireguard client config:
Table = off
(It is not present in the tutorial from @arrogantrabbit but I added it during my troubleshooting).
Now, the curl ipinfo.io returns the Wireguard server IP!
BUT, the Storj container still doesn’t work as expected and returns the following errors:
2026-01-09T15:24:05Z DEBUG trust Satellite is trusted {"Process": "storagenode", "id": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE"}
2026-01-09T15:24:05Z INFO preflight:localtime start checking local system clock with trusted satellites' system clock. {"Process": "storagenode"}
2026-01-09T15:26:19Z ERROR preflight:localtime unable to get satellite system time {"Process": "storagenode", "Satellite ID": "12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S", "error": "rpc: tcp connector failed: rpc: dial tcp 35.212.10.183:7777: connect: connection timed out", "errorVerbose": "rpc: tcp connector failed: rpc: dial tcp 35.212.10.183:7777: connect: connection timed out\n\tstorj.io/common/rpc.HybridConnector.DialContext.func1:190"}
2026-01-09T15:26:19Z ERROR preflight:localtime unable to get satellite system time {"Process": "storagenode", "Satellite ID": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs", "error": "rpc: tcp connector failed: rpc: dial tcp 35.207.121.91:7777: connect: connection timed out", "errorVerbose": "rpc: tcp connector failed: rpc: dial tcp 35.207.121.91:7777: connect: connection timed out\n\tstorj.io/common/rpc.HybridConnector.DialContext.func1:190"}
2026-01-09T15:26:19Z ERROR preflight:localtime unable to get satellite system time {"Process": "storagenode", "Satellite ID": "121RTSDpyNZVcEU84Ticf2L1ntiuUimbWgfATz21tuvgk3vzoA6", "error": "rpc: tcp connector failed: rpc: dial tcp 34.2.157.232:7777: connect: connection timed out", "errorVerbose": "rpc: tcp connector failed: rpc: dial tcp 34.2.157.232:7777: connect: connection timed out\n\tstorj.io/common/rpc.HybridConnector.DialContext.func1:190"}
2026-01-09T15:26:19Z ERROR preflight:localtime unable to get satellite system time {"Process": "storagenode", "Satellite ID": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE", "error": "rpc: tcp connector failed: rpc: dial tcp 35.215.108.32:7777: connect: connection timed out", "errorVerbose": "rpc: tcp connector failed: rpc: dial tcp 35.215.108.32:7777: connect: connection timed out\n\tstorj.io/common/rpc.HybridConnector.DialContext.func1:190"}
2026-01-09T15:26:19Z ERROR Failed preflight check. {"Process": "storagenode", "error": "system clock is out of sync: system clock is out of sync with all trusted satellites", "errorVerbose": "system clock is out of sync: system clock is out of sync with all trusted satellites\n\tstorj.io/storj/storagenode/preflight.(*LocalTime).Check:96\n\tstorj.io/storj/storagenode.(*Peer).Run:1100\n\tmain.cmdRun:127\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.InitBeforeExecute.func1.2:389\n\tstorj.io/common/process.InitBeforeExecute.func1:407\n\tgithub.com/spf13/cobra.(*Command).execute:985\n\tgithub.com/spf13/cobra.(*Command).ExecuteC:1117\n\tgithub.com/spf13/cobra.(*Command).Execute:1041\n\tstorj.io/common/process.ExecWithCustomOptions:115\n\tmain.main:34\n\truntime.main:283"}
2026-01-09T15:26:20Z ERROR failure during run {"Process": "storagenode", "error": "system clock is out of sync: system clock is out of sync with all trusted satellites", "errorVerbose": "system clock is out of sync: system clock is out of sync with all trusted satellites\n\tstorj.io/storj/storagenode/preflight.(*LocalTime).Check:96\n\tstorj.io/storj/storagenode.(*Peer).Run:1100\n\tmain.cmdRun:127\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.InitBeforeExecute.func1.2:389\n\tstorj.io/common/process.InitBeforeExecute.func1:407\n\tgithub.com/spf13/cobra.(*Command).execute:985\n\tgithub.com/spf13/cobra.(*Command).ExecuteC:1117\n\tgithub.com/spf13/cobra.(*Command).Execute:1041\n\tstorj.io/common/process.ExecWithCustomOptions:115\n\tmain.main:34\n\truntime.main:283"}
2026-01-09T15:26:20Z FATAL Unrecoverable error {"Process": "storagenode", "error": "system clock is out of sync: system clock is out of sync with all trusted satellites", "errorVerbose": "system clock is out of sync: system clock is out of sync with all trusted satellites\n\tstorj.io/storj/storagenode/preflight.(*LocalTime).Check:96\n\tstorj.io/storj/storagenode.(*Peer).Run:1100\n\tmain.cmdRun:127\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.InitBeforeExecute.func1.2:389\n\tstorj.io/common/process.InitBeforeExecute.func1:407\n\tgithub.com/spf13/cobra.(*Command).execute:985\n\tgithub.com/spf13/cobra.(*Command).ExecuteC:1117\n\tgithub.com/spf13/cobra.(*Command).Execute:1041\n\tstorj.io/common/process.ExecWithCustomOptions:115\n\tmain.main:34\n\truntime.main:283"}