Storage node on Synology/docker not working

Hi there,

I am in trouble with one of my nodes. It is a Synology with docker. For some reason the database became corrupted, so I had to remove the container completely and re-create it.

The first problem was with the command that was creating the container. I had that saved on a text file, but for some reason it wasn’t accepted. So after a lot of reasearch I realized that the “destination” parameter in “-mount” became “target”, that the “storjlabs/storagenode:latest” should be in the “-mount” and not at the end like I had it and more.

Anyway, even though I managed to find the correct syntax for the command, I still have some issues which I cannot bypass.

My node is down for more than 3 days now and I am starting worrying for being disrupted.

The node is restarting all the time, as I see that is always up for 1 minute. In addition the dashboard is not loading at all and give me the following:

I don’t know if the command is still wrong, but I would really appreciate if you could check it and let me know is something is wrong and/or causing issues. Here is my command, with some details replaced with “x-es” and zeros:

sudo docker run -d --restart unless-stopped --stop-timeout 300 \
-p 28967:28967/tcp \
-p 28967:28967/udp \
-p 14002:14002/tcp \
-e WALLET="0x0000000000000000000000000000000000000000" \
-e EMAIL="username@domain.com" \
-e ADDRESS="xxxxx.xxx.domain.com:28967" \
-e STORAGE="20TB" \
--name=XX-XXX-NAS02_a \
--mount type=bind,source="/volume1/docker/storj/identity",target="/app/identity" storjlabs/storagenode:latest \
--mount type=bind,source="/volume1/docker/storj/data"‚target="/app/config" storjlabs/storagenode:latest \
--operator.wallet-features=zksync-era,zksync

Finally, I also think that maybe the problem I have is permissions, but I really don’t know how all this works. I believe that the files are still accessible from the new container I created, but I don’t know how to prove it or to check it.

Any help would be really much appreciated!

With kind regards,
Angelos Pitsos

If it helps, I can see in the logs the following:

2025-06-10T23:30:43Z	FATAL	Error loading identity.	{"Process": "storagenode-updater", "error": "file or directory not found: open identity/identity.cert: no such file or directory", "errorVerbose": "file or directory not found: open identity/identity.cert: no such file or directory\n\tstorj.io/common/identity.Config.Load:326\n\tmain.cmdRun:111\n\tstorj.io/common/process.cleanup.func1.4:402\n\tstorj.io/common/process.cleanup.func1:420\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:116\n\tstorj.io/common/process.ExecWithCustomConfigAndLogger:81\n\tmain.main:22\n\truntime.main:283"}

You posted your command to run the container: but what command did you use to set it up? (It would have started with “docker run --rm -e SETUP=“true”…”).

And did you have to create a new Identity, or did you reuse your old files? Your “FATAL” log entry makes it sound like you may have have deleted/moved your original.

Not an expert but this looks weird to me:

I have it like this:

--mount  \
--mount  \
--name="" storjlabs/storagenode:latest \

According to my knowledge the image name and tag should be the last part of the command as Docker expects options and arguments for the container after it. And you should not specify it multiple times.

So you should try:

--name=XX-XXX-NAS02_a \
--mount type=bind,source="/volume1/docker/storj/identity",target="/app/identity" \
--mount type=bind,source="/volume1/docker/storj/data"‚target="/app/config" \
storjlabs/storagenode:latest

I have to add: I am not on Synology, so I don’t know if this requires special refinements to the Docker command.

1 Like

See this thread…
https://forum.storj.io/t/my-docker-run-commands-for-multinodes-on-synology-nas/22034?u=snorkel

1 Like

Opps! My mistake! I didn’t… :expressionless:

So I delete it completely and ran first:

sudo docker run --rm -e SETUP="true" \
--mount type=bind,source="/volume1/docker/storj/identity",target="/app/identity" storjlabs/storagenode:latest \
--mount type=bind,source="/volume1/docker/storj/data"‚target="/app/config" storjlabs/storagenode:latest \
--name=XX-XXX-NAS02_a

