Syncthing: backup your phone pictures
My phone has (for all intents and purposes) fully replaced my DSLR, however this poses the question of how to back them up and share them with the rest of the rest of the household.
One solution is of course to just enable the cloud storage of choice (Google Photos, Apple iCloud, etc) and for some time I relied on my old, trusty Flickr Pro account with its 1Tb of storage and the automated sync.
With Flickr having gone through a few acquisitions I am becoming more and more concerned about whether the sync will keep working and how well. Also, I wanted something that I could run on my home PC (a Mac Mini).
One option I came across is syncthing which seems to check all the boxes:
- privacy-focused: I sync over my home WiFi network and are in full control of the data without having to rely on cloud providers
- secure: the remote access (called relays) sharing can be turned off, ensuring the system stays full-enclosed within my home WiFi
- the pictures ends on my Mac Mini where I can automatically import them into iPhoto, process them if I need to, and play them back as a screensaver
- the Mac Mini itself is backed up with Time Machine to a local USB drive, adding another layer of protection
- Open Source
- free
The installation is relatively easy, for the Mac Mini I went with the OSX wrapper, mostly for the convenience of the tray icon.
For Android, you have to go through the F-Droid app store which is a bit inconvenient, however I do understand that the Google Store is a PITA to deal with.
After installing the app on all the devices they found each other over the WiFi network, and for Android the Camera folder is already setup as a shared drive (it's probably the most frequent use case). Sharing the folder is straightforward and the sync starts immediately.
As far as security is concerned I disabled Global Discovery, the use of relays and NAT traversal (for good measure, it's quite frankly concerning uPnP is still a thing!). AFAIU that means that the devices will only be discoverable over the local network(s) adding even more privacy.
For the phones I would like to have the option to enable discovery only on known WiFi networks. This might be possible (to some extent) by setting the allowed networks. If you know how to do that, I'd love to hear from you!
Update: the Android app has a setting that does exactly what I wanted. Under run conditions it is possible to select the whitelist the WiFi networks on which syncthing is allowed to run (Run on specified networks). It might be necessary to go into Android settings, then apps and add the permission for syncthing to access location all the time for the setting to work.