Back but have some Q's

https://forum.storj.io/t/node-config-yaml-variables-not-working-properly/22261: is the stack example still valid after these years?

wanted to get back in to storj as a public node and wanted to use portainer as i love GUI’s more than anything else

EDIT: currently at step 4 Step 4. Create an Identity - Storj Docs

i remember that once the ident have been created it also has to be “authorized” but the guide does not say how

EDIT 2: ahh…

./identity create storagenode --identity-dir /mnt/storj/identity

./identity authorize storagenode --identity-dir /mnt/storj/identity email@ email. com:

where the auth token is pasted after the colon.. so still need to get a token

EDIT3: that step was removed it seems to: https:// storj . dev/node/get-started/auth-token

1 Like

but is the stack example still valid?

Nothing else has changed so you can set it up.

1 Like

oki… i just spent 5 min to adjust it, can anyone spot any errors?

version: "3.7"
services:
  storagenode1:
    container_name: storagenode1
    restart: always
    stop_grace_period: 300s
    image: storjlabs/storagenode:latest
    ports:
      - "28969:28967/tcp"
      - "28969:28967/udp"
      - "192.168.0.163:14002:14002"
    volumes:
      - type: bind
        source: /srv/mergerfs/Data/Storj/Identity
        target: /app/identity
      - type: bind
        source: /srv/mergerfs/Data/Storj/Storage
        target: /app/config
    environment:
      - WALLET=****
      - EMAIL=****
      - ADDRESS=****
      - STORAGE=1TB
    command:
      - "--operator.wallet-features=zksync"
      - "--console.address: 14002"


what are the last 2 lines? i did not see them last time i was an storage node

EDIT: i guess --console.address is a double confetti since i also spec under ports?

EDIT2: could i in fact just remove the last 3 lines? i only need to access the small dashboard locally (the whole local network)

i tried to deplay it in portainer….

it says its running

{1816C6AC-D99B-469A-B3AA-799C95E397DD}

but no access to the dashboard:

Det kan godt være at den kører, men hvis den hele tiden genstarter, så vil den også stå i status “running”.

Hvad siger dine logs, hvis du filtrerer efter WARNog højere?

/srv/mergerfs/Data/Storj/Storage

it has only created one folder named: bin with 2 files in it, storagenode og storagenode-updater

root@bo-omv:/srv/mergerfs/Data/Storj# sudo docker logs --tail 20 storagenode1
Error: Error opening database on storagenode: group:
--- stat config/storage/blobs: no such file or directory
--- stat config/storage/temp: no such file or directory
--- stat config/storage/trash: no such file or directory
2025-10-28 23:12:19,466 WARN exited: storagenode (exit status 1; not expected)
2025-10-28 23:12:20,470 INFO spawned: 'storagenode' with pid 133
2025-10-28 23:12:20,470 WARN received SIGQUIT indicating exit request
2025-10-28 23:12:20,471 INFO waiting for processes-exit-eventlistener, storagenode, storagenode-updater to die
2025-10-28T23:12:20Z    INFO    Got a signal from the OS: "terminated"  {"Process": "storagenode-updater"}
2025-10-28 23:12:20,475 INFO stopped: storagenode-updater (exit status 0)
2025-10-28T23:12:20Z    INFO    Anonymized tracing enabled      {"Process": "storagenode"}
2025-10-28T23:12:20Z    INFO    Operator email  {"Process": "storagenode", "Address": "****"}
2025-10-28T23:12:20Z    INFO    Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-28T23:12:20Z    ERROR   failure during run      {"Process": "storagenode", "error": "Error opening database on storagenode: group:\n--- stat config/storage/blobs: no such file or directory\n--- stat config/storage/temp: no such file or directory\n--- stat config/storage/trash: no such file or directory", "errorVerbose": "Error opening database on storagenode: group:\n--- stat config/storage/blobs: no such file or directory\n--- stat config/storage/temp: no such file or directory\n--- stat config/storage/trash: no such file or directory\n\tmain.cmdRun:69\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"}
Error: Error opening database on storagenode: group:
--- stat config/storage/blobs: no such file or directory
--- stat config/storage/temp: no such file or directory
--- stat config/storage/trash: no such file or directory
2025-10-28 23:12:20,547 WARN stopped: storagenode (exit status 1)
2025-10-28 23:12:20,547 WARN stopped: processes-exit-eventlistener (terminated by SIGTERM)

so yeah some missing folders…. but should it not just create them?

drwxrwsr-x+ 4 root users 4096 28 okt 21:45 Storj

so either the stack file i provided above has a “minor” f’up in it or the folder i use for storj does not have the correct permissions… i’m just a tad to noob’ish to figure out what

1 Like

For the first run add SETUP=true to environment. This will create folders. Then restart node without SETUP instruction.

2 Likes

what about folder permissions?

Looks like your running as root, so file permissions should not be an issue.

You need to run with SETUP=true to create folder structure. If it has created config.yaml in your storage directory, remove before running with SETUP=true .

1 Like

This is invalid format:

It should be either removed, or you need to fix it to be

      - "--console.address=:14002"

