General beginner questions

New user/casual iphone photo taker – got a few basic questions.

  1. My photos (and now Photostructure library) are stored on a Synology NAS (ds920+). I considered installing the docker version, but I’m just not smart enough to figure it out. So I’m running it on an always-on Windows PC with the applicable NAS drives mapped to the PC. Seems to be working OK – is there any reason I shouldn’t stick with this configuration?

[edit - any potential that a native synology app will be released, to eliminate the need to use Docker for noobs like me?]

[edit 2: …or maybe a Docker image on (not that I know what I’m talking about, since I’ve not used Docker at all, but this approach looks a little simpler]

  1. Like many, I have (had) a bunch of photos stored in various locations. I actually used the beta version of Photostructure last year to consolidate them into a library (about 150,000 assets), which I’m now using with the current version. These days, all of my wife’s and my photos are taken (or obtained via text or airdrop or whatever) with iDevices. I’m a MS 365 subscriber, so I have the OneDrive app installed on our devices, configured to automatically upload photos to the OneDrive camera roll. I am then using CloudSync on the NAS to maintain NAS copies of our OneDrive accounts, which are backed up daily to the cloud (Backblaze via HyperBackup). Photostructure is monitoring the OneDrive folders on the NAS to pull in new photos to the library, which is then backed to Backblaze in the same way. There is some duplication between the OneDrive folders and the Photostructure library, but I have plenty of space on the NAS, and the Hyperbackup/Backblaze backup is deduplicated so I’m not paying extra. Does this seem like a legit way to maintain/protect my photo archive?

  2. The way I’ve got PhotoStructure configured (see previous paragraph), I’m not really using the library for anything except to maintain an organized master archive, with bitrot protection, that is backed up to the cloud every day. While this is important, I feel like I’m not really getting max benefit from my subscription. Is there some functionality in my use case that I’m missing?

Thanks in advance for any comments or suggestions.

Howdy, @RDK, welcome to PhotoStructure!

Bah, I just haven’t written sufficiently clear instructions. Where did you get stuck in these steps?

That will certainly work.

  • Make sure you have high-quality (CAT5 or better) cables and a reasonable router between the NAS and your PC (WiFi connections can be spotty)
  • Know that PhotoStructure will automatically switch to a lower concurrency import mode when your library is stored remotely. If you’ve got a beefcake Windows CPU (like, something with 8+ cores), PhotoStructure could easily overwhelm your NAS with I/O requests, so it throttles to 4 concurrent imports. You might be able to bump that up a bit and still have everything work. See the maxConcurrentImportsWhenRemote system setting.

I’d like to, but that won’t happen for a while: auth, face, and geo are higher priority right now.

Sure: lots of copies keeps stuff safe, and as long as you can find stuff, and you aren’t hurting for storage, those extra copies (especially if they are on different HDD devices or a different logical SHM volume) are a Good Thing.

My family and I use our PhotoStructure instance to browse our photos, even though people also have iPhoto or Google Photos as well, as our PhotoStructure library is an aggregation of all of our cameras.


Hmmm. Looks like I need to give the docker approach another try. My computer appears to be pretty bogged down (it’s an old Intel Core i5-4250U@1.30GHz - not even eligible for Win11. PS status says it’s going to take several more days to finish building the library). And although it’s connected to a satellite via CAT5, connectivity to the router is via mesh network, so there is some WIFI in the path (probably not ideal).

Since the library build is already in progress, should I wait for it to complete before I try running it via Synology/Docker? Or will things be OK if I stop the process on the windows computer, install via Docker (hopefully), and then restart from there?

You can safely quit PhotoStructure at any time, even during a sync job. PhotoStructure should either pick right up where it left off (if it’s restarted on the same machine), or recover from prior partial imports (if it’s installed on a brand new box).

If you see that it doesn’t recover properly, please do tell me.

Make sure you “cleanly” shut down, though: either via the nav menu or the menubar (if you’re using the desktop edition). PhotoStructure has to do some cleanup on shutdown that must be done on remote-filesystem libraries: See for details.

Fancy! If the mesh is stable, you’ll probably be fine. Your NAS is probably only going to be able to spool out ~150MB/second through your network (unless you’re using a striped RAID like RAID1, RAID5 or RAID6), and newer mesh networks should be able to handle that OK (pre-wifi6 tops out at ~250-300MB/s, wifi6 may be up to 500MB/s depending on distance and clients).

Note that the next build of PhotoStructure may be much faster on remote libraries, too, as I’ve been profiling my own library and fixing several issues, especially with slower drives and larger directories.

OK, I made it through step 10 (of the 14 steps under “Via Synology DSM”). I’m stuck at step 11.

When you say “add entries for”, what do I do exactly? I’m assuming that I click “Add Folder”, but then what? If I select (or create) a folder on my NAS, what do I then type in the “Mount Path” field? (Keep in mind that I have existing PhotoStructure folders on my NAS from the Windows install, so I want to use the same folders for this install so I don’t have duplicates).

Looking down the list a bit, when you say in step 12 “Configure the network port as you’d like it”, what does that mean? I’m not really even sure what a network port is. Should I just leave the defaults?

And a little further down – it seems like I should also install Watchtower so that Photostructure remains updated. Under the instructions you’ve provided for Watchtower, it looks like there is a script that needs to be run. Do I copy and paste that script somewhere? Where?

General feedback on the instructions: I feel like I’m pretty capable with GUIs, but I have never used a command line for anything, and I’m completely clueless about scripts, batch files, SSH, all that. You might consider formatting your directions in two branches - one for people like me and one for people who are more comfortable with that stuff (instead of intermingling the two). Also, I find it a little difficult in the directions to distinguish between the “background info” and the “here’s exactly what to do” sections.

Thanks so much for the assist!

That pretty much describes what I’m doing too, so I guess I’m in good shape!

Bump for response to my questions above (I got distracted)

Thanks for the bump!

Oof, yeah, that’s pretty hand-wavy of me.

So: networking configuration within your LAN and what you expose to the WAN is a bit out of scope of PhotoStructure, but this post has some recommendations (don’t forget to harden your server, if possible. If your server is )

This is totally optional. Upgrading using docker-compose is simple, but it’s a bit more involved if you’re using docker directly, because you have to repeat all the N arguments that you gave docker in the first place (it’s why I suggest on that page to set up a script with the docker command).

Thanks for the feedback: I think it’s hard to balance between simple “DO THIS” instructions and more novel-esque “and here’s why!”… I’ll think about how to make this better.



Any guidance on this part?

Ah, I missed that bit.

So, PhotoStructure stores paths to your files as URIs, rather than native paths (which would obviously be different if you move your library from Windows to macOS or Linux, or mount an external drive to a different letter).

Those URIs are rooted at the volume mountpoint with a (hopefully) stable “volume UUID”. Details about this are here: PhotoStructure | What's a “drive,” or “volume?”

So: if, say, on your Windows box you had a network drive, P:\, that mounted your NAS’s (internal) path of /volume1/homes/photos, then PhotoStructure should consider all the prior library paths to be equivalent as long as you mount /volume1/homes/photos (and not a subdirectory) into your docker container. The name you give to the bind mount is irrelevant, btw: /photos is fine.

If you don’t mount the same volume path (say, you bind-mount /volume1/homes to /homes), it’s not the end of the world, though: each Asset in your PhotoStructure library will then have two “Asset Files”, one from the windows import, and the second from the path from /homes.

Long story short, whatever you throw at PhotoStructure, it should handle it gracefully, but if you can match prior mountpoints, it’ll keep your library database smaller.

I almost certainly didn’t explain this well: if you have any questions, ping me.