Think of each as a SaaS, I think the "correct" approach is to upload files in one app. That app exposes an API. Other apps then consume the photos API to do whatever .
The whole sharing files approach is a relic of times when files were hosted on the same server and no sandboxing. But modern deployment/orchestration tech uses sandboxing, containers, docker compose, multiple servers . In such situations, sharing files assuming it's all code runs in same file system doesn't work well. app permissions/owner issues aside, most apps also have a database to track files and store extra metadata . If you remove and delete files from the filesystem without the app's knowledge, it all breaks. apps have to be written with all this in mind and most apps aren't written this way . lychee/nextcloud etc all have their own db and cannot share fs with others.