I think I did figure out how to do this, but Photostructure doesn’t seem to like it.
I got rclone to mount an Amazon S3 bucket containing a few pics and Photostructure launches and shows me the initial Settings and EULA screen, and it even creates a .photostructure dir in the S3 bucket, but then it crashes and kills the mount when I click the “Save” button on the EULA screen (i.e., the photostructure container shuts down and the rclone mount dies with “Transport endpoint is not connected”).
FYI, I’m using this to set up Photostructure on a Digital Ocean droplet.
Here’s the Photostructure container log from startup to “crash”:
Upgrading your library database...
PhotoStructure is ready: <http://localhost:1787/>
2021-01-03T14:40:28.726Z main-13 error Caught error from file write stream Error: EBADF: bad file descriptor, write
2021-01-03T14:40:32.282Z sync-33 error Caught error from file write stream Error: ENOTCONN: socket is not connected, close
WatchedChild.onError() {
ctx: {
src: 'ChildService(sync).onStdout()',
fatal: true,
ignorable: false,
errToS: 'sync-file: internal error: Error: onStderr({"error":"Health checks failed¹","problems":["Cannot write to /ps/library: undefined: _nativeCopyFile(/ps/library/.tmp-swr2ku/write-test.jpg.gz): {\\"src\\":\\"/ps/app/public/images/splashbg02-1024w.jpg.gz\\",\\"dest…'
},
src: 'ChildService(sync).onStdout()',
error: l [Error]: ChildService(sync).onStdout()sync-file: internal error: Error: onStderr({"error":"Health checks failed","problems":["Cannot write to /ps/library: undefined: _nativeCopyFile(/ps/library/.tmp-swr2ku/write-test.jpg.gz): {\"src\":\"/ps/app/public/images/splashbg02-1024w.jpg.gz\",\"dest…¹⁶
at C.onError (/ps/app/bin/main.js:3:133290)
at A.onStdout (/ps/app/bin/main.js:3:130238)
at s.onData (/ps/app/bin/main.js:3:137340)
at /ps/app/bin/main.js:3:203449
at Array.forEach (<anonymous>)
at s.onChunk (/ps/app/bin/main.js:3:203396)
at Socket.<anonymous> (/ps/app/bin/main.js:3:203615)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:486:12)
at addChunk (_stream_readable.js:309:12) {
cause: undefined,
retriable: true,
fatal: false
}
}
2021-01-03T14:40:32.961Z web-27 error Caught error from file write stream Error: ENOTCONN: socket is not connected, close
WatchedChild.onError() {
ctx: {
src: 'ChildService(web).onStdout()',
fatal: true,
ignorable: false,
errToS: 'Cannot write to /ps/library: undefined: Cannot mkdirp /ps/library/.tmp-7rx9wu¹⁶⁵undefined'
},
src: 'ChildService(web).onStdout()',
error: l [Error]: ChildService(web).onStdout()Cannot write to /ps/library: undefined: Cannot mkdirp /ps/library/.tmp-7rx9wuundefined¹⁶
at C.onError (/ps/app/bin/main.js:3:133290)
at A.onStdout (/ps/app/bin/main.js:3:130238)
at s.onData (/ps/app/bin/main.js:3:137340)
at /ps/app/bin/main.js:3:203449
at Array.forEach (<anonymous>)
at s.onChunk (/ps/app/bin/main.js:3:203396)
at Socket.<anonymous> (/ps/app/bin/main.js:3:203615)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:486:12)
at addChunk (_stream_readable.js:309:12) {
cause: undefined,
retriable: true,
fatal: false
}
}
{"fatal":true,"exit":true,"status":12,"pid":13,"ppid":6,"error":"ChildService(web).onStdout(): Error: ChildService(web).onStdout()Cannot write to /ps/library: undefined: Cannot mkdirp /ps/library/.tmp-7rx9wuundefined¹⁶"}
Shutting down PhotoStructure...
Verifying & backing up /ps/tmp/local-db/models/db.sqlite3...
I’m not fishing for free tech support here, just letting you know my results. Though if anyone does want to help me figure this out, I’d appreciate it. I’d love to get my asset library on S3. I may check out Daniel’s suggestion of BuyVM (below), but then I’d have to figure out how to set up everything on BuyVM (“everything” = photostructure, traefik, syncthing, sftp server; I had a friend create Psodo for me so I’d have to kind of start from scratch on a non-Digital-Ocean platform - though I think cloud-init is pretty universal).