Sync Lightroom catalog across computers with SyncThing

I have struggled for a good 6 months trying to find a good way to let me edit on either of my 2 computers at home, with Lightroom kept in sync’d automatically. I need to be able to use either machine depending on the mood/time of day, and then switch to the other machine with the minimum of fuss and waiting for things to synchronized.

I am quite happy with what I ended up with, so I thought it could be useful for others as well. This method takes care of both the images and Lightroom catalog synchronization.

What will be needed?

Basically, a NAS is needed. I use a FreeNAS box that I built myself, but off-the-shelf unit like Synology or QNAP should work too.

I assume you already have a Lightroom catalog with images in them, which we will make available on 2 machines in the following process.

First, the images

This is the easy part. Create a location on your NAS to host your images. I have a share dedicated to this at \\NAS IP address\photography\photo\

The \photography\ share will be used for other data as well (Lightroom plugins, camera profiles), so the images themselves are kept one level deeper.

After the folder is created, move the existing image files into it. You may have heard suggestions to only do this within Lightroom, or risk messing up your catalog. That is sort of true, you can mess things up pretty badly. But if you do the following, you should be fine. And it will be A LOT faster than doing it within Lightroom.

  1. Move the image files to the destination loccation (I suggest using FastCopy), then delete them from the original location)
  2. Open Lightroom. In Library module, under Folders tab on the left, you will see the moved folder(s) having question mark on them. Right-click on them and select “Find Missing Folder..” then choose the new folder crated on the NAS.

That’s it. Lightroom now knows where the images are, and you can continue to work on them just like before.

Then, the catalog

This is the tricky part. Lightroom will not let you load catalog that is located on a network folder. (Not even if you map it to a drive letter)

One solution that I had used previously is using the subst command. This is very similar to mapping network drive, but with subtle difference. The command “substitute” (instead of mapping) a drive letter for a network path. This may seem like split hair, but with subst
Lightroom cannot tell anymore that the drive is not attached locally, so it will let you load catalog file stored on it.

However, there is a good reason Lightroom doesn’t want you to keep catalog files on the network. Performance suffers a lot using this, and I find that I can only work on my laptop if I connect it to the network with Ethernet cable. On wifi, everything slows down to a crawl.

Hence, my method, which is keeping the catalog file local on both machines. This avoids the performance hit completely, as long as there is a way to keep them synchronized. This is similar to keeping Lightroom catalog in Dropbox folder. , which also works. But I don’t like it because of 2 reasons:

  1. It is a big clutter to have so many files synchronized with Dropbox. My catalog folder has more than 75,000 files in it. Anytime there are changes, I will get several desktop notification from Dropbox, which I hate.
  2. Even with LAN Sync, I find that it takes very long for data to be synchronized to Dropbox. And for LAN Sync to work, the other machine has to be switched on at the same time. Without LAN Sync, it take a long time to sync both ways. I have to leave computer 1 on a long time after and edit, and also wait a long time on computer 2 before an edit, for Dropbox to do its synchronization.

In place of Dropbox, there are several personal cloud storage solution that can be used. These include BitTorrent Sync, SyncThing, or ownCloud and many others. For my use, I choose  SyncThing and am very happy about it.

The set up is as followed:

  1. Have SyncThing running on both the computers. Set it up to start on login.
  2. Set up SyncThing to run on your NAS. For FreeNAS, there is a plugin available and the setup is straight forward. This guide provides a step-by-step walk-through if you are new to FreeNAS.
    On Synology NAS, there is a SyncThing package maintained by SynoCommunity. On QNAP NAS, there is a community app that seems to be actively maintainedy.
  3. SyncThing works on a shared folder paradigm, where one can select which folders to share to which devices. For this purpose, start with the main computer you currently use for Lightroom edit. Add a Folder in SyncThing, call it "LRCatalog" and point the folder path to where your Lightroom catalog is currently located.
  4. Add the 2nd computer and the NAS as SyncThing device. This is done by entering their device ID, which can be found by going to the web interface of SyncThing on each machine.
    During adding new device, remember to give each of them intuitive name.
  5. Go back to edit the LRCatalog folder, and share the folder with both the new devices.
  6. Going to SyncThing of the 2nd machine and NAS, accept the sharing. At this point, you will also be asked to provide folder location for "LRCatalog" on each machine. This means that, while they are all known to SyncThing as the “LRCatalog” folder, they need not be located at the same path on each machine.
    On the 2 Windows 10 machines, I simply put them at the same place at C:\Users\chris\LR Catalog but they could be different and will still work. On FreeNAS, I created a dataset and mount it to SyncThing jail as /media/syncthing/LRCatalog.
  7. Let SyncThing do its thing. When the folder finished synchronization, it will tell you in reassuring green Up To Date.

With this configuration, the NAS acts as the cloud storage server for Lightroom catalog data. If both computers happen to be on at the same time, the sync will happen directly between them. But if only one of them is on (more likely for me) the catalog is sync to the NAS, which will then sync to the other machine as soon as it is switched on.

Using wired Ethernet (Cat5e) my 10 GB catalog data took 10-15 to do the initial sync to the second machine. Then, after finishing an edit on one machine, it usually takes less than 1 minute for SyncThing to finish synchronizing the changes either to NAS or the second machine. This is much faster than using Dropbox.

That’s it. Happy retouching!

A note about Lightroom import

While Lightroom is OK with images being kept on network share located by IP address (e.g. \\192.168.1.x\photography) it does not let you choose such location as copy/move destination during import. So, it is still needed to map the network storage for images to a drive letter. (I use the subst method above)