Library setup failed: ¹: Error: Please check directory permissions

Does anyone know what is going on here?

This is in an unraid docker image

{“fatal”:true,“exit”:true,“status”:12,“pid”:27,“ppid”:20,“error”:“Library setup failed: ¹: Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.”}
Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.: Library setup failed: ¹
Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.
at L.assertReadWriteExecutable (/ps/app/bin/main.js:9:191324)
at async Object.t.setupLibraryDataDir_ (/ps/app/bin/main.js:9:387513)
at async /ps/app/bin/main.js:9:626510
{“fatal”:true,“exit”:true,“status”:14,“pid”:27,“ppid”:20,“error”:“main setup failed: Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.: Library setup failed: ¹”}
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.
at L.assertReadWriteExecutable (/ps/app/bin/main.js:9:191324)
at async Object.t.setupLibraryDataDir_ (/ps/app/bin/main.js:9:387513)
at async /ps/app/bin/main.js:9:626510
{“fatal”:true,“exit”:true,“status”:12,“pid”:25,“ppid”:18,“error”:“Library setup failed: ¹: Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.”}
Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.: Library setup failed: ¹
Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.
at L.assertReadWriteExecutable (/ps/app/bin/main.js:9:191324)
at async Object.t.setupLibraryDataDir_ (/ps/app/bin/main.js:9:387513)
at async /ps/app/bin/main.js:9:626510
{“fatal”:true,“exit”:true,“status”:14,“pid”:25,“ppid”:18,“error”:“main setup failed: Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.: Library setup failed: ¹”}
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
Error: Please check directory permissions for /ps/library/.photostructure: it must be read/write/execute by user 99/group 100.
at L.assertReadWriteExecutable (/ps/app/bin/main.js:9:191324)
at async Object.t.setupLibraryDataDir_ (/ps/app/bin/main.js:9:387513)
at async /ps/app/bin/main.js:9:626510

Try adding these two environment variables:

Key: PUID
Value: 99

Key: PGID
Value: 100

See if that takes care of it!

That makes a lot of sense! I went ahead and did that, but I am getting the same error still. Hmmm…

Can you share your photostructure container setup?

Also, is this error happening as you are trying to get the container running for the first time? Or was it running previously and now you are getting this error?

Yes, I’m running 6.10.0-rc4 unraid. Using the offical photostructure docker repo.

This is a library that I’ve been using for about 2 weeks, its a very large library, so it took a while to finish. I have it setup how the guide says to, scratch disk, logs, system config are all on SSD. the Library points to the array.

UID 99
GID 100

OK… hopefully @mrm can chime in, because this gets into linux permissions that I’m not super adept with. Sometimes permissions will get changed by other dockers (which is annoying), but I wouldn’t expect that to happen to the .photostructure directory.

Sorry for the response latency, @Max_Dunlap , and welcome to PhotoStructure!

The PUID/PGID need to be the values from your host OS (UnRAID) for the files you want to bind-mount into the PhotoStructure container, so your library and all the auxiliary directories (cache, logging, config) all need to be readable and writable by UID 99, GID 100.

If you use ls -n it’ll print the mode bits and numeric IDs of the owning user and owning group of a given file or directory. You’ll also want the execute bit set for directories, as well.

Holler if you want me to jump into a Google Meet and we can bang our heads on the issue together.

Cheers!