Migrated from Windows to Docker and getting errors

I’m migrating from Windows to Docker (Ubuntu) using Portainer and having some issues starting up the instance.

I’ve copied all storage contents from D:\Storj on my Windows Server to /data/storj on my Docker-Ubuntu Host (which is actually an NFS mount point)

I’ve copied all contents of %APPDATA%\Storj\Identity\storagenode to /home/user/Storj/identity

I have two mount point volumes on the Storj container:

Container: /app/identity
Host: /home/user/Storj/identity

Container: /app/config
Host: /data/storj

I’ve added environment variables for WALLET, EMAL, ADDRESS, STORAGE, and also passed through PGID and PUID just in case.

When I try to start up the container I get the following in the logs:

2021-07-19T15:47:33.807Z INFO Operator email {“Address”: “[email address]”}
2021-07-19T15:47:33.807Z INFO Operator wallet {“Address”: “[wallet address]”}
Error: Error starting master database on storagenode: database: locking protocol
storj,io/storj/storagenode/storagenodedb.(*DB).openDatabase:323
storj,io/storj/storagenode/storagenodedb.(*DB).openExistingDatabase:305
storj,io/storj/storagenode/storagenodedb.(*DB).openDatabases:281
storj,io/storj/storagenode/storagenodedb.OpenExisting:248
main.cmdRun:160
storj,io/private/process.cleanup.func1.4:363
storj,io/private/process.cleanup.func1:381
github,com/spf13/cobra.(*Command).execute:852
github,com/spf13/cobra.(*Command).ExecuteC:960
github,com/spf13/cobra.(*Command).Execute:897
storj,io/private/process.ExecWithCustomConfig:88
storj,io/private/process.ExecCustomDebug:70
main.main:385
runtime.main:204

*Note I’ve had to replace some “.” in the above log with “,” due to new users not being able to post >2 links.

Any ideas?

Hello @thedelph

Good choice moving to docker, although I’ve never heard of Portainer.

So the bad news is the NFS causes a world of pain with the Database, and isn’t for that reason supported. The locking Protocol error is due to the SQLlite not liking NFS.

I’m assuming you are using NFS as the disks live somewhere else ? If it’s just one disk, and you have the option, moving it into the same server as the Node is easy.

Alternatively, if the disk is in another server / NAS - then ISCSI is supported and works perfectly with Docker and Storj if the disk server supports it.

If you want to give more information on your setup, machines, disks etc then it will help with what options we might be able to offer to make this work.

Thanks CP

1 Like

Thanks for the reply!

I have a single 4 bay server that I’m running Proxmox on.

There is a VM on there running Ubuntu Server with Docker installed. Portainer is being used to manage all containers.

The 4 disks are passed straight through to a VM running Windows Server 2019.

NFS/SMB shares exist on Windows Server 2019 VM to serve data to the docker containers.

Based on what you’ve said I may need to try and add an iSCSI target on the Windows VM just for Storj?

Hello @thedelph ,
Welcome to the forum!

You should copy the content of D:\Storj to /data/storj/storage unless you using Docker for Windows.
The mount will remain the same, as you specified, i.e. --mount type=bind,source=/data/storj/,destination=/app/config

Better to copy to the folder on the disk with data. The identity without data is useless and data without the identity is useless too.

Network filesystems are not supported, include but not limited to NFS and SMB. The only compatible network protocol for storage is iSCSI.
The exception is SMB when the server and the client are both Windows. Heterogenic environments will not work or will produce issues.
See
https://forum.storj.io/tag/nfs
https://forum.storj.io/tag/smb