KISS - keep it simple stupid.
Find somewhere on boot drive, or outside mergefs. No network fs is supported.
Hashstore may still give you issues, and you may have to move the hashtables off mergefs as well.
KISS - keep it simple stupid.
Find somewhere on boot drive, or outside mergefs. No network fs is supported.
Hashstore may still give you issues, and you may have to move the hashtables off mergefs as well.
Please avoid using of mergefs, with one disk dying you will lose the whole node. Seems the node is not compatible with it anyway.
SMB is not supported too: smb and NFS as well: nfs exactly for the same reasons, they are not fully comparable with a normal local filesystem. As you may guess, storagenode doesnāt support any network or combined filesystems.
@RecklessD is correct, you need to avoid using any network filesystems, mergefs, etc., otherwise you will have issues with hashstore anyway.
root@bo-omv:/mnt/storj/Identity# sudo docker logs --tail 40 storagenode1
2025-10-30T08:31:30Z FATAL Error loading identity. {"Process": "storagenode-updater", "error": "failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"", "errorVerbose": "failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"\n\tstorj.io/common/identity.Config.Load:334\n\tmain.cmdRun:111\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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\tstorj.io/common/process.ExecWithCustomConfigAndLogger:80\n\tmain.main:22\n\truntime.main:283"}
2025-10-30 08:31:30,257 WARN exited: storagenode-updater (exit status 1; not expected)
2025-10-30T08:31:30Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T08:31:30Z ERROR failure during run {"Process": "storagenode", "error": "Failed to load identity: failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"\n\tstorj.io/common/identity.Config.Load:334\n\tmain.cmdRun:56\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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": "Failed to load identity: failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"\n\tstorj.io/common/identity.Config.Load:334\n\tmain.cmdRun:56\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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:58\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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: Failed to load identity: failed to load identity "identity/identity.cert", "identity/identity.key": unable to parse: can not parse private key from PEM block labeled "CERTIFICATE"
storj.io/common/identity.Config.Load:334
main.cmdRun:56
main.newRunCmd.func1:33
storj.io/common/process.cleanup.func1.2:388
storj.io/common/process.cleanup.func1:406
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-30 08:31:30,302 WARN exited: storagenode (exit status 1; not expected)
2025-10-30 08:31:33,308 INFO spawned: 'storagenode' with pid 109
2025-10-30 08:31:33,311 INFO spawned: 'storagenode-updater' with pid 110
2025-10-30T08:31:33Z INFO Anonymized tracing enabled {"Process": "storagenode-updater"}
2025-10-30T08:31:33Z FATAL Error loading identity. {"Process": "storagenode-updater", "error": "failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"", "errorVerbose": "failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"\n\tstorj.io/common/identity.Config.Load:334\n\tmain.cmdRun:111\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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\tstorj.io/common/process.ExecWithCustomConfigAndLogger:80\n\tmain.main:22\n\truntime.main:283"}
2025-10-30 08:31:33,344 WARN exited: storagenode-updater (exit status 1; not expected)
2025-10-30T08:31:33Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30 08:31:33,376 INFO gave up: storagenode-updater entered FATAL state, too many start retries too quickly
2025-10-30T08:31:33Z ERROR failure during run {"Process": "storagenode", "error": "Failed to load identity: failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"\n\tstorj.io/common/identity.Config.Load:334\n\tmain.cmdRun:56\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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": "Failed to load identity: failed to load identity \"identity/identity.cert\", \"identity/identity.key\": unable to parse: can not parse private key from PEM block labeled \"CERTIFICATE\"\n\tstorj.io/common/identity.Config.Load:334\n\tmain.cmdRun:56\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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:58\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.2:388\n\tstorj.io/common/process.cleanup.func1:406\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: Failed to load identity: failed to load identity "identity/identity.cert", "identity/identity.key": unable to parse: can not parse private key from PEM block labeled "CERTIFICATE"
storj.io/common/identity.Config.Load:334
main.cmdRun:56
main.newRunCmd.func1:33
storj.io/common/process.cleanup.func1.2:388
storj.io/common/process.cleanup.func1:406
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-30 08:31:33,380 WARN exited: storagenode (exit status 1; not expected)
2025-10-30 08:31:33,380 WARN received SIGQUIT indicating exit request
2025-10-30 08:31:33,380 INFO waiting for processes-exit-eventlistener, storagenode to die
root@bo-omv:/mnt/storj/Identity#
so i found a drive that i could mount locally, just to get it going and to test the stack/compose file
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: /mnt/storj/Identity
target: /app/identity
- type: bind
source: /mnt/storj/Storage
target: /app/config
environment:
- WALLET=****
- EMAIL=****
- ADDRESS=****
- STORAGE=2TB
the files are there
root@bo-omv:/mnt/storj/Identity# ls
identity.cert identity.key
root@bo-omv:/mnt/storj/Identity#
EDIT: trying to create ident againā¦. just to see if it makes a differenceEDIT2: progress i think, db is locked
root@bo-omv:/mnt/storj# sudo docker logs --tail 40 storagenode1
2025-10-30T08:59:50Z INFO Running on version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T08:59:50Z INFO Downloading versions. {"Process": "storagenode-updater", "Server Address": "https://version.storj.io"}
2025-10-30T08:59:50Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T08:59:50Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T08:59:50Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T08:59:50Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30T08:59:51Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode", "Version": "v1.139.6"}
2025-10-30T08:59:51Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode"}
2025-10-30T08:59:51Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T08:59:51Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode-updater"}
2025-10-30 08:59:52,264 INFO success: processes-exit-eventlistener entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 08:59:52,264 INFO success: storagenode entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 08:59:52,264 INFO success: storagenode-updater entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30T09:00:00Z ERROR failure during run {"Process": "storagenode", "error": "Error opening database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337\n\tstorj.io/storj/storagenode/storagenodedb.OpenExisting:302\n\tmain.cmdRun:67\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 database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337\n\tstorj.io/storj/storagenode/storagenodedb.OpenExisting:302\n\tmain.cmdRun:67\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: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: database: info opening file "config/storage/info.db" failed: database is locked
storj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390
storj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362
storj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337
storj.io/storj/storagenode/storagenodedb.OpenExisting:302
main.cmdRun:67
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-30 09:00:00,856 WARN exited: storagenode (exit status 1; not expected)
2025-10-30 09:00:01,860 INFO spawned: 'storagenode' with pid 104
2025-10-30 09:00:01,861 WARN received SIGQUIT indicating exit request
2025-10-30 09:00:01,861 INFO waiting for processes-exit-eventlistener, storagenode, storagenode-updater to die
2025-10-30T09:00:01Z INFO Got a signal from the OS: "terminated" {"Process": "storagenode-updater"}
2025-10-30 09:00:01,864 INFO stopped: storagenode-updater (exit status 0)
2025-10-30T09:00:01Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T09:00:01Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T09:00:01Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T09:00:01Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30 09:00:04,932 INFO waiting for processes-exit-eventlistener, storagenode to die
root@bo-omv:/mnt/storj#
now it seems to run fine, i just waited a bit longer
but still no web dashboard
root@bo-omv:/mnt/storj# sudo docker logs --tail 40 storagenode1
2025-10-30T09:04:36Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T09:04:36Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T09:04:36Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30 09:04:39,485 INFO waiting for processes-exit-eventlistener, storagenode to die
2025-10-30 09:04:42,489 INFO waiting for processes-exit-eventlistener, storagenode to die
2025-10-30 09:04:45,493 INFO waiting for processes-exit-eventlistener, storagenode to die
2025-10-30 09:04:46,494 WARN killing 'storagenode' (100) with SIGKILL
2025-10-30 09:04:46,500 WARN stopped: storagenode (terminated by SIGKILL)
2025-10-30 09:04:46,501 WARN stopped: processes-exit-eventlistener (terminated by SIGTERM)
2025-10-30 09:04:49,835 INFO Set uid to user 0 succeeded
2025-10-30 09:04:49,838 INFO RPC interface 'supervisor' initialized
2025-10-30 09:04:49,838 INFO supervisord started with pid 1
2025-10-30 09:04:50,841 INFO spawned: 'processes-exit-eventlistener' with pid 63
2025-10-30 09:04:50,843 INFO spawned: 'storagenode' with pid 64
2025-10-30 09:04:50,845 INFO spawned: 'storagenode-updater' with pid 65
2025-10-30T09:04:50Z INFO Configuration loaded {"Process": "storagenode-updater", "Location": "/app/config/config.yaml"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "storage.allocated-disk-space"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "healthcheck.enabled"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "console.address"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "operator.wallet"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "contact.external-address"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "operator.wallet-features"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "server.address"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "server.private-address"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "operator.email"}
2025-10-30T09:04:50Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "healthcheck.details"}
2025-10-30T09:04:50Z INFO Anonymized tracing enabled {"Process": "storagenode-updater"}
2025-10-30T09:04:50Z INFO Running on version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T09:04:50Z INFO Downloading versions. {"Process": "storagenode-updater", "Server Address": "https://version.storj.io"}
2025-10-30T09:04:50Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T09:04:50Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T09:04:50Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T09:04:50Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30T09:04:51Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode", "Version": "v1.139.6"}
2025-10-30T09:04:51Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode"}
2025-10-30T09:04:51Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T09:04:51Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode-updater"}
2025-10-30 09:04:52,338 INFO success: processes-exit-eventlistener entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 09:04:52,338 INFO success: storagenode entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 09:04:52,338 INFO success: storagenode-updater entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
of course some invalid keys⦠but then either my stack/compose file is wrong or it does not read from it???
Should be a bunch more logs after that.
Console would be http://192.168.0.163:14002
no console
root@bo-omv:/mnt/storj/Storage# sudo docker logs --tail 40 storagenode1
2025-10-30T09:16:38Z INFO Downloading versions. {"Process": "storagenode-updater", "Server Address": "https://version.storj.io"}
2025-10-30T09:16:38Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T09:16:38Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T09:16:38Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T09:16:38Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30T09:16:38Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode", "Version": "v1.139.6"}
2025-10-30T09:16:38Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode"}
2025-10-30T09:16:38Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T09:16:38Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode-updater"}
2025-10-30 09:16:39,734 INFO success: processes-exit-eventlistener entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 09:16:39,734 INFO success: storagenode entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 09:16:39,734 INFO success: storagenode-updater entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30T09:16:48Z ERROR failure during run {"Process": "storagenode", "error": "Error opening database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337\n\tstorj.io/storj/storagenode/storagenodedb.OpenExisting:302\n\tmain.cmdRun:67\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 database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337\n\tstorj.io/storj/storagenode/storagenodedb.OpenExisting:302\n\tmain.cmdRun:67\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: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: database: info opening file "config/storage/info.db" failed: database is locked
storj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390
storj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362
storj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337
storj.io/storj/storagenode/storagenodedb.OpenExisting:302
main.cmdRun:67
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-30 09:16:48,336 WARN exited: storagenode (exit status 1; not expected)
2025-10-30 09:16:49,340 INFO spawned: 'storagenode' with pid 100
2025-10-30 09:16:49,341 WARN received SIGQUIT indicating exit request
2025-10-30 09:16:49,342 INFO waiting for processes-exit-eventlistener, storagenode, storagenode-updater to die
2025-10-30T09:16:49Z INFO Got a signal from the OS: "terminated" {"Process": "storagenode-updater"}
2025-10-30 09:16:49,345 INFO stopped: storagenode-updater (exit status 0)
2025-10-30T09:16:49Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T09:16:49Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T09:16:49Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T09:16:49Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30 09:16:52,420 INFO waiting for processes-exit-eventlistener, storagenode to die
2025-10-30 09:16:55,424 INFO waiting for processes-exit-eventlistener, storagenode to die
seems db is locked again?
EDIT: now its back to ārunning stateā
EDIT2: so it switches between the 2 logs i providedā¦. are there better ways to get logs than doing: docker logs --tail 40 storagenode1 ?
EDIT3: for fun i looked in the yaml file
server address of the api gateway and frontend app
console.address: 0.0.0.0:14002
funny enough contact.external-address: is set correctly to the correct ip
will try and correct the console address
EDIT4: nope⦠still no console, and it jumps between running state and DB locked
console will be on localhost:14002, to use it externaly you need to config your ip addres in config
you did look at my compose file right? or am i doing it wrong?
and as i wrote i tried to correct the yaml file with no luck
I set (in config.yaml) - and create config/logs folder - you will need to rotate the log somehow yourself - docker stuff with ādocker logs ā¦ā and storj stuff by ātail -f /mnt/your/storjpath/config/logs/storjnode.logā :
config.yaml:
log.output: /app/config/logs/storjnode.log
The config.yaml is created when run with SETUP=true using values from command line and environment.
Console is not visible, because its still crashing due to databases. Permissions again?
for fun i started over with deleting everything in storage folder and running with setup option
root@bo-omv:/mnt/storj/Storage# docker logs --tail 40 storagenode1
500K .......... .......... .......... .......... .......... 1% 4.45M 12s
550K .......... .......... .......... .......... .......... 1% 2.18M 12s
600K .......... .......... .......... .......... .......... 1% 4.07M 12s
650K .......... .......... .......... .......... .......... 1% 3.89M 12s
700K .......... .......... .......... .......... .......... 1% 3.35M 12s
750K .......... .......... .......... .......... .......... 2% 3.82M 12s
800K .......... .......... .......... .......... .......... 2% 3.65M 11s
850K .......... .......... .......... .......... .......... 2% 3.19M 11s
900K .......... .......... .......... .......... .......... 2% 4.67M 11s
950K .......... .......... .......... .......... .......... 2% 2.51M 11s
1000K .......... .......... .......... .......... .......... 2% 3.71M 11s
1050K .......... .......... .......... .......... .......... 2% 5.02M 11s
1100K .......... .......... .......... .......... .......... 2% 3.98M 11s
1150K .......... .......... .......... .......... .......... 3% 3.19M 11s
1200K .......... .......... .......... .......... .......... 3% 5.18M 11s
1250K .......... .......... .......... .......... .......... 3% 4.08M 11s
1300K .......... .......... .......... .......... .......... 3% 3.28M 11s
1350K .......... .......... .......... .......... .......... 3% 4.71M 11s
1400K .......... .......... .......... .......... .......... 3% 4.08M 11s
1450K .......... .......... .......... .......... .......... 3% 3.30M 11s
1500K .......... .......... .......... .......... .......... 3% 3.79M 11s
1550K .......... .......... .......... .......... .......... 4% 4.81M 10s
1600K .......... .......... .......... .......... .......... 4% 3.75M 10s
1650K .......... .......... .......... .......... .......... 4% 4.14M 10s
1700K .......... .......... .......... .......... .......... 4% 3.80M 10s
1750K .......... .......... .......... .......... .......... 4% 4.39M 10s
1800K .......... .......... .......... .......... .......... 4% 3.56M 10s
1850K .......... .......... .......... .......... .......... 4% 6.12M 10s
1900K .......... .......... .......... .......... .......... 5% 4.73M 10s
1950K .......... .......... .......... .......... .......... 5% 4.22M 10s
root@bo-omv:/mnt/storj/Storage# docker logs --tail 40 storagenode1
2025-10-30 09:56:23 (5.73 MB/s) - '/tmp/storagenode.zip' saved [39558039/39558039]
Running /app/bin/storagenode setup --config-dir config --identity-dir identity --version.server-address=https://version.storj.io --storage.allocated-disk-space=2TB --contact.external-address=****:28967 --operator.email=**** --operator.wallet=****
2025-10-30T09:57:43Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T09:57:43Z INFO Anonymized tracing enabled {"Process": "storagenode"}
Error: storagenode configuration already exists (/app/config)
soo it seems to do this correctlyā¦. but yes i need to rotate logs moreā¦
EDIT: it jumps between
root@bo-omv:/mnt/storj/Storage# docker logs --tail 40 storagenode1
2025-10-30T10:00:16Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "storage.allocated-disk-space"}
2025-10-30T10:00:16Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "server.private-address"}
2025-10-30T10:00:16Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "server.address"}
2025-10-30T10:00:16Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "healthcheck.enabled"}
2025-10-30T10:00:16Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "healthcheck.details"}
2025-10-30T10:00:16Z INFO Invalid configuration file key {"Process": "storagenode-updater", "Key": "operator.wallet"}
2025-10-30T10:00:16Z INFO Anonymized tracing enabled {"Process": "storagenode-updater"}
2025-10-30T10:00:16Z INFO Running on version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T10:00:16Z INFO Downloading versions. {"Process": "storagenode-updater", "Server Address": "https://version.storj.io"}
2025-10-30T10:00:16Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T10:00:16Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T10:00:16Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T10:00:16Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "info"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "bandwidth"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "orders"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "piece_expiration"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "pieceinfo"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "piece_spaced_used"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "reputation"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "storage_usage"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "used_serial"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "satellites"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "notifications"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "heldamount"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "pricing"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "secret"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "garbage_collection_filewalker_progress"}
2025-10-30T10:00:16Z INFO db database does not exist {"Process": "storagenode", "database": "used_space_per_prefix"}
2025-10-30T10:00:16Z INFO server kernel support for server-side tcp fast open remains disabled. {"Process": "storagenode"}
2025-10-30T10:00:16Z INFO server enable with: sysctl -w net.ipv4.tcp_fastopen=3 {"Process": "storagenode"}
2025-10-30T10:00:16Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode", "Version": "v1.139.6"}
2025-10-30T10:00:16Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode"}
2025-10-30T10:00:16Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T10:00:16Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode-updater"}
2025-10-30T10:00:17Z INFO Telemetry enabled {"Process": "storagenode", "instance ID": "14VL5gehjW4KB314meez4UKRQVh8v79Migd8VTp4jqX2s7efLA"}
2025-10-30T10:00:17Z INFO Event collection enabled {"Process": "storagenode", "instance ID": "14VL5gehjW4KB314meez4UKRQVh8v79Migd8VTp4jqX2s7efLA"}
2025-10-30 10:00:18,132 INFO success: processes-exit-eventlistener entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 10:00:18,132 INFO success: storagenode entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 10:00:18,132 INFO success: storagenode-updater entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
and
root@bo-omv:/mnt/storj/Storage# docker logs --tail 40 storagenode1
2025-10-30T10:01:32Z INFO Anonymized tracing enabled {"Process": "storagenode-updater"}
2025-10-30T10:01:32Z INFO Running on version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T10:01:32Z INFO Downloading versions. {"Process": "storagenode-updater", "Server Address": "https://version.storj.io"}
2025-10-30T10:01:32Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T10:01:32Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T10:01:32Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T10:01:32Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
2025-10-30T10:01:32Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode", "Version": "v1.139.6"}
2025-10-30T10:01:32Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode"}
2025-10-30T10:01:32Z INFO Current binary version {"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.139.6"}
2025-10-30T10:01:32Z INFO Version is up to date {"Process": "storagenode-updater", "Service": "storagenode-updater"}
2025-10-30 10:01:33,784 INFO success: processes-exit-eventlistener entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 10:01:33,784 INFO success: storagenode entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30 10:01:33,784 INFO success: storagenode-updater entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-10-30T10:01:42Z ERROR failure during run {"Process": "storagenode", "error": "Error opening database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337\n\tstorj.io/storj/storagenode/storagenodedb.OpenExisting:302\n\tmain.cmdRun:67\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 database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362\n\tstorj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337\n\tstorj.io/storj/storagenode/storagenodedb.OpenExisting:302\n\tmain.cmdRun:67\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: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: database: info opening file "config/storage/info.db" failed: database is locked
storj.io/storj/storagenode/storagenodedb.(*DB).openDatabaseWithStat:390
storj.io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:362
storj.io/storj/storagenode/storagenodedb.(*DB).openDatabases:337
storj.io/storj/storagenode/storagenodedb.OpenExisting:302
main.cmdRun:67
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-30 10:01:42,385 WARN exited: storagenode (exit status 1; not expected)
2025-10-30 10:01:43,389 INFO spawned: 'storagenode' with pid 102
2025-10-30 10:01:43,390 WARN received SIGQUIT indicating exit request
2025-10-30 10:01:43,390 INFO waiting for processes-exit-eventlistener, storagenode, storagenode-updater to die
2025-10-30T10:01:43Z INFO Got a signal from the OS: "terminated" {"Process": "storagenode-updater"}
2025-10-30 10:01:43,394 INFO stopped: storagenode-updater (exit status 0)
2025-10-30T10:01:43Z INFO Configuration loaded {"Process": "storagenode", "Location": "/app/config/config.yaml"}
2025-10-30T10:01:43Z INFO Anonymized tracing enabled {"Process": "storagenode"}
2025-10-30T10:01:43Z INFO Operator email {"Process": "storagenode", "Address": "****"}
2025-10-30T10:01:43Z INFO Operator wallet {"Process": "storagenode", "Address": "****"}
Error: Error opening database on storagenode: database: info opening file āconfig/storage/info.dbā failed: database is locked
so yeah could call it permission as its locked
will add that to config yaml, but would be nice to have it in the compose file so i dont have to edit yaml if i start over again
EDIT2:
2025-10-30T10:12:49Z ERROR failure during run {"Process": "storagenode", "error": "Error opening database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/stor>
2025-10-30T10:12:49Z FATAL Unrecoverable error {"Process": "storagenode", "error": "Error opening database on storagenode: database: info opening file \"config/storage/info.db\" failed: database is locked\n\tstorj.io/storj/stor>
so yes locked⦠but why
What filesystem are we on now? What the result of this:
df -T /mnt/storj/Storage
i should be dragged out behind a shed and be beaten up just a tiny bit
i forgot that i did a trick that used to work last time i was a node
share the disk over smb and then on a pi mount that share
i set that up before bed time and then forgot all about it⦠so yeah, i need to fix that first
sorry ![]()
root@bo-omv:/mnt/sde1# df -T /mnt/sde1/
Filsystem Type 1K-blokke Brugt Tilbage Brug% Monteret pƄ
/dev/sde1 ext4 3844588820 1905676304 1938896132 50% /mnt/sde1
currently offloading a lot of files so i can dedicate more space to storj
nice time for a lunch break and some ābrain idleā time
that helped
but not quite right

compose file as it is now
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: /mnt/sde1/Storj/Identity/
target: /app/identity
- type: bind
source: /mnt/sde1/Storj/Storage/
target: /app/config
environment:
- WALLET=****
- EMAIL=****
- ADDRESS=****:28967
- STORAGE=2TB
portforward in router
![]()
node id: 14VL5gehjW4KB314meez4UKRQVh8v79Migd8VTp4jqX2s7efLA
(for the admins if they can give a hint as to what is wrong)
Change to:
ports:
- "28967:28967/tcp"
- "28967:28967/udp"
- "14002:14002/tcp"
there are no change in the first 2?
and the last one has to include the local ip or else the web interface is not there
but will try
edit:
like this:
ports:
No. 28967:28967/xxx
You are port Forwarding 28967 not 28969, server ADDRESS is set to 28967.
corrected, free laughs on me
version: "3.7"
services:
storagenode1:
container_name: storagenode1
restart: always
stop_grace_period: 300s
image: storjlabs/storagenode:latest
ports:
- "28967:28967/tcp"
- "28967:28967/udp"
- "14002:14002/tcp"
volumes:
- type: bind
source: /mnt/sde1/Storj/Identity/
target: /app/identity
- type: bind
source: /mnt/sde1/Storj/Storage/
target: /app/config
environment:
- WALLET=****
- EMAIL=****
- ADDRESS=****:28967
- STORAGE=2TB
EDITā¦. still no go
EDIT2: yep the satelittes cant connect
2025-10-30T13:01:48Z ERROR contact:service ping satellite failed {"Process": "storagenode", "Satellite ID": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs", "attempts": 1, "error": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp ****:28967: connect: connection timed out", "errorVerbose": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: dial tcp ****:28967: connect: connection timed out\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:232\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:169\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:89\n\tstorj.io/common/sync2.(*Cycle).Run:102\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:93"}
EDIT3:
port forward in router
![]()
whatismyip.com reports the same ip as set in external address
no firewall set
EDIT4:
something must be blocking access from the outsideā¦. i have fired an email to my ISP that has just setup my static ip⦠ssh does not work either
the machine also has a tailscale (vpn ip) and here everything works fine
ISP replied back that they made a āboobooā in the config on their side
will test again in a bit, but ssh now works

soā¦. to sum up this, and a warning to the next new guy:
Dont use anything other than a direct connected drive, if you once could trick it by sharing a drive or array over smb and then mount that - it will no longer work
i was a fool and forgot about mergerfs⦠then i late and 5 min before bed remembered that i did the share over smb trick last yearā¦. forgot all about it and when i got up i assumed it would just work, no sirā¦. times changes
once that was out of the way, it would not connectā¦. recheck after recheckā¦. ISP replied that they made a fāup in the config on their side⦠now it seems to work as it should