Syncthing/fr

From SME Server
Revision as of 04:33, 2 September 2014 by RequestedDeletion (talk | contribs) (added WIP and ref to forums)
Jump to navigationJump to search
Warning.png Work in Progress:
This page is a Work in Progress. The contents off this page may be in flux, please have a look at this page history the to see list of changes.


(in french, copy/past from my pro wiki, i'll translate it later)

For the impatient, please see http://forums.contribs.org/index.php/topic,51081.0.html

Installation de Syncthing

Préparation

Création d'un utilisateur spécifique pour l'application Syncthing

[root@server ~]#useradd syncthing

Créations du dossier pour les log de l'application

[root@server ~]#mkdir /home/syncthing/log

Création du dossier pour l’exécutable

[root@server ~]#mkdir /home/syncthing/bin

Téléchargement de Syncthing Aller sur la page https://github.com/syncthing/syncthing/releases/latest et copier/coller le lien vers l'archive contenant le programme compilé pour votre architecture (ici, linux 64 bits)

Puis lancer le téléchargement sur le serveur:

[root@server ~]# wget https://github.com/syncthing/syncthing/releases/download/v0.9.10/syncthing-linux-amd64-v0.9.10.tar.gz

Installation

On extrait l'archive

[root@server ~]# tar -zxvf syncthing-linux-amd64-v0.9.10.tar.gz

On copie dans le dossier prévu que l'on a créé

[root@server ~]# cp syncthing-linux-amd64-v0.9.10/syncthing /home/syncthing/bin/

On change les droits pour que l'application puisse s’exécuter correctement

[root@server ~]#chown syncthing:syncthing -Rf /home/syncthing/*

Configuration de Syncthing en tant que service

Script de démarrage dans SME

On crée le fichier de script

[root@server ~]#nano /etc/rc.d/init.d/syncthing

Copier/coller le contenu ci dessous. Les lignes à noter concernent:

  • l'emplacement de l’exécutable SCRIPT=/home/syncthing/bin/syncthing
  • l'utilisateur qui lance le service RUNAS=syncthing
  • le nom du service NAME=syncthing
  • l'emplacement du fichier log LOGFILE=/home/syncthing/log/$NAME.log
#!/bin/sh
### BEGIN INIT INFO
# Provides: Syncthing
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Syncthing to sync folders
### END INIT INFO

SCRIPT=/home/syncthing/bin/syncthing
RUNAS=syncthing
NAME=syncthing

PIDFILE=/var/run/$NAME.pid
LOGFILE=/home/syncthing/log/$NAME.log

start() {
 if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then
echo 'Service already running' >&2
   return 1
fi 
echo 'Starting service…' >&2
local CMD="$SCRIPT &> \"$LOGFILE\" & echo \$!"
su -c "$CMD" $RUNAS > "$PIDFILE"
echo 'Service started' >&2
}

stop() {
if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
echo 'Service not running' >&2
  return 1
fi
echo 'Stopping service…' >&2
kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE"
echo 'Service stopped' >&2
}

uninstall() {
echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] "
local SURE
read SURE
if [ "$SURE" = "yes" ]; then
stop
  rm -f "$PIDFILE"
  echo "Notice: log file is not be removed: '$LOGFILE'" >&2
  update-rc.d -f <NAME> remove
  rm -fv "$0"
fi
}

status() {
      printf "%-50s" "Checking $NAME..."
  if [ -f $PIDFILE ]; then
      PID=$(cat $PIDFILE)
          if [ -z "$(ps axf | grep ${PID} | grep -v grep)" ]; then
              printf "%s\n" "The process appears to be dead but pidfile still exists"
          else
              echo "Running, the PID is $PID"
          fi
  else
      printf "%s\n" "Service not running"
  fi
}


case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
status)
  status
  ;;
uninstall)
  uninstall
  ;;
restart)
  stop
  start
  ;;
*)
  echo "Usage: $0 {start|stop|status|restart|uninstall}"
esac

Création du service

On rend le script créé exécutable

[root@server ~]#chmod u+x /etc/rc.d/init.d/syncthing

On ajoute le service

[root@server ~]#chkconfig syncthing --add

On crée un lien symbolique pour l'init 7 de SME

[root@server ~]#ln -f -s /etc/rc.d/init.d/e-smith-service /etc/rc7.d/S99syncthing

On active le service Syncthing dans la configuration de la SME

[root@server ~]#db configuration set syncthing service status enabled


Configuration du service Syncthing

Pour permettre l’accès seulement depuis le réseau local

[root@server ~]#db configuration setprop syncthing access private

Ou si vous voulez permettre l'acces le réseau local et publique

[root@server ~]#db configuration setprop syncthing access public

Syncthing, pour fonctionner a besoin de plusieurs ports ouverts

[root@server ~]#db configuration setprop syncthing TCPPort 8080
[root@server ~]#db configuration setprop syncthing TCPPorts 8080,22000
[root@server ~]#db configuration setprop syncthing UDPPort 21025

On applique les changements

[root@server ~]#signal-event remoteaccess-update

Enfin on lance le service

[root@server ~]#service syncthing start

Configuration de Syncthing

Les fichiers de configuration de Syncthing se trouvent dans /home/syncthing/.config/syncthing/

Nous allons modifier le fichier config.xml

[root@server ~]#nano /home/syncthing/.config/syncthing/config.xml

Repérer ces lignes:

<gui enabled="true" tls="false">
       <address>127.0.0.1:8080</address>

D'origine, on ne peut se connecter à l'interface web de gestion de Syncthing que depuis le serveur hôte et de façon non sécurisé. Changez ces lignes afin de permettre l’accès depuis un ordinateur du réseau autorisé dans la configuration du service (voir plus haut) et en forçant l'encodage des données.

<gui enabled="true" tls="true">
       <address>0.0.0.0:8080</address>

Enregistrer et relancer le service

[root@server ~]#service syncthing restart

Configuration par l'interface Web

Aller sur l'adresse pour accéder à l'interface de gestion avec votre navigateur: https://ip_du_serveur:8080

Dans le menu Editer > Configuration, vous pouvez définir un utilisateur identifié par mot de passe pour accéder à l'interface de gestion pour plus de sécurité.

Vous pouvez maintenant ajouter des répertoires et des nœuds, les dossiers seront ajoutés dans /home/syncthing