Problems with storagenode and update in Docker on Diskstation DSM

I have some questions and problems with a storagenode on Docker, Synology NAS; I’m tired to search and read all the old posts, many of those don’t apply to current versions, or are incomplete.
Thanks in advance to anyone who will shed some light on the topics.
I’m a newbie in Linux, I use only Windows systems, but I can follow instructions and input CLI commands if necesary. My storagenode:
Synology DS216+, DSM 6.2.4, Docker 18.09.0-0519, storagenode ver. 1.29.3., watchtower, only 1 HDD Ironwolf 8TB CMR, storagenode installed in volume1/Storj, logging in PuTTY with the administrator account - alpha (admin is disabled by default in new DSM). Port is forwarded for TCP and UDP.
Both tests from storjnet.info, PING and DIAL, TCP and QUIC, are working. Dashboard shows ok.

I used the following commands for installation:

sudo su (because without it, docker commands don’t work)
sysctl -w net.core.rmem_max=2500000
docker pull storjlabs/storagenode:latest

*SETUP NODE:
docker run --rm -e SETUP=“true”
–mount type=bind,source=“/volume1/Storj/Identity/storagenode/”,destination=/app/identity
–mount type=bind,source=“/volume1/Storj/”,destination=/app/config
–name storagenode storjlabs/storagenode:latest

*START NODE:
docker run -d --restart unless-stopped --stop-timeout 300
-p 28967:28967/tcp
-p 28967:28967/udp
-p 14002:14002
-e WALLET=“XXXXXXXX”
-e EMAIL=“XXXXXXXX”
-e ADDRESS=“XXXXXXX:28967”
-e STORAGE=“7TB”
–mount type=bind,source=“/volume1/Storj/Identity/storagenode/”,destination=/app/identity
–mount type=bind,source=“/volume1/Storj/”,destination=/app/config
–name storagenode storjlabs/storagenode:latest

*AUTOUPDATE:
docker pull storjlabs/watchtower

docker run -d --restart=always --name watchtower -v /var/run/docker.sock:/var/run/docker.sock storjlabs/watchtower storagenode watchtower --stop-timeout 300s

docker ps -a

Both, storagenode and watchtower are running.

*MANUAL UPDATE:
docker stop -t 300 storagenode
docker rm storagenode
docker pull storjlabs/storagenode:latest
than I run *START NODE.

And now the PROBLEMS:

[1]. “sudo su” or “sudo -i”
I don’t know if I should use one or another; a friend told me to install in [sudo su] mode.
They seems to change the prompt in something else:
alpha@diskstation:/$ sudo su
xxx-x.x#

alpha@diskstation:/$ sudo -i
root@diskstation:/#

I remember installing the node in [sudo su] mode, and after 2 days, I pulled the watchtower, but in [sudo -i] mode, I think… is there a problem?

[2]. log.output: “/app/config/node.log” - dosen’t change the destination of the log file.
I want the log file to be in the storage node folder: “/volume1/Storj/node.log”
What is the proper setting? And the “” are necesary?

[3]. The storage node is still at 1.29.3, after a week. The latest release is 1.30.2.
On “version.storj.io” site I see:
1.29.3 - “suggested”
1.30.2 - “rollout”

“docker logs watchtower” shows this:
time=“2021-05-25T13:57:29Z” level=info msg=“Waiting for running update to be finished…”
time=“2021-05-28T20:15:43Z” level=info msg=“Waiting for running update to be finished…”

I tried the manual update too, and still no version change. Is there a way to force the update? What seems to be the problem? After manual update, should I run *START NODE or *SETUP NODE commands?

[4]. On Github I see “storagenode” and “storagenode-updater” for Windows and Linux, but from what I understand from the pull command, only the storagenode is downloaded and installed.
What is the use of “storagenode-updater” for Linux? Should I install/pull that too? Is that the watchtower?

[5]. After changes in config.yaml, should I use only
“docker stop -t 300 storagenode”
“docker start storagenode”
or
“docker stop -t 300 storagenode”
“docker rm storagenode”
*START NODE command ?

[6]. When requesting the auth token, I entered my real email, but didn’t received the auth token in email or spam. The email address is used for what exactely? If we input a fake one, dose it matter?

[7]. The ethernal questions with 1000 answers: where are located the storgenode instalation file, watchtower file, node log file and watchtower log file, in my particular case and what commands shoud I use to search for them?
I only used “cd”, “ls” and “ls -la”, but no success. And I realy can’t try all the folders on DS.
“docker logs storagenode” and “docker logs watchtower” seems to read them from somewhere…

[8]. HDD hibernation, Recyle Bin, Write cache - should I deactivate them?
DS is hooked to an UPS, but it is not stoped by it remotely.

