
![image](docs/syncthinglogo.png)

Ce projet à pour but de créer un partage de fichier synchronisé entre une machine (Linux Debian) et un smartphone android, le tout gratuitement grâce au logiciel open-source
Syncthing : https://syncthing.net/

## INSTALLATION:

Pré-requis: Une connaissance de Docker ainsi que l'arborescence Linux.
L'installation nécéssite un serveur(Linux / Windows / MacOS) et un client (Linux / Android / Windows / MacOS) pour illustrer la fonctionnalité de Syncthing, ici nous utiliseront un serveur Linux et un client Android.

### SERVEUR LINUX:

L'installation la plus simple et versatile reste encore celle via Docker compose.
- Pour installer Docker: https://gitlab.com/GregLebreton/docker.git
- Pour installer Docker compose: 
```bash
sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

- Clôner le repertoire suivant via la commande:

```bash
git clone https://gitlab.com/GregLebreton/syncthing.git
```

```bash
cd syncthing/
```

/\ Cette configuration est par défaut, vous pouvez y ajouter autant de partage que désiré dans les volumes en y indiquant les "PATH" des dossiers à partager.
Le port de la machine peux également être modifié selon les besoins.
Une fois la configuration établie, lancer la stack avec la commande:

```bash
docker-compose up -d
```

- Une fois l'instance démarrée, elle est accessible à cette adresse: http://localhost:8384.



- Dans l'onglet Général, renseigner le nom de l'appareil (ex: debian serveur / PC maison)

![image](docs/syncthinggeneral.png)

- cliquer sur configuration puis sur l'onglet interface graphique pour créer un utilisateur avec un mot de passe afin protéger l'instance serveur:

![image](docs/syncthinglogin.png)

- Nous allons maintenant installer un client pour initier une connection puis un partage.

### CLIENT ANDROID:

Le client android est disponible via le GooglePlay store: https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid&hl=fr&gl=US

- Une fois le client installé et démarré, vous pouvez vous connecter au serveur en générant un QR code à partir du serveur:

![image](docs/syncthingqrbouton.png)

![image](docs/syncthingqrcode.png)

- Pour flasher le QR code à partir du client Android, rendez-vous dans le menu ajouter un appareil, et cliquez sur l'icône +

<img src="docs/syncthingajoutdevtel.jpg" alt="" width="400"/>

- Enfin cliquez sur l'cône du QR code pour passer en mode scanner / appareil photo et scannez le code

<img src="docs/syncthingajoutdevtel2.jpg" alt="" width="400"/>

- Une fois le QRcode flashé par le client Android, un message d'ajout d'appareil apparaît sur l'UI serveur:

![image](docs/syncthingajoutdev.png)

- Configurer le nouvel appareil (ici le télephone Android client) avec un nom convivial dans l'onglet général:

![image](docs/syncthingtelconfig.png)

- Attendre la synchronistaion des appareils:

<img src="docs/syncthingtelsynch1.jpg" alt="" width="400"/>

<img src="docs/syncthingtelsynch2.jpg" alt="" width="400"/>

- On peux désormais créer un partage sur le client Android en indiquant le chemin du dossier de partage sur l'appareil Android et en cochant l'appareil avec lequel on veut partager ce dossier ( ici GREGSTATION, alias le serveur Linux):

<img src="docs/syncthingpartagetel.jpg" alt="" width="400"/>

Une fois celui-ci enregistré, une notification d'ajout de partage va apparaître sur l'interface web du serveur, cliquez sur ajouter:

![image](docs/syncthingnewpartage.png)

- Configurer le nom du partage ainsi que le chemin vers le dossier partagé
/\ Attention, le / les dossier(s) partagé(s) ont dûs être configurés dans le docker-compose.yml
au niveau des volumes:
```bash
  - /data1:/data1
```
Dans l'exemple ci-dessus, le répertoire /exemple/data1 sur la machine hôte correspond au dossier /data1 dans le conteneur Docker.
- Pour le chemin racine du partage, il faut choisir le chemin dans le conteneur soit /data1.
(Dans l'image /Synchro)

![image](docs/syncthingconfigpartageserveur.png)

- Dans l'onglet Partages, on peut désormais cocher le ou les appareils avec lesquels on va partager le dossier du serveur.

![image](docs/syncthingajoutdevtel.png)

Les dossiers se synchronisent:

![image](docs/syncthingserveursynch.png)

Si tout s'est bien passé, vous devriez avoir les mêmes fichiers dans les dossiers choisis lors du partage que se soit sur votre serveur ou sur votre téléphone Android.

### CLIENT WINDOWS:

Le client Windows est disponible à cette adresse: https://syncthing.net/downloads/
- Le principe reste le même qu'un client Android:
    * On ajoute le serveur comme appareil
    * On valide l'ajout du client Windows auprès du serveur
    * On attends la connection des deux appareils
    * On ajoute un dossier de partage du client Windows vers le serveur
    * On valide le partage du client Windows sur le serveur
    * On attends la synchronisation

### PRÉCISIONS:

1) Le partage peux être initié du client ou du serveur une fois les deux appareils connectés,
la validation du partage s'éffectue du côté du non initiateur.
2) Le dossier .stfolder est NÉCESSAIRE au bon fonctionnement de Syncthing, n'éssayez pas de l'éffacer.
3) Il est possible de choisir les directions de synchronisation (envoyer et reçevoir, envoyer seulement et reçevoir seulement) Cela permet de protéger contre la perte de données en cas de mauvaise manipulation.
4) Les différents partages peuvent être chiffrés par des mots de passe pour plus de sécurité, n'hésitez pas à l'utiliser.

#### Pour plus d'informations, consulter la documentation officielle: 

https://docs.syncthing.net/