Multinode docker 2024 howto

I decided to run the multinode dashboard to get a clearer picture of my storagenodes.

So here is the howto :slight_smile:

Make a multinode dashboard

First, this is linux I don’t understand windows, so make a folder for multinode.

mkdir -p /multinode/identity

and make config folder too.

Create an identity the usual way (but for an easier size if you want to and no need to sign)

Put the identity files in /multinode/identity/

Now run the docker multinode

 docker run -d --restart unless-stopped -p 15002:15002 --mount type=bind,source="/multinode/identity",destination=/app/identity --mount type=bind,source="/multinode/config",destination=/app/config --name multinode storjlabs/multinode:latest

You will end up with something like this :

root@hp8300:/multinode# find /multinode/
/multinode/
/multinode/identity
/multinode/identity/identity.cert
/multinode/identity/ca.cert
/multinode/identity/ca.key
/multinode/identity/identity.key
/multinode/config
/multinode/config/master.db
/multinode/config/master.db-shm
/multinode/config/config.yaml
/multinode/config/master.db-wal
/multinode/multinode      <-   optional

It will not work yet and if you check the logs it will be complaining about ./identity.cert

Edit the /multinode/config/config.yaml file

# path to the certificate chain for this identity
identity.cert-path: identity/identity.cert

# path to the private key for this identity
identity.key-path: identity/identity.key

so that it can find the cert. (Or move the certs to where it is looking for them)
docker restart multinode

Add your storagenodes

To get an api key you need to run this command for your node

docker exec -it storagenode6 /app/storagenode issue-apikey --config-dir config --identity-dir identity

In this case storagenode6 is the name of the docker container got from “docker ps”. The other parameters do not need modifying (unless you do). If you have badger cache enabled then briefly edit the node’s config.yaml to disable badger cache. You do not need to restart the storagenode. We are disabling badger cache in the issue-apikey run.

If it works it will print something like 6q5ZN_FAcuPbd53zTUvPGX_XryGLZoOxBkUOj4uT54=

Then add the node in the multinode dashboard, which will be on port 15002. The three things it asks for are

  1. The node ID which you can get from the storagenode dashboard
  2. The ip:port where the node can be contacted. Note, this is the port where the satellite would contact you node and probably the local network ip of your storagenode, not the dashboard port 14002. So for me it is 192.168.1.130:10006
  3. The api key you got above

If you extract the multinode executable from the docker image and place it in /multinode you can add nodes on the command line

root@hp8300:/multinode# ./multinode --config-dir config --node-id oierylsebglsuhnFFHFFFFFGFHHHJHJ  --api-secret liSoRl8Nk-Xuqf9mPpiBRZfSYTaixJ6JSjo= --public-address 192.168.1.130:10003 add
2024-08-20T08:51:30+01:00       INFO    process/exec_conf.go:318        Configuration loaded    {"Location": "/multinode/config/config.ya
2024-08-20T08:51:30+01:00       INFO    process/tracing.go:73   Anonymized tracing enabled
2024-08-20T08:51:30+01:00       DEBUG   tracing collector       monkit-jaeger@v0.0.0-20240221095020-52b0792fa6cd/thrift.go:149  started
2024-08-20T08:51:30+01:00       DEBUG   db      multinodedb/database.go:72      Connected to:   {"db source": "file:config/master.db?_jou&_busy_timeout=10000"}
2024-08-20T08:51:30+01:00       DEBUG   tracing collector       monkit-jaeger@v0.0.0-20240221095020-52b0792fa6cd/thrift.go:206  stopped

And finally see the overall picture of the “uncollected garbage” and undeleted trash

7 Likes

You may also use info instead of issue-apikey, it will print also a NodeID. It should print an external address too, but for docker it’s overridden with the environment variable, thus missing in the output.

What was missing in current FAQ?