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

but is the stack example still valid?

Nothing else has changed so you can set it up.

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

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

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 .

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.

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.