However, it’s a default value, so you do not need to specify it explicitly, unless you want to change it.

Yes, especially if you do not want to opt-in for zkSync. If you want it should be zksync-era (zkSync Era) instead of zksync, because zkSync Lite (zksync) is not supported anymore, and will be defaulted to Ethereum if you leave it as is.

1 Like

did that

i run it from portainer and the stack editor does not say what user it runs as, the below pic is before i drop the stack file above

last 40 lines of log:

root@bo-omv:~# sudo docker logs --tail 40 storagenode1
2025-10-29T06:16:05Z    INFO    Operator email  {"Process": "storagenode", "Address": "****"}
2025-10-29T06:16:05Z    INFO    Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "info"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "bandwidth"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "orders"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "piece_expiration"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "pieceinfo"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "piece_spaced_used"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "reputation"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "storage_usage"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "used_serial"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "satellites"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "notifications"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "heldamount"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "pricing"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "secret"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "garbage_collection_filewalker_progress"}
2025-10-29T06:16:05Z    INFO    db      database does not exist {"Process": "storagenode", "database": "used_space_per_prefix"}
2025-10-29T06:16:05Z    ERROR   failure during run      {"Process": "storagenode", "error": "Error opening revocation database: revocation database: boltdb: no such device\n\tstorj.io/storj/private/kvstore/boltdb.New:43\n\tstorj.io/storj/private/revocation.openDBBolt:52\n\tstorj.io/storj/private/revocation.OpenDB:35\n\tstorj.io/storj/private/revocation.OpenDBFromCfg:23\n\tmain.cmdRun:76\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", "errorVerbose": "Error opening revocation database: revocation database: boltdb: no such device\n\tstorj.io/storj/private/kvstore/boltdb.New:43\n\tstorj.io/storj/private/revocation.openDBBolt:52\n\tstorj.io/storj/private/revocation.OpenDB:35\n\tstorj.io/storj/private/revocation.OpenDBFromCfg:23\n\tmain.cmdRun:76\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\n\tmain.cmdRun:78\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"}
Error: Error opening revocation database: revocation database: boltdb: no such device
        storj.io/storj/private/kvstore/boltdb.New:43
        storj.io/storj/private/revocation.openDBBolt:52
        storj.io/storj/private/revocation.OpenDB:35
        storj.io/storj/private/revocation.OpenDBFromCfg:23
        main.cmdRun:76
        main.newRunCmd.func1:33
        storj.io/common/process.InitBeforeExecute.func1.2:389
        storj.io/common/process.InitBeforeExecute.func1:407
        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:115
        main.main:34
        runtime.main:283
2025-10-29 06:16:05,539 WARN exited: storagenode (exit status 1; not expected)
2025-10-29 06:16:06,541 INFO gave up: storagenode entered FATAL state, too many start retries too quickly
2025-10-29 06:16:08,544 WARN received SIGQUIT indicating exit request
2025-10-29 06:16:08,544 INFO waiting for processes-exit-eventlistener, storagenode-updater to die
2025-10-29T06:16:08Z    INFO    Got a signal from the OS: "terminated"  {"Process": "storagenode-updater"}
2025-10-29 06:16:08,547 INFO stopped: storagenode-updater (exit status 0)

it has creacted the db file thou

root@bo-omv:/srv/mergerfs/Data/Storj/Storage# ls
bin  config.yaml  revocations.db  storage
root@bo-omv:/srv/mergerfs/Data/Storj/Storage#

Have you set these as valid entries in docker compose file?

yes, but it would be stupid to post them, email i would just get more spam mail than i allready do… so yeah just to protect myselfcurrent version:

version: "3.7"
services:
  storagenode1:
    container_name: storagenode1
    restart: always
    stop_grace_period: 300s
    image: storjlabs/storagenode:latest
    ports:
      - "28969:28967/tcp"
      - "28969:28967/udp"
      - "****"
    volumes:
      - type: bind
        source: /srv/mergerfs/Data/Storj/Identity/
        target: /app/identity
      - type: bind
        source: /srv/mergerfs/Data/Storj/Storage/
        target: /app/config
    environment:
      - WALLET=****
      - EMAIL=****
      - ADDRESS=****
      - STORAGE=2TB

Docker compose looks good.

Show the results of

ls -l /srv/mergerfs/Data/Storj/Storage

It maybe user permissions, but don’t think so, since it created the database.

root@bo-omv:/srv/mergerfs/Data/Storj/Storage# ls -l /srv/mergerfs/Data/Storj/Storage
totalt 40
drwxrwsrwx+ 2 root users  4096 29 okt 01:09 bin
-rw-------+ 1 root users 15286 29 okt 01:09 config.yaml
-rw-------+ 1 root users 16384 29 okt 01:10 revocations.db
drwx--S---+ 5 root users  4096 29 okt 01:09 storage
root@bo-omv:/srv/mergerfs/Data/Storj/Storage#

btw, if i do not respond its because new posters are limited on how many replies they can do to a thread.. even if they started it. Yesterday i had to wait 24 hours and i could not reply before 17:00 today

Well, it looks like user/file permissions. I don’t know portainer, so I am hesitant to recommend a fix.