Difference between revisions of "Syncthing-share"

From wikipost
Jump to navigationJump to search
Line 200: Line 200:
  
 
===Sharing folders===
 
===Sharing folders===
 +
 +
Again, before we can fully grasp the Syncthing philosophy we need to understand a few more concepts:
 +
 +
<b>Introducer</b>  -- Any devices configured on an introducer device will be added to this device as well.
 +
 +
 +
 +
 +
 +
 +
 +
  
 
Before any file or directory synchronisation happens, we need to introduce Syncthing hosts to each other. This can be done in several ways:
 
Before any file or directory synchronisation happens, we need to introduce Syncthing hosts to each other. This can be done in several ways:
  
 
* Import another host's Device ID
 
* Import another host's Device ID

Revision as of 11:53, 27 October 2019

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

Features:

  • 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:

[share]
   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;
  server_name 10.0.0.23;

  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_pass http://127.0.0.1:8384;

    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.


Sharing folders

Again, before we can fully grasp the Syncthing philosophy we need to understand a few more concepts:

Introducer -- Any devices configured on an introducer device will be added to this device as well.





Before any file or directory synchronisation happens, we need to introduce Syncthing hosts to each other. This can be done in several ways:

  • Import another host's Device ID