Then I ran the followins (with the correction suggested by @jammerdan:

sudo docker run -d --restart unless-stopped --stop-timeout 300 \
-p 28967:28967/tcp \
-p 28967:28967/udp \
-p 14002:14002/tcp \
-e WALLET="0x0000000000000000000000000000000000000000" \
-e EMAIL="username@domain.com" \
-e ADDRESS="XXXXX.XXX.domain.com:28967" \
-e STORAGE="20TB" \
--mount type=bind,source="/volume1/docker/storj/identity",target="/app/identity" storjlabs/storagenode:latest \
--mount type=bind,source="/volume1/docker/storj/data"‚target="/app/config" storjlabs/storagenode:latest \
--name=XX-XXX-NAS02_a \
--operator.wallet-features=zksync-era,zksync

But is still restarts constantly!

Any ideas?

With kind regards,
Angelos Pitsos

Restart constantly - and what is in the log?

Your command is wrong. You have two storagenode:latest. But if you won’t take a look at what I suggested, it’s useless to waste my time.

1 Like

Still not correct:

This is my suggestion:

--mount type=bind,source="/volume1/docker/storj/identity",target="/app/identity" \
--mount type=bind,source="/volume1/docker/storj/data"‚target="/app/config" \
--name=XX-XXX-NAS02_a storjlabs/storagenode:latest\

How could I export the logs, please?

Hi @snorkel,

Thanks for your message. I read carefully your other post (used the link you provided) and I believe I have corrected my commands. I want it to be as standalone node. and not separating the database.

Here is the creation command:

sudo docker run --rm -e SETUP="true" \
    --mount type=bind,source="/volume1/docker/storj/identity",target="/app/identity" \
    --mount type=bind,source="/volume1/docker/storj/data",target="/app/config" \
    --name XX-XXX-NAS02_a storjlabs/storagenode:latest

…and here is the the run command:

sudo docker run -d --restart unless-stopped \
    --stop-timeout 300 \
    -p 28967:28967/tcp \
    -p 28967:28967/udp \
    -p 14002:14002/tcp \
    -e WALLET="0x0000000000000000000000000000000000000000" \
    -e EMAIL="username@domain.com" \
    -e ADDRESS="XXXXX.XXX.domain.com:28967" \
    -e STORAGE="20TB" \
    --mount type=bind,source="/volume1/docker/storj/identity",destination=/app/identity \
    --mount type=bind,source="/volume1/docker/storj/data",destination=/app/config \
    --name XX-XXX-NAS02_a storjlabs/storagenode:latest \
    --operator.wallet-features=zksync-era,zksync

Do you see any mistake, please?

Because the container is still constantly restarting!

With kind regards,
Angelos Pitsos

Hi @jammerdan,

I did it exactly like your suggestion. I posted on the previous post my commands. But the problem persists.

Thanks a lot in advance for your kind support! It is much appreciated.

With kind regards,
Angelos Pitsos

Well if that did not solve it, I logs may provide additional information.

Hey @jammerdan,

Could you please advise me how to how logs via command?

Thanks a lot in advance!

It should go like this:

(sudo) docker logs containername

The setup command should be run only once, and there is no “target” flag in my commands or in official docs, only “destination”.
I don’t realy know how you could uninstall all the stuff you did, and start fresh with the correct commands. Maybe a storjling could help you.
For log export you use the command as you want to see the log and then put" > path to a file.txt" after it.
The > exports that log to the desired txt file.
I would create the Storj dir in the /volume1/, not in volume1/docker/ and use that.

If you deleted all the files from your old node… and the logs complain “Error loading identity”… I haven’t heard you mention creating a new set of Identity files. They’re what make your node unique, and it won’t run without them.

1 Like

Hi @jammerdan,

Thanks a lot. Here are the results of my latest logs:

Error: Invalid configuration: invalid contact.external-address: lookup "xxxxx.xxx.domain.com" failed: lookup xxxxx.xxx.domain.com on 192.168.200.2:53: no such host
        storj.io/storj/storagenode.(*Config).Verify:182
        main.cmdRun:61
        main.newRunCmd.func1:33
        storj.io/common/process.cleanup.func1.4:402
        storj.io/common/process.cleanup.func1:420
        github.com/spf13/cobra.(*Command).execute:985
        github.com/spf13/cobra.(*Command).ExecuteC:1117
        github.com/spf13/cobra.(*Command).Execute:1041
        storj.io/common/process.ExecWithCustomOptions:116
        main.main:34
        runtime.main:283
2025-06-11 11:16:17,749 INFO exited: storagenode (exit status 1; not expected)
2025-06-11 11:16:19,752 INFO spawned: 'storagenode' with pid 62
2025-06-11T11:16:19Z    INFO    Configuration loaded    {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-06-11T11:16:19Z    INFO    Anonymized tracing enabled      {"Process": "storagenode"}
2025-06-11T11:16:19Z    INFO    Operator email  {"Process": "storagenode", "Address": "username@domain.com"}
2025-06-11T11:16:19Z    INFO    Operator wallet {"Process": "storagenode", "Address": "0x00000000000000000000000000000000000000000"}
2025-06-11T11:16:19Z    ERROR   failure during run      {"Process": "storagenode", "error": "Invalid configuration: invalid contact.external-address: lookup \"xxxxx.xxx.domain.com\" failed: lookup xxxxx.xxx.domain.com on 192.168.200.2:53: no such host\n\tstorj.io/storj/storagenode.(*Config).Verify:182\n\tmain.cmdRun:61\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.4:402\n\tstorj.io/common/process.cleanup.func1:420\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:116\n\tmain.main:34\n\truntime.main:283", "errorVerbose": "Invalid configuration: invalid contact.external-address: lookup \"[[[[[[[nas02.dc2.onplanet.eu](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)\" failed: lookup [[[[[nas02.dc2.onplanet.eu](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com)](http://xxxxx.xxx.domain.com) on 192.168.200.2:53: no such host\n\tstorj.io/storj/storagenode.(*Config).Verify:182\n\tmain.cmdRun:61\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.4:402\n\tstorj.io/common/process.cleanup.func1:420\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:116\n\tmain.main:34\n\truntime.main:283\n\tmain.cmdRun:62\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.4:402\n\tstorj.io/common/process.cleanup.func1:420\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:116\n\tmain.main:34\n\truntime.main:283"}
Error: Invalid configuration: invalid contact.external-address: lookup "xxxxx.xxx.domain.com" failed: lookup xxxxx.xxx.domain.com on 192.168.200.2:53: no such host
        storj.io/storj/storagenode.(*Config).Verify:182
        main.cmdRun:61
        main.newRunCmd.func1:33
        storj.io/common/process.cleanup.func1.4:402
        storj.io/common/process.cleanup.func1:420
        github.com/spf13/cobra.(*Command).execute:985
        github.com/spf13/cobra.(*Command).ExecuteC:1117
        github.com/spf13/cobra.(*Command).Execute:1041
        storj.io/common/process.ExecWithCustomOptions:116
        main.main:34
        runtime.main:283
2025-06-11 11:16:19,793 INFO exited: storagenode (exit status 1; not expected)

I hope that helps to identify the problem!

With kind regards,
Angelos Pitsos

That sound like you haven’t replaced this line:

-e ADDRESS=“XXXXX.XXX.domain.com:28967” \

…with your DDNS or IP. Like if your external IP is 123.456.789.012 it would be

-e ADDRESS=“123.456.789.012:28967” \

or maybe with a DDNS hostname:

-e ADDRESS=“newnode.apitsos.com:28967” \

(all assuming you’re using the default port of 28967)

Hi @Roxor,

My node has a static IP and a hostname. So I am using the hostname I have setup in the DNS zone of my domain. And yes, I use the default port 28967.

I can’t understand where the error/problem is exactly…