This article will show you how to setup Syncthing on FreeBSD system.

One warning at the beginning – all > and < characters in the Syncthing configuration file were changed to } and { respectively. This is because of WordPress limitation. Remember that Syncthing config is XML file.

For most of my personal backup needs I always use rsync(1) but on the limited devices such as phones or tablets its real PITA. Thus for the automated import of the photos and other files from such devices I prefer to use Syncthing tool.

If you haven’t heard about it yet I will cite the Syncthing https://syncthing.net/ site. “Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it’s transmitted over the Internet.” … and Wikipedia “Syncthing is a free, open-source peer-to-peer file synchronization application available for Windows, Mac, Linux, Android, Solaris, Darwin, and BSD. It can sync files between devices on a local network, or between remote devices over the Internet. Data security and data safety are built into the design of the software.”

One may ask how its different from Nextcloud for example. Well, with Nextcloud you have almost ‘entire’ cloud stack with custom applications at your disposal. With Syncthing you have synchronization tool between devices and nothing more.

Initially I wanted – similarly like with Nextcloud on FreeBSD – to setup everything in a FreeBSD Jail. The problem is Syncthing does not work in a FreeBSD Jails virtualization as I figured out after several hours of trying to find out what is wrong. The management interface of Syncthing was working as expected and was accessible but the Syncthing on the Android mobile phone was not able to connect/sync with the Syncthing instance in the FreeBSD Jail. Sure I could connect to the Syncthing management interface from the phone but still could not do any backup using Syncthing protocol. Knowing this limitation you have 3 options to choose from:

Setup Syncthing on FreeBSD host like any other service.

Use FreeBSD Bhyve virtualization for Syncthing instance.

Use VirtualBox package/port for Syncthing instance.

I have chosen the first option. It is actually the same for Bhyve and VirtualBox but additional work is needed with virtualization layer. I will use Android based mobile phone as an example for the Syncthing client but you can sync data between computers as well.

One more thing, there is no such thing as Syncthing server and Syncthing client. All Syncthing instances/installations are the same, You can just add/remove devices and directories to synchronize between those devices. I used term ‘client’ above to show that I will be automating of copying the files from phone to FreeBSD server with Syncthing instance, nothing more.

Host

Here are some basic steps that I have done on the FreeBSD host. Things like aliases database, timezone, DNS and basic FreeBSD settings at its /etc/rc.conf core file.

# newaliases -v /etc/mail/aliases: 29 aliases, longest 10 bytes, 297 bytes total # ln -s /usr/share/zoneinfo/Europe/Warsaw /etc/localtime # date Fri Aug 17 22:05:18 CEST 2018 # echo nameserver 1.1.1.1 > /etc/resolv.conf # ping -c 3 freebsd.org PING freebsd.org (96.47.72.84): 56 data bytes 64 bytes from 96.47.72.84: icmp_seq=0 ttl=51 time=117.918 ms 64 bytes from 96.47.72.84: icmp_seq=1 ttl=51 time=115.169 ms 64 bytes from 96.47.72.84: icmp_seq=2 ttl=51 time=115.392 ms --- freebsd.org ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 115.169/116.160/117.918/1.247 ms

… and the main FreeBSD configuration file.

# cat /etc/rc.conf # NETWORK hostname=blackbox.local ifconfig_re0="inet 10.0.0.100/24 up" defaultrouter="10.0.0.1" # DAEMONS | YES zfs_enable=YES sshd_enable=YES ntpd_enable=YES syncthing_enable=YES syslogd_flags="-s -s" # DAEMONS | no sendmail_enable=NONE sendmail_submit_enable=NO sendmail_outbound_enable=NO sendmail_msp_queue_enable=NO # OTHER dumpdev=NO update_motd=NO virecover_enable=NO clear_tmp_enable=YES

Install

First we will switch from quarterly to the latest pkg(8) branch to get the most up to date packages.

# grep url: /etc/pkg/FreeBSD.conf url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", # sed -i '' s/quarterly/latest/g /etc/pkg/FreeBSD.conf # grep url: /etc/pkg/FreeBSD.conf url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",

We will now bootstrap pkg(8) and then update its database to latest available one.

# env ASSUME_ALWAYS_YES=yes pkg update -f Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/latest, please wait... Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done [syncthing.local] Installing pkg-1.10.5_1... [syncthing.local] Extracting pkg-1.10.5_1: 100% Updating FreeBSD repository catalogue... pkg: Repository FreeBSD load error: access repo file(/var/db/pkg/repo-FreeBSD.sqlite) failed: No such file or directory [syncthing.local] Fetching meta.txz: 100% 944 B 0.9kB/s 00:01 [syncthing.local] Fetching packagesite.txz: 100% 6 MiB 352.7kB/s 00:19 Processing entries: 100% FreeBSD repository update completed. 32388 packages processed. All repositories are up to date.

… and then install the Syncthing from pkg(8) packages.

# pkg install -y syncthing Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. The following 1 package(s) will be affected (of 0 checked): New packages to be INSTALLED: syncthing: 0.14.48 Number of packages to be installed: 1 The process will require 88 MiB more space. 15 MiB to be downloaded. [1/1] Fetching syncthing-0.14.48.txz: 100% 15 MiB 525.3kB/s 00:29 Checking integrity... done (0 conflicting) [1/1] Installing syncthing-0.14.48... ===> Creating groups. Creating group 'syncthing' with gid '983'. ===> Creating users Creating user 'syncthing' with uid '983'. [1/1] Extracting syncthing-0.14.48: 100% Message from syncthing-0.14.48: WARNING: This version is not backwards compatible with 0.13.x, 0.12.x, 0.11.x nor 0.10.x releases! For more information, please read: https://forum.syncthing.net/t/syncthing-v0-14-0/7806 https://github.com/syncthing/syncthing/releases/tag/v0.13.0 https://forum.syncthing.net/t/syncthing-v0-11-0-release-notes/2426 https://forum.syncthing.net/t/syncthing-syncthing-v0-12-0-beryllium-bedbug/6026

The Syncthing package created a syncthing user and group for us.

# id syncthing uid=983(syncthing) gid=983(syncthing) groups=983(syncthing)

Look how small the Syncthing is, these are all files installed by the net/syncthing package.

# pkg info -l syncthing syncthing-0.14.48: /usr/local/bin/stbench /usr/local/bin/stcli /usr/local/bin/stcompdirs /usr/local/bin/stdisco /usr/local/bin/stdiscosrv /usr/local/bin/stevents /usr/local/bin/stfileinfo /usr/local/bin/stfinddevice /usr/local/bin/stgenfiles /usr/local/bin/stindex /usr/local/bin/strelaypoolsrv /usr/local/bin/strelaysrv /usr/local/bin/stsigtool /usr/local/bin/sttestutil /usr/local/bin/stvanity /usr/local/bin/stwatchfile /usr/local/bin/syncthing /usr/local/etc/rc.d/syncthing /usr/local/etc/rc.d/syncthing-discosrv /usr/local/etc/rc.d/syncthing-relaypoolsrv /usr/local/etc/rc.d/syncthing-relaysrv /usr/local/share/doc/syncthing/AUTHORS /usr/local/share/doc/syncthing/LICENSE /usr/local/share/doc/syncthing/README.md

Configuration

As shows above we already have syncthing_enable=YES added to the /etc/rc.conf file.

# /usr/local/etc/rc.d/syncthing rcvar # syncthing # syncthing_enable="NO" # (default: "") # grep syncthing_enable /etc/rc.conf syncthing_enable=YES

Also from the Syncthing rc(8) startup script you may check other startup options.

# less -N /usr/local/etc/rc.d/syncthing (...) 9 # Add the following lines to /etc/rc.conf.local or /etc/rc.conf 10 # to enable this service: 11 # 12 # syncthing_enable (bool): Set to NO by default. 13 # Set it to YES to enable syncthing. 14 # syncthing_home (path): Directory where syncthing configuration 15 # data is stored. 16 # Default: /usr/local/etc/syncthing 17 # syncthing_log_file (path): Syncthing log file 18 # Default: /var/log/syncthing.log 19 # syncthing_user (user): Set user to run syncthing. 20 # Default is "syncthing". 21 # syncthing_group (group): Set group to run syncthing. 22 # Default is "syncthing". (...)

The Syncthing needs /var/log/syncthing.log log file. Lets then create it and set proper owner and rights for it.

# ls /var/log/syncthing.log ls: /var/log/syncthing.log: No such file or directory # :> /var/log/syncthing.log # chown syncthing:syncthing /var/log/syncthing.log # ls -l /var/log/syncthing.log -rwxr-xr-x 1 syncthing syncthing 0 2018.08.19 01:06 /var/log/syncthing.log

As we will be using this log file we also need to take care of its rotation, we will use builtin FreeBSD newsyslog(8) daemon for that purpose.

# cat > /etc/newsyslog.conf.d/syncthing << __EOF # logfilename [owner:group] mode count size when flags [/pid_file] /var/log/syncthing.log syncthing:syncthing 640 7 100 * JC __EOF # cat /etc/newsyslog.conf.d/syncthing # logfilename [owner:group] mode count size when flags [/pid_file] /var/log/syncthing.log syncthing:syncthing 640 7 100 * JC # newsyslog -v | grep syncthing Processing /etc/newsyslog.conf.d/syncthing /var/log/syncthing.log : size (Kb): 0 [100] --> skipping

Lets try to start Syncthing for the first time.

# service syncthing start Starting syncthing. daemon: pidfile ``/var/run/syncthing.pid'': Permission denied /usr/local/etc/rc.d/syncthing: WARNING: failed to start syncthing

Seems that rc(8) Syncthing startup does not create PID file automatically, lets create it then.

# :> /var/run/syncthing.pid # chown syncthing:syncthing /var/run/syncthing.pid # ls -l /var/run/syncthing.pid -rwxr-xr-x 1 syncthing syncthing 0 2018.08.19 01:08 /var/run/syncthing.pid

Now lets try to start Syncthing again.

# service syncthing start Starting syncthing.

Better. Lets see what ports does it use.

# sockstat -l -4 | grep syncthing syncthing syncthing 27499 9 tcp46 *:22000 *:* syncthing syncthing 27499 10 udp4 *:18876 *:* syncthing syncthing 27499 13 udp4 *:21027 *:* syncthing syncthing 27499 20 tcp4 127.0.0.1:8384 *:*

… and check its log file.

# cat /var/log/syncthing.log [start] 01:08:40 INFO: Generating ECDSA key and certificate for syncthing... [MPN4S] 01:08:40 INFO: syncthing v0.14.48 "Dysprosium Dragonfly" (go1.10.3 freebsd-amd64) root@111amd64-default-job-12 2018-08-08 09:19:19 UTC [noupgrade] [MPN4S] 01:08:40 INFO: My ID: MPN4S65-UQWC5SP-3LR2XDB-T5JNYET-VQEQC3X-DSAUI27-BQQKZQE-BWQ3NAO [MPN4S] 01:08:41 INFO: Single thread SHA256 performance is 131 MB/s using minio/sha256-simd (89 MB/s using crypto/sha256). [MPN4S] 01:08:41 INFO: Default folder created and/or linked to new config [MPN4S] 01:08:41 INFO: Default config saved. Edit /usr/local/etc/syncthing/config.xml to taste or use the GUI [MPN4S] 01:08:42 INFO: Hashing performance is 112.85 MB/s [MPN4S] 01:08:42 INFO: Updating database schema version from 0 to 2... [MPN4S] 01:08:42 INFO: Updated symlink type for 0 index entries and added 0 invalid files to global list [MPN4S] 01:08:42 INFO: Finished updating database schema version from 0 to 2 [MPN4S] 01:08:42 INFO: No stored folder metadata for "default": recalculating [MPN4S] 01:08:42 WARNING: Creating directory for "Default Folder" (default): mkdir /Sync/: permission denied [MPN4S] 01:08:42 WARNING: Creating folder marker: folder path missing [MPN4S] 01:08:42 INFO: Ready to synchronize "Default Folder" (default) (readwrite) [MPN4S] 01:08:42 INFO: Overall send rate is unlimited, receive rate is unlimited [MPN4S] 01:08:42 INFO: Rate limits do not apply to LAN connections [MPN4S] 01:08:42 INFO: Using discovery server https://discovery-v4.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW [MPN4S] 01:08:42 INFO: Using discovery server https://discovery-v6.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW [MPN4S] 01:08:42 INFO: Using discovery server https://discovery.syncthing.net/v2/?noannounce&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW [MPN4S] 01:08:42 INFO: TCP listener ([::]:22000) starting [MPN4S] 01:08:42 INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting [MPN4S] 01:08:42 WARNING: Error on folder "Default Folder" (default): folder path missing [MPN4S] 01:08:42 INFO: Failed initial scan of readwrite folder "Default Folder" (default) [MPN4S] 01:08:42 INFO: Device MPN4S65-UQWC5SP-3LR2XDB-T5JNYET-VQEQC3X-DSAUI27-BQQKZQE-BWQ3NAO is "blackbox.local" at [dynamic] [MPN4S] 01:08:42 INFO: Loading HTTPS certificate: open /usr/local/etc/syncthing/https-cert.pem: no such file or directory [MPN4S] 01:08:42 INFO: Creating new HTTPS certificate [MPN4S] 01:08:42 INFO: GUI and API listening on 127.0.0.1:8384 [MPN4S] 01:08:42 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/ [MPN4S] 01:08:55 INFO: Joined relay relay://11.12.13.14:443 [MPN4S] 01:09:02 INFO: Detected 1 NAT service

We have several WARNING messages here about default /Sync directory. Lets fix those.

# service syncthing stop Stopping syncthing. Waiting for PIDS: 27498.

Upon first Syncthing start the rc(8) startup script created the /usr/local/etc/syncthing directory with its configuration.

# find /usr/local/etc/syncthing /usr/local/etc/syncthing /usr/local/etc/syncthing/https-cert.pem /usr/local/etc/syncthing/https-key.pem /usr/local/etc/syncthing/cert.pem /usr/local/etc/syncthing/key.pem /usr/local/etc/syncthing/config.xml /usr/local/etc/syncthing/index-v0.14.0.db /usr/local/etc/syncthing/index-v0.14.0.db/MANIFEST-000000 /usr/local/etc/syncthing/index-v0.14.0.db/LOCK /usr/local/etc/syncthing/index-v0.14.0.db/000001.log /usr/local/etc/syncthing/index-v0.14.0.db/LOG /usr/local/etc/syncthing/index-v0.14.0.db/CURRENT

Now lets get back to fixing the WARNING for the /Sync directory.

# grep '/Sync' /usr/local/etc/syncthing/config.xml {folder id="default" label="Default Folder" path="//Sync" type="readwrite" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true"} # ls /Sync ls: /Sync: No such file or directory

Now lets create dedicated directory for our Syncthing instance and set it also in the /usr/local/etc/syncthing/config.xml config file.

# mkdir /syncthing # chown syncthing:syncthing /syncthing # chmod 750 /syncthing # vi /usr/local/etc/syncthing/config.xml # grep '/syncthing' /usr/local/etc/syncthing/config.xml {folder id="default" label="Default Folder" path="/syncthing" type="readwrite" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true"}

We will also disable Relay and Global Announce Server but we will left Local Announce Server enabled.

# grep -i relay /usr/local/etc/syncthing/config.xml {relaysEnabled}true{/relaysEnabled} {relayReconnectIntervalM}10{/relayReconnectIntervalM} # vi /usr/local/etc/syncthing/config.xml # grep -i relay /usr/local/etc/syncthing/config.xml {relaysEnabled}false{/relaysEnabled} {relayReconnectIntervalM}10{/relayReconnectIntervalM} # grep globalAnnounce /usr/local/etc/syncthing/config.xml {globalAnnounceServer}default{/globalAnnounceServer} {globalAnnounceEnabled}true{/globalAnnounceEnabled} # vi /usr/local/etc/syncthing/config.xml # grep globalAnnounce /usr/local/etc/syncthing/config.xml {globalAnnounceServer}default{/globalAnnounceServer} {globalAnnounceEnabled}false{/globalAnnounceEnabled}

Before restarting Syncthing lets clean the /var/log/syncthing.log file to eliminate now unneeded information.

# service syncthing stop Stopping syncthing. # :> /var/log/syncthing.log # service syncthing start Starting syncthing.

Lets check what the log holds for us now.

# cat /var/log/syncthing.log [MPN4S] 01:13:38 INFO: syncthing v0.14.48 "Dysprosium Dragonfly" (go1.10.3 freebsd-amd64) root@111amd64-default-job-12 2018-08-08 09:19:19 UTC [noupgrade] [MPN4S] 01:13:38 INFO: My ID: MPN4S65-UQWC5SP-3LR2XDB-T5JNYET-VQEQC3X-DSAUI27-BQQKZQE-BWQ3NAO [MPN4S] 01:13:39 INFO: Single thread SHA256 performance is 131 MB/s using minio/sha256-simd (89 MB/s using crypto/sha256). [MPN4S] 01:13:40 INFO: Hashing performance is 112.97 MB/s [MPN4S] 01:13:40 INFO: Ready to synchronize "Default Folder" (default) (readwrite) [MPN4S] 01:13:40 INFO: Overall send rate is unlimited, receive rate is unlimited [MPN4S] 01:13:40 INFO: Rate limits do not apply to LAN connections [MPN4S] 01:13:40 INFO: Device MPN4S65-UQWC5SP-3LR2XDB-T5JNYET-VQEQC3X-DSAUI27-BQQKZQE-BWQ3NAO is "blackbox.local" at [dynamic] [MPN4S] 01:13:40 INFO: TCP listener ([::]:22000) starting [MPN4S] 01:13:40 INFO: Completed initial scan of readwrite folder "Default Folder" (default) [MPN4S] 01:13:40 INFO: GUI and API listening on 127.0.0.1 :8384 [MPN4S] 01:13:40 INFO: Access the GUI via the following URL: http :// 127.0.0.1 :8384/

We can see that the management interface listens on HTTP not HTTPS because tls option is set to false . We will also need to switch the management interface address from localhost ( 127.0.0.1 ) to our IP address ( 10.0.0.100 ).

# grep -B 1 -A 3 127.0.0.1 /usr/local/etc/syncthing/config.xml {gui enabled="true" tls="false" debugging="false"} {address}127.0.0.1:8384{/address} {apikey}2jU5aR4zTJLGdEuSLLmdRGgfCgJaUpUv{/apikey} {theme}default{/theme} {/gui} # vi /usr/local/etc/syncthing/config.xml # grep -B 1 -A 3 10.0.0.100 /usr/local/etc/syncthing/config.xml {gui enabled="true" tls="true" debugging="false"} {address}10.0.0.100:8384{/address} {apikey}2jU5aR4zTJLGdEuSLLmdRGgfCgJaUpUv{/apikey} {theme}default{/theme} {/gui}

Lets verify our changes now.

# service syncthing stop Stopping syncthing. # :> /var/log/syncthing.log # service syncthing start Starting syncthing. # cat /var/log/syncthing.log [MPN4S] 01:16:20 INFO: syncthing v0.14.48 "Dysprosium Dragonfly" (go1.10.3 freebsd-amd64) root@111amd64-default-job-12 2018-08-08 09:19:19 UTC [noupgrade] [MPN4S] 01:16:20 INFO: My ID: MPN4S65-UQWC5SP-3LR2XDB-T5JNYET-VQEQC3X-DSAUI27-BQQKZQE-BWQ3NAO [MPN4S] 01:16:21 INFO: Single thread SHA256 performance is 131 MB/s using minio/sha256-simd (89 MB/s using crypto/sha256). [MPN4S] 01:16:22 INFO: Hashing performance is 113.07 MB/s [MPN4S] 01:16:22 INFO: Ready to synchronize "Default Folder" (default) (readwrite) [MPN4S] 01:16:22 INFO: Overall send rate is unlimited, receive rate is unlimited [MPN4S] 01:16:22 INFO: Rate limits do not apply to LAN connections [MPN4S] 01:16:22 INFO: TCP listener ([::]:22000) starting [MPN4S] 01:16:22 INFO: Completed initial scan of readwrite folder "Default Folder" (default) [MPN4S] 01:16:22 INFO: Device MPN4S65-UQWC5SP-3LR2XDB-T5JNYET-VQEQC3X-DSAUI27-BQQKZQE-BWQ3NAO is "blackbox.local" at [dynamic] [MPN4S] 01:16:22 INFO: GUI and API listening on 10.0.0.100 :8384 [MPN4S] 01:16:22 INFO: Access the GUI via the following URL: https :// 10.0.0.100 :8384/ [MPN4S] 01:16:42 INFO: Detected 1 NAT service

The log is now ‘clean’ and we can continue to the browser at the https://10.0.0.100:8384 management interface for the rest of Syncthing configuration. The browser will of course warn us about untrusted HTTPS certificate.

Syncthing will ask us if we agree upon sharing of statistics data. I leave that choice to you.

The Syncthing dashboard welcomes us with big red warning about remote administration being allowed without a password. We will fix that in a moment, click the Settings button in that warning.

Leave first General tab will unmodified.

On the GUI tab we will create user admin with SYNCTHINGPASSWORD password for the Syncthing management interface. Use something more sensible here 🙂

I did not modified settings at the Connections tab. Click Save to continue.

Besides setting the user and its password I haven’t changed/set any other options.

We now has Syncthing without errors. You will be prompted for that user and password in a moment. We will now remove Default Folder as its not needed. Hit its Edit button.

Then click the Remove button on the bottom.

… and click Yes for confirmation.

The ’empty’ Syncthing dashboard.

Next we will download, install and configure Syncthing on the Android phone. Depending on your preferences use F-Droid repository or Google Play repository … or just an APK file from the source of your choice. The installed Syncthing application is shown below. Takes about 50 MB.

Lets start it then, you will see the Welcome message from the Syncthing application.

Depending on your Android version your phone may ask you to allow Syncthing for various permissions. Agree.

Same as earlier the Syncthing will ask you if you agree for sharing of the statistics data. I also leave that choice to you.

The Syncthing will now require restart, tap RESTART NOW to continue.

By default the Camera directory is preconfigured pointing at /storage/emulated/0/DCIM directory which holds photos and screenshots taken on the phone. Its enough for me so I will use it. Tap the Syncthing hamburger menu button.

… and select Web GUI option.

You will see management interface for Syncthing on your Android phone, scroll below to add blackbox.local Syncthing instance from the FreeBSD in the Remote Devices section.

Now in the Remote Devices section hit the Add Remote Device button.

Remember that Local Announce service we left enabled? This is when it comes handy. You will have our Syncthing instance ID from FreeBSD displayed as it was automatically detected on the network.

Click on the displayed ID and enter the blackbox.local hostname.

Besides entering (clicking) ID and hostname I did not set any other options. Click Save.

The blackbox.local will be added to the Remote Devices list.

Below are the Camera directory properties. Remember to select blackbox.local as the allowed host (small yellow slider).

… and the blackbox.local device properties.

Now let’s get back to the FreeBSD’s Syncthing instance management interface on the browser. You will be prompted to add Syncthing of the Android phone – SM-A320FL in my case – to the devices. Hit green Add Device button.

Click Save without adding other options.

The SM-A320FL device for our Android phone is now visible in the Remote Devices section.

You should now be prompted that SM-A320FL device wants to share Camera directory. Hit green Add button.

Enter SM-A320FL as the folder label and /syncthing/SM-A320FL as the directory name on the FreeBSD Syncthing instance. Also make sure that SM-A320FL is selected in the Share With Devices section on the bottom.

The SM-A320FL device and SM-A320FL folder from this device are now configured. You will first see Out of Sync message for the SM-A320FL folder. The synchronization should now start whose progress can be observed both on the phone and in the management interface of the FreeBSD Syncthing instance in the browser.

The SM-A320FL folder switched status to Syncing with progress.

You will see similar status on the Android phone.

After some file you will see that SM-A320FL folder has status Up to Date. That means that all files from the Camera directory are synchronized to the FreeBSD Syncthing instance.

The created/synced directories from the Android phone looks as follows on the FreeBSD Syncthing instance.

# find /syncthing -type d /syncthing /syncthing/SM-A320FL /syncthing/SM-A320FL/Camera /syncthing/SM-A320FL/Camera/.AutoPortrait /syncthing/SM-A320FL/Screenshots /syncthing/SM-A320FL/.thumbnails /syncthing/SM-A320FL/.stfolder

Now you have your Camera files synced as backup.

The complete Syncthing config from the FreeBSD instance is available /usr/local/etc/syncthing/config.xml here. After download rename it from *.xml.key to *.xml file (WordPress limitation).

UPDATE 1

The Syncthing on FreeBSD article was featured in the BSD Now 262 – OpenBSD Surfacing episode.

Thanks for mentioning!

EOF