[9]. Should I let DSM and Docker package to autoupdate? Is there any risks?

First of all, welcome to the forums! I hope you have a pleasant time in this great community.

Imagine how tired people are of answering the same questions over and over again. Please be a little more considerate of other peoples time.

Anyway, ignoring that, let me take a stab at answering your questions.

Doesn’t matter, but I would generally advise to run only single commands using sudo in front of it and not run everything as root. You open yourself up to unnecessary risks by always being root. There is a reason it doesn’t work like that by default anymore.

This is the correct setting, the path refers to the path inside the container, which is mapped to your storage location. Make sure you use an editor that doesn’t replace the straight quotes with curly ones.
This "" not this “”

Docker nodes get updated after the rollout for the native updater is done. You are on the latest version for docker nodes. Watchtower will update you when it’s time.

On windows it’s part of the normal install. Linux version is still new and under development. [Tech Preview] Linux Installer Part 2

Restarting alone is fine, you will need to remove and run with the full command if you want to make changes to settings that are overwritten in the docker run command.

It was likely blocked by an ad blocker. If you disable ad blockers and DNS blockers, the email should work.

Everything that isn’t in the storage or identity locations is stored inside the docker containers. Please refer to docker docs to find out how to browse inside the docker container. You should never have to do that for normal operation though.

Probably best to disable all of those, but the HDD likely won’t get a chance to go to sleep anyway. Recycle bin is useless for storj, it manages a trash folder itself for when it’s needed. Write cache kind of depends on your setup. It’s generally safer to disable, but if you have a UPS the increased performance can help. However, having a UPS that doesn’t shut down the system kind of defeats the purpose, it just postpones the unsafe shutdown. You risk corruption of the node db’s if you use write cash and cut power.

I would recommend against this as docker updates have let to problems in the past on Synology. Additionally the shutdown for update won’t use the -t 300 parameter and could force kill the running node leading to db corruption. Before you update docker, have a look around in the forums to see if anyone has had any problems with the new version. You can even start a post to ask for it if no one else has yet (but please use search first, we don’t need several posts for the same thing). DSM updates are generally safer, but I recommend not doing them automatically either and manually stop the node before installing. I recommend against installing beta versions of DSM.

While some of these questions may have been kind of new, at least half have been asked and answered frequently. Often by the same people who keep answering them over and over. Please be respectful of peoples time. You’re the one asking for help, you shouldn’t expect others to spend the time if you don’t yourself.

That’s why we should push for the documentation to be actually complete, not just an entry-level tutorial for the simplest case.

Thanks BS, this is very helpful!
I apologize for bad choise of words and for this long post, I didn’t try to sound disrespectful, I was just telling my pain :)). I wanted to gather all the problems that I encountered running my first Docker node in a sigle post, for any newbie like me interested. The last week was the longest time I used a linux terminal in my life, reading stuff and input various commands to understand what’s going on and why the update dosen’t work. All this time all was working good :))
Thanks to all Storj developers for making and mantaining thease great services and I’m proud to be a part of SNO community!

5 Likes

For Docker, where should I put the “–log.level=error” parameter in the run command? Is this ok?

docker run -d --restart unless-stopped --stop-timeout 300
-p 28967:28967/tcp
-p 28967:28967/udp
-p 14002:14002
-e WALLET=“xxxxxxxxxxx”
-e EMAIL=“xxxxxxxxxxxxx”
-e ADDRESS=“xxx.xxx.xxx.xxx:28967”
-e STORAGE=“xTB”
–mount type=bind,source="/volume1/Storj/Identity/storagenode/",destination=/app/identity
–mount type=bind,source="/volume1/Storj/",destination=/app/config
–name storagenode storjlabs/storagenode:latest
–operator.wallet-features=zksync
–log.level=error

Yes, it would be ok. I hope you uses -- instead of and " instead of and

Yes. That was copy-pasted from Office, but my original txt file is correctly formated. I just discovered how to post code :slight_smile:

docker run -d --restart unless-stopped --stop-timeout 300 \
    -p 28967:28967/tcp \
    -p 28967:28967/udp \
    -p 14002:14002 \
    -e WALLET="xxxxxxxxxxxxxxxxxxxxxxxxx" \
    -e EMAIL="xxxxxx@xxx.xxx" \
    -e ADDRESS="xxx.xxx.xxx.xxx:28967" \
    -e STORAGE="xxTB" \
    --mount type=bind,source="/volume1/Storj/Identity/storagenode/",destination=/app/identity \
    --mount type=bind,source="/volume1/Storj/",destination=/app/config \
    --name storagenode storjlabs/storagenode:latest \
    --operator.wallet-features=zksync \
    --log.level=error