From wikipost
Revision as of 11:45, 27 October 2019 by Admin (talk | contribs)
Jump to navigationJump to search

This article shows how to set up a basic Syncthing share.


  • Synchronise between Linux and Windows hosts
  • Uses Samba on Linux to cater for additional hosts that cannot run Syncthing
  • Operates as replicate-with-delete (files deleted from one share will automatically be deleted on the other share, just like a normal shared folder)

So let's get started:

Samba setup

apt-get install samba syncthing

Because samba runs on Linux it's easier to manage samba user accounts when these users also exist as local users on the Linux system.

Furthermore, to apply permissions to all samba users in one go it is easier to create a linux group as well.

groupadd samba-users

  • mkdir /home/samba

  • mkdir /home/samba/share
  • chgrp samba-users /home/samba/share
  • chmod 775 /home/samba/share
  • mkdir /home/samba/syncthing
  • chgrp samba-users /home/samba/syncthing
  • chmod 775 /home/samba/syncthing

Add the user accounts you'll need for your samba server:

adduser --gecos joe
(+ enter new password)

Add the users to the samba-users group:

adduser joe samba-users

Create the samba users:

smbpasswd -a joe
(+ enter same password as in linux)

  • edit /etc/samba/smb.conf

at the end of the file, add these lines:

   comment = Samba Share
   path = /home/samba/share
   browseable = yes
   read only = no
   guest ok = no   
   valid users = @samba-users

You can now browse to \\<ip-address>\ with windows explorer where you will see the 'share' folder. Double-click on it and you will be presented with a login window, asking for credentials. Enter your user name and the password and you are now able to use the share for reading, writing and deleting files.

Syncthing Setup

  • create syncthing system account and home directory
useradd -r syncthing -m -d /home/syncthing

  • enable syncthing to run as a service (unit file in /lib/systemd/system/)
systemctl enable syncthing@syncthing.service
systemctl start syncthing@syncthing.service

Syncthing is now running and the web admin console can be reached from http://localhost:8384/. However if we want to remotely access this web console we need to configure a reverse proxy for it.

Setting up a reverse proxy with Nginx

  • install nginx
apt-get install nginx

write an nginx website configuration file for syncthing

vi /etc/nginx/conf.d/syncthing.conf
server {
  listen 80;

  root /var/www/html/syncthing/;
  access_log /var/log/nginx/syncthing.log;
  error_log /var/log/nginx/syncthing.error.log;

  location / {
    proxy_set_header Host localhost;    
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;


    proxy_read_timeout 600s;
    proxy_send_timeout 600s;


Create the placeholder directory and restart nginx

mkdir /var/www/html/syncthing
systemctl reload nginx

Now browse from another computer to the syncthing system with the address: http://<remoteip>/ ..and you should see the Syncthing admin console website.

The site will probably alert you that no password has been set, so do this first.

Creating Syncthing folders

Now that syncthing is running and we can comfortably access the admin console from a remote machine we can now set up the various shares and configure how we want to use them.

First a little Syncthing terminology:

Folders -- These are local folders that are available to the machine that is running the Syncthing service (i.e. the machine that is hosting the Syncthing admin console website that we are currently viewing). These folders may or may not be shared with other machines that are running Syncthing.

This Device -- Details and statistics about the machine that is hosting this admin console website and Syncthing services.

Remote Devices -- Other Syncthing instances on other machines that we are synchronising shared folders to or from.

Our goal is to have a Syncthing folder structure that will allow us to:

  • synchronise folders with other machines running syncthing
  • navigate to the Syncthing folders from Windows and Linux

We have now created the foundation to make this happen, all we need to do now is to create the folders and configure how we wish to share them.