Multi-User Lightroom

My wife and I take a lot of photos and we’ve been searching for a system where we could combine and manage our various pictures. I had been using Adobe Lightroom to manage my photos and she had been using Apple’s Aperture. We wanted one system where we could access, catalog, manage, develop and print our photos. We decided to standardize on Lightroom, but Lightroom is currently single-user only. We needed to be able to access our Lightroom catalog from multiple computers and Lightroom’s SQLite-based database is not designed for that. So after some research, I put together the following system. It allows us to use one Lightroom catalog on multiple computers. The caveat is that only one of us can be running Lightroom at a time. Other than that, it solves our problem.

WARNING: This is a hack. While it works for us, I do not guarantee that this will not trash your Lightroom catalog. Make backups and proceed carefully.

SECOND WARNING: These directions and the script are not polished. This post assumes some technical savvy.

There are a couple parts to my solution. It requires a network share on a NAS and it requires a service like Dropbox, that syncs a set of files across multiple computers. Some NAS devices come with software that provides Dropbox-like functionality. The NAS I have, a Synology DS412+, has software, called CloudStation, which provides this functionality. Also, we’re a Apple Mac-based household. This solution should work for Windows as well, but you will have to customize the shell script.

In short, we store our photos on the NAS and we store the Lightroom catalog on the Dropbox folder. We invoke Lightroom using a shell script that ensures that only one person can run Lightroom at a time. The reason we put the Lightroom catalog in a Dropbox folder is for speed; the catalog and previews are stored locally.

Many people already store their photos on a NAS. If you are not currently doing so, there are several tutorials to help you migrate your photos, such as this one.

To begin, make sure you’re not running Lightroom. Locate the Lightroom catalog, which is usually stored in your Pictures folder. You’re looking for the ‘Lightroom 5 Catalog.lrcat’ and ‘Lightroom 5 Catalog Previews.lrdata’  files. Copy these to a folder in your Dropbox, and then rename the old ones so that Lightroom doesn’t try to use them in the future. When you next launch Lightroom, it will ask you for the catalog file; point it to the one in your Dropbox folder.

The ‘Lightroom 5 Catalog Previews.lrdata’ file is a cache of previews of your photos. It can be large, but can be regenerated at any time. I choose to not have Dropbox/CloudStation sync that across the various computers, and let each computer generate it when Lightroom is run. Dropbox and CloudStation both have selective sync functions that allow you to exclude files/folders from syncing; that’s how I do that.

Now you should have a normally working Lightroom installation, with your photos on the network share on the NAS and your catalog in the Dropbox folder. The last bit of the solution is to only run Lightroom through the use of the following shell script, which I’ll explain.

#!/bin/sh

USER="INSERTUSERNAMEHERE"
PASSWORD="INSERTPASSWORDHERE"
NAS="INSERTNASIPADDRESSHERE"
MOUNTDIR="/Volumes/home"

TIMEFILE="/Volumes/home/Lightroom/lightroom.lasttime"
LOCKDIR="/Volumes/home/Lightroom/lightroom.lockdir"

if [ ! -d "${MOUNTDIR}" ]; then
 mkdir "${MOUNTDIR}"
 mount_afp afp://${USER}:${PASSWORD}@${NAS}/home ${MOUNTDIR}
fi

# Want to delay at least N seconds since last instance was closed to
# allow for CloudStation propagation
if [ -f "${TIMEFILE}" ]; then

if test `find "${TIMEFILE}" -atime +15s`; then
 echo "ok"
 else
 osascript -e 'tell app "System Events" to display alert "Need to sleep, Lightroom will start momentarily"'
 sleep 15
 fi

fi
if mkdir "${LOCKDIR}"; then

echo "Locking succeeded" >&2
 open -W /Applications/Adobe\ Photoshop\ Lightroom\ 5.app
 touch "${TIMEFILE}"
 rmdir "${LOCKDIR}"

else

osascript -e 'tell app "System Events" to display alert "Someone else is currently using Lightroom"'
 echo "Lock failed - exit" >&2
 exit 1

fi

What the shell script does is as follows:

  1. It makes sure the network share containing the photos is mounted.
  2. On the network share, it looks for a time file that was created by a previous instance of running the shell script, and indicates the last time the script (and Lightroom) were run.
  3. If the file exists, it checks the time and makes sure it’s been at least 15 seconds since the last run. This is to allow Dropbox time to synchronize the catalog from any other computer. The 15 seconds is a guess on my part; you may want to make it longer.
  4. Once it’s been at least 15 seconds, the script attempts to create a lock directory on the network share. This only succeeds if the lock directory doesn’t already exist. If it exists, the script assumes that someone else is running Lightroom and displays an error message.
  5. One the lock directory is created, it launches Lightroom and then waits for Lightroom to close.
  6. Once Lightroom closes, it removes the lock directory and updates/creates the time file.

Things you have to customize in the script:

  • The USER, PASSWORD and NAS variables lines 3,4,5
  • The script assumes your network share is mounted at /Volumes/home and that there is a Lightroom directory there. This does not have to be where your photos are stored.

To run the script, I used Platypus to create a Mac application out of the shell script. I placed the resulting app, which I call ‘RunLightroom’, on the network share, and then on each computer I dragged that to the Dock, to make it easy to run.

Hopefully this helps someone else out. Family photo sharing/management is a huge opportunity that Adobe should probably own (for better or worse). This post only addresses part of the problem; another issue is access to your photos on all your devices. Synology has a solution for that and I’m working on integrating that with Lightroom. I’ll put up another post when/if I have that figured out.

Please let me know if you have suggestions for improving this post; this is just a first draft and these instructions are admittedly pretty rough.

Advertisements

Comments

  1. Mark, thanks for the hack! Did you try to use Lightroom in conjuction with another multi-user friendly digital asset management software (DAM)? In this case LR can be used for batch RAW editing while a DAM system provides multi-user access to your centralized image catalog.

    I work on Daminion Software team, and our Daminion is one of the DAM solution that can avoid you to use such hacks and provide a reliable, fast and protected access to your image content from multiple computers by multiple users.

    Here is the link to Digital photography school where this connection is described in details:
    http://digital-photography-school.com/large-library-management-with-lightroom-and-daminion-for-advanced-lr-users/

    • Hi Murat, thanks for the comment. I checked out Daminion. It’s Windows only, so that makes it a non-starter for us (I know you can run it under Parallels, but that’s not a good solution). Also, Lightroom is complicated enough for non-savvy computer users; layering in a DAM under/next to it just makes things more complicated. Unfortunately, I think the only good solution is for Adobe to fix this; also unfortunately, I don’t think they will.

  2. Ethan Isenberg says:

    I’ve been using your script to successfully sync a LR catalog with my wife. Thanks so much! However, I’m having trouble keeping the preview files unsynced. You mention selective sync. However, with Dropbox, that allows you to keep the previews on the web but not on your hard disk. I believe you are recommending the opposite: to keep the previews folder on the hard disk but not on the web. There doesn’t seem to be a way to do this. The previews are stored in the same folder as the catalog file. Once the folder containing the catalog is shared, so are the previews.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s