1. Introduction▲
Cet article est un extrait de mon livre sur le Cloud Computing.
Ce tutoriel va vous présenter des solutions vous permettant de synchroniser vos documents sur plusieurs machines. Le principe sera de répliquer les données entre plusieurs machines via Internet (ou le réseau dans le cas d'une synchronisation sur un serveur en interne).
2. Les solutions grand-public toutes faites▲
Ces solutions vont vous proposer de synchroniser vos données entre plusieurs postes via un compte Internet. Vous pourrez aussi accéder en mode web à vos données avec ou non possibilité d'édition en ligne. Elles peuvent intégrer également d'autres fonctions comme un agenda, une messagerie, Nous ferons ici abstraction de ces autres fonctions.
- Dropbox : service de synchronisation et partage de fichiers, gratuit jusqu’à 2 Go. Une interface d’administration est fournie pour les usages multicomptes professionnels. Dropbox propose une synchronisation sélective permettant de ne stocker sur un poste que certains dossiers. Dans ce cas, les dossiers non sélectionnés ne seront accessibles qu'en ligne ou que sur les postes ne les ayant pas décochés ; l'intégralité des données restant accessibles depuis l'interface web. À l’installation, il vous sera proposé de stocker les données sur votre poste ou de ne les stocker qu'en ligne. Dans les deux cas, vous verrez vos fichiers dans l'explorateur de fichiers.
- Google G-Suite : il s'agit des services de la suite Google (Gmail, Google Drive, Google Agenda, YouTube, Maps, Forms…). Il y a également une interface d'administration pour les usages professionnels. L'espace de stockage est de 30 Go par utilisateur dans un espace professionnel G-Suite. En offre grand public, vous avez 15 Go d'espace de stockage. En version professionnelle, vous aurez accès à Google File Stream. Ce service permet de stocker des données uniquement en ligne (avec possibilité de cache local), comme avec DropBox, il ne s'agira plus dans cas de synchronisation. Il est possible dans les deux cas d'étendre l'espace de stockage. Celui-ci vous sera facturé. L'usage personnel propose un outil nommé « Google sauvegarde et synchronisation » effectuant comme son nom l'indique la synchronisation de vos données entre votre poste et le compte Google.
- Apple iCloud : service de synchronisation Apple, permettant de synchroniser les contacts, agendas, mots de passe entre les iPad, iPhone et les ordinateurs mac. Les dernières versions (depuis Mac OS X 10.12) permettent également la synchronisation du dossier Documents et du bureau. Le service est gratuit jusqu'à 5 Go. Il existe une version sur Windows permettant la synchronisation avec Outlook, l’espace iCloud pour les documents et les photos.
- Microsoft OneDrive/365 : synchronise les comptes utilisateurs entre les postes fonctionnant sur Windows 10 et les documents pour les systèmes antérieurs. Sous Windows 10, il est en théorie possible d'ouvrir une session sur un ordinateur tiers et de retrouver son environnement de travail. Un compte Office 365 servira également à gérer vos mails, cet aspect ne sera pas abordé ici.
3. Synchronisation de fichiers avec produits spécifiques▲
Nous ferons abstraction de l'aspect répartition de charge/haute disponibilité/tolérance de panne. Nous supposerons que votre système de synchronisation s'appuie sur une seule machine ou que le système de haute disponibilité est opérationnel. Pour que la synchronisation puisse se faire via Internet, la machine devra être accessible via internet ou le système devra être installé dans un data-center.
Plusieurs produits de synchronisation de fichiers ont été testés :
- Seafile ;
- Syncthing ;
- SparkleShare ;
- Pydio.
Dans les produits testés, Syncthing et Pydio ont une version serveur sous Windows, tous les produits testés ont un client windows.
Cette liste n'est pas exhaustive et ne tient compte que des solutions testées.
4. Solutions d'autohébergement▲
NextCloud/Owncloud est une solution toute faite qui permettra la synchronisation de fichiers comme les solutions toute faite évoqués ci-dessus ou les les solutions qui vous seront présentés.
Je vous invites à lire mon tutoriel sur les solutions d'autohébergement qui présente en détail Nextcloud.
4-1. Seafile▲
Seafile dispose d'une version serveur pour Linux, Raspberry, et Windows. Il est installable sous Mac OS X via les macports.
Seafile propose un client pour Windows, Linux, et Mac OS X. Il y a une application pour Android et une pour iPhone/iPad.
Il existe deux éditions, une community edition gratuite et une version sous licence propriétaire pour les entreprises, utilisable sans licence jusqu’à trois utilisateurs.
Vous pouvez voir sur cette page les différences entre la version community et la version professionnelle.
Seafile travaille avec une base de données, et va utiliser soit sqlite, soit MySQL.
Seafile nécessite Python et les dépendances suivantes :
- python-setuptools ;
- python-imaging ;
- python-mysqldb (ou python sqlite si utilisation de sqlite).
Nous pouvons les installer avec la commande suivante. Dans nos tests, nous utiliserons SQLite comme base de données.
apt-get install python-setuptools python-imaging python-sqlite sqlite3
L'installation s'effectue par le chargement d'un tar.gz depuis le site Internet.
Vous pouvez récupérer le fichier ainsi (mais il y a de grandes chances qu’une nouvelle version soit disponible, lien à vérifier sur le site web) :
wget https://download.seadrive.org/seafile-server_7.0
.5_x86-64
.tar.gz --no-check-certificate
Une fois le fichier tar.gz décompressé, l'installation s’effectue en lançant le script depuis le dossier contenant l’application décompressée :
setup-seafile.sh
Pour la version MySQL, il faut lancer le script setup-seafile-mysql.sh.
Au cours de l’installation, les informations suivantes vous seront demandées :
- le nom du serveur ;
- le domaine ou l’adresse IP du serveur ;
- le chemin par défaut pour les données seafile (~/seafile-data par défaut) ;
- le port à utiliser : 8082 par défaut.
seafile va créer ses dossiers (conf, logs, pids, ccnet) dans le dossier parent de l'installeur. Le dossier data par défaut proposé se situe également dans le dossier parent.
Une fois la configuration effectuée, il va falloir modifier le fichier conf/gunicorn.conf et modifier bind = "127.0.0.1:8000" par "0.0.0.0:8000" pour pouvoir utiliser toutes les interfaces, ou l'adresse IP de la carte réseau sur laquelle vous voulez que seafile fonctionne. Vous pouvez également changer le port d'écoute (8000).
Une fois la configuration effectuée, il faudra démarrer le service seafile :
seafile.sh start
puis seahub :
seahub.sh start
Au premier démarrage de seahub.sh, une adresse mail qui servira d'identifiant administrateur vous sera demandée dans la console, puis un mot de passe.
La connexion sur l'interface web se fera (par défaut) sur le port 8000 : http://addresse:8000
Il faudra utiliser l'adresse mail préalablement renseignée.
Vous aurez accès à l'écran d'interface :
Pour gérer vos documents, il vous faudra cliquer sur votre bibliothèque nommée « Ma bibliothèque ». Vous pourrez créer d'autres bibliothèques qui peuvent être vues comme des dossiers principaux.
Vous pourrez ensuite gérer vos documents :
Le menu « importer » permet d'importer des documents ou dossiers.
Sur la ligne des fichiers, vous pourrez :
- télécharger un document ;
- partager un document ;
- supprimer un document.
Les icônes sont explicites.
Sur la droite, vous aurez des liens permettant de voir les fichiers qui sont partagés avec vous ou que vous partagez.
4-1-1. Administration▲
Pour administrer les utilisateurs, il vous faudra depuis le compte administrateur cliquer sur l’icône en haut à droite (1), puis sélectionner « Administrateur système » (2) :
Dans l'interface Administration, vous pourrez :
- gérer les utilisateurs et groupes ;
- gérer les bibliothèques des utilisateurs (les supprimer, les partager, les transférer à d'autres utilisateurs) ;
- gérer les équipements connectés ;
- modifier les URL du serveur, le logo, l'image de fond.
Il est possible d'utiliser une connexion LDAP ou Active Directory. Mais vous devrez modifier la configuration du fichier ccnet.conf à la main. Rien n'est prévu dans l'interface graphique (du moins dans la partie graphique de la version communautaire). Exemple LDAP :
[LDAP]
HOST =
ldap://192
.168
.1
.123
/
BASE =
cn
=
users,dc
=
example,dc
=
com
USER_DN =
administrator@example.local
PASSWORD =
secret
LOGIN_ATTR =
userPrincipalName
Pour plus de détails, veuillez consulter la documentation.
Depuis l'interface web utilisateur, vous pourrez télécharger et uploader les fichiers, les gérer (les supprimer, les renommer), créer un lien de partage, accéder à l'historique des différentes révisions.
La gestion de la rétention des versions se fait depuis la bibliothèque. Vous pourrez choisir :
- pas d'historique ;
- historique illimité ;
- historique sur x jours.
Vous pourrez partager une bibliothèque avec d'autres utilisateurs ou groupes d'utilisateurs ou la transférer à un utilisateur.
Une bibliothèque peut contenir des dossiers.
Pour chaque bibliothèque, dossier, fichier, vous pouvez partager avec un utilisateur ou un groupe en lecture/écriture ou en lecture seule. Vous pouvez générer une URL de partage depuis l’icône sur la ligne de l'élément avec ou sans mot de passe de protection et avec ou sans expiration du lien.
4-1-2. Installation et utilisation du client▲
Une fois le client installé, lors de son premier démarrage, celui-ci vous demandera où stocker le dossier de synchronisation en local :
Vous seront ensuite demandées les informations de configuration (URL du serveur, identifiants) :
Vous pouvez choisir ou non une connexion automatique.
Vous aurez ensuite l'écran suivant :
Un ajout ou modification de document sera répercuté sur le serveur.
Seafile ajoute un menu contextuel (uniquement disponible depuis le dossier synchronisé) :
Ce menu – seulement disponible depuis le dossier synchronisé par Seafile – propose les options suivantes (le texte n'est pas traduit) :
- get seafile download link ;
- get seafile internal link ;
- view file history.
La première option va fournir un lien pouvant être communiqué. Connaître ce lien permettra le téléchargement sans authentification. L'option « téléchargement direct » télécharge sans ouvrir de page.
La seconde option est un lien nécessitant une connexion. Nous pouvons constater que le nom du fichier apparaît dans le lien, contrairement à la première option.
La troisième option permet d'accéder à l'historique des modifications du fichier. Ceci ouvre une page web à partir de laquelle nous pourrons restaurer une version précédente :
Pour synchroniser un dossier supplémentaire, il suffit de le sélectionner depuis le panneau seafile :
Nous pouvons voir que le dossier « nouveau dossier » qui a été sélectionné apparaît comme nouvelle bibliothèque.
Celle-ci sera visible depuis l'interface web :
Lors de la sélection du dossier, nous pouvons voir une option permettant le chiffrement :
Il est possible d'utiliser HTTPS pour les dialogues, il faudra passer par Apache avec une configuration de virtualhost comme ci-dessous :
<
VirtualHost *:443
>
ServerName www.myseafile.com
# Use "DocumentRoot /var/www/html" for Centos/Fedora
# Use "DocumentRoot /var/www" for Ubuntu/Debian
DocumentRoot /var/www
Alias /media /home/user/seafile/seafile-server-latest/seahub/media
RewriteEngine On
<
Location /media>
Require all granted
<
/Location>
#
# seafile fileserver
#
ProxyPass /seafhttp http://127
.0
.0
.1
:8082
ProxyPassReverse /seafhttp http://127
.0
.0
.1
:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# seahub
#
SetEnvIf Authorization "(.*)"
HTTP_AUTHORIZATION
=
$1
ProxyPass / http://127
.0
.0
.1
:8000
/
ProxyPassReverse / http://127
.0
.0
.1
:8000
/
<
/VirtualHost>
Les chemins sont à adapter à votre situation.
Il faudra activer les modules rewrite et proxy_http :
a2enmod rewrite
a2enmod proxy_http
4-1-3. Bilan▲
Les fichiers stockés dans le dossier seafile-data ne sont pas exploitables tels quels, ils sont stockés sous forme de blocs avec des noms de fichiers sous forme de UUID. La perte des bases de données signifiera la perte des documents sur le serveur. Il est possible d’effectuer un montage FUSE avec la commande seaf-fuse en indiquant le point de montage :
./seaf-fuse.sh start /mnt
Dans le point de montage, vous allez trouver un dossier pour chaque utilisateur, qui va contenir un dossier par bibliothèque de l'utilisateur. Le nom du dossier de bibliothèque est composé d'un UUID suivi du nom de la bibliothèque. Les bibliothèques cryptées n’apparaîtront pas.
L'application Android fonctionne et m'a permis de modifier un document Word depuis l'application Word Android. Le document peut également être ouvert depuis stockage interne/seafile/nom utilisateur/[nom de la bibliothèque].
4-2. Syncthing▲
Syncthing est un système qui fonctionne en mode Peer 2 Peer, un peu comme BitTorrent. Des membres de la communauté mettent à disposition des serveurs de découverte, servant à mettre en communication deux postes devant se synchroniser. Ces serveurs ne participent pas au transfert de données. Vous pouvez utiliser vos propres serveurs de découverte, que vous pouvez ouvrir ou non à la communauté.
Syncthing est libre et écrit en Go.
Dans le cadre de ce tutoriel, nous installerons Syncthing sur une machine Linux qui se comportera comme un serveur dédié.
L'installation se fera via les dépôts de syncthing.
Vous pouvez aussi télécharger l'archive tar.gz sur le site de Syncthing.
Voici les commandes pour installer Syncthing :
wget https://syncthing.net/release-key.txt
apt-key add release-key.txt
apt-get update
echo 'deb https://apt.syncthing.net/ syncthing stable'
>>
/etc/apt/sources.list
apt-get update
apt-get install syncthing
Vous devrez peut-être installer le paquet apt-transport-https.
Dans les messages affichés sur la console, nous pouvons voir que par défaut, l'interface d'écoute est sur 127.0.0.1:8384.
Vous pourrez voir également des ouvertures de port vers l’extérieur que nous évoquerons plus tard.
Si vous exécutez syncthing en root, vous aurez un warning vous demandant d’exécuter celui-ci depuis un compte standard. Nous lancerons donc Syncthing depuis un compte non root.
Nous devons changer l'adresse d'écoute, qui par défaut est sur localhost. Pour cela, il faudra modifier le fichier config.xml se trouvant dans ~/.config/syncthing après avoir arrêté syncthing.
Il faudra descendre un peu dans le fichier jusqu’au bloc <gui …
Nous remplacerons donc la valeur dans le bloc <address>.
Appeler Syncthing tel quel va bloquer la console. Il faudra créer un démon de façon à pouvoir gérer le démarrage et l'arrêt.
Dans un premier temps, il sera possible d'ajouter une esperluette de façon à lancer l'application en tâche de fond :
syncthing &
Lors de la première connexion, vous aurez l'écran suivant :
Par défaut, il n'y a pas de mot de passe, nous en avons un avertissement :
Nous cliquons sur « Configuration » :
Nous pouvons renommer le serveur via le champ « Nom convivial local de l'appareil ».
Entrons dans le second écran « interface graphique » :
Nous pouvons également activer le support du HTTPS sur l'interface web.
Le navigateur nous retournera une alerte de sécurité, ceci à cause du certificat autosigné.
Une fois le mot de passe enregistré, nous aurons une fenêtre .htaccess d'authentification :
La modification de la configuration a posteriori se fera par le menu « Actions » en haut à droite :
Avant de gérer les partages, effectuons les réglages de connexion dans le dernier onglet de l'écran de configuration :
Syncthing fonctionne en mode P2P (peer to peer). Les blocs de fichiers peuvent être transférés depuis plusieurs nœuds. Chaque machine participante peut être à la fois cliente et serveur. Dans un réseau P2P, la gestion peut être centralisée ou décentralisée. Les nœuds doivent connaître les machines participantes pour pouvoir télécharger les fichiers, c'est le rôle des serveurs de découverte. Toute machine peut être serveur de découverte ou utiliser les serveurs de découvertes publics fournis par syncthing ou des serveurs mis à disposition par les membres de la communauté.
Si vous cochez la case « découverte globale », votre machine sera, par défaut, serveur global de découverte).
Pour utiliser uniquement votre serveur de découverte, vous devrez installer le paquet syncthing-discosrv. Le serveur de découverte se lancera avec la commande service stdiscosrv start.
Voir la remarque précédente sur la création d'un démon.
Si vous souhaitez utiliser votre propre serveur de découverte, il vous faudra supprimer « default » dans le champ « serveurs de découverte globale ».
Une fois l'entrée supprimée, et la configuration enregistrée, Syncthing vous informera qu'il faut redémarrer :
Au redémarrage, vous aurez l'avertissement suivant :
Syncthing ne sait pas quel serveur de découverte utiliser. Même si celui-ci est installé sur le même serveur, il faut lui renseigner son adresse IP précédée de https://.
4-2-1. Serveur de relais▲
Syncthing peut relayer des paquets entre deux machines si celles-ci ne peuvent pas communiquer en direct. Vous pouvez devenir relais et vous intégrer au pool de relais disponibles. Il vous faudra alors installer le paquet syncthing-relaysrv. Dans le cadre de ce tutoriel, nous n'utiliserons pas cette fonctionnalité et nous décocherons donc l'option « relayage possible ».
4-2-2. Création/modification des partages▲
Nous pouvons voir un « default folder » non partagé par défaut. En cliquant dessus, nous obtenons le détail :
Nous pouvons voir que par défaut, le dossier partagé est ~/sync.
Vous pouvez l'activer, ou le supprimer et en créer d'autres (via les boutons ajouter, supprimer, gérer).
Les informations pertinentes seront :
- le nom du partage (onglet général) ;
- le dossier vers lequel celui-ci pointe (onglet général).
Le type de rétention du fichier dans l'onglet « Méthode de préservation des fichiers » avec :
- pas de poubelle ;
- style poubelle : les fichiers sont déplacés dans le dossier .stversion quand ils sont modifiés ou supprimés, il faudra indiquer le nombre de jours de conservation avant effacement définitif ;
- suivi simplifié de version : les fichiers modifiés/supprimés sont déplacés dans .stversion avec horodatage. Il faut indiquer le nombre de versions à conserver ;
- version échelonnée : un peu plus complète que le choix précédent, avec création d'un chemin relatif identique à l'emplacement d'origine. Pendant l'heure en cours, les versions sont conservées toutes les 30 secondes, au bout d'une journée, une version par heure est gardée, au bout de 30 jours, une version par jour est gardée, jusqu'à l'âge maximum (par défaut un an), une version est conservée par semaine ;
- gestion externe : gérée par une commande externe à syncthing, commande à renseigner.
Options avancées :
- intervalle d'analyse : impacte la fréquence de synchronisation et donc la bande passante utilisée ;
- type de partage : lecture seule (appelée envoi) ou lecture écriture (appelée envoi/réception).
Je vous laisse tester ou consulter la documentation concernant les autres options.
4-2-3. Utilisation du client Windows▲
Après récupération du fichier .zip Windows sur la page de téléchargement, nous le plaçons sur le disque C (choix arbitraire).
L'exécutable est en ligne de commande (sans interface graphique). Il y a un outil annexe nommé syncthing-gtk pour pouvoir travailler depuis l'interface graphique.
Nous téléchargeons et installons ensuite syncthing-gtk et obtenons l'écran suivant :
Nous activons le démon automatiquement.
Celui-ci va nous demander le chemin du démon que nous avons placé sur le disque C (à adapter si vous avez choisi un autre chemin) :
Après autorisation de l’accès au pare-feu Windows, nous obtiendrons l’écran suivant, similaire à celui de l’interface web précédemment vue :
Depuis le navigateur, à l’adresse http://127.0.0.1:8384, nous obtenons la même interface, interface que nous avons déjà vue sur la machine faisant office de serveur.
Nous allons maintenant jumeler notre client Windows avec la machine Linux, pour cela, nous récupérons l'id du Linux depuis le menu Actions :
Celui-ci va nous donner un identifiant ainsi qu’un QR-Code :
Dans le menu syncthing-gtk, nous ajoutons l'appareil :
Nous cliquons « Ajouter un appareil » et renseignons les champs et surtout l’identifiant du serveur :
Les tests étant effectués en local, j'ai forcé l'utilisation de la machine Linux pour la découverte des machines.
Au niveau du serveur, nous avons le message suivant :
Une fois le bouton « Ajouter l'appareil » cliqué, les deux postes seront jumelés.
Nous avons ensuite le partage par défaut du Windows de test qui demande à être intégré :
Dans le bas de l’écran, nous voyons que l’ordinateur wam-PC (le poste de test) est connecté.
Le dossier en provenance de wam-PC que nous nommons Commun va apparaître dans la liste des partages :
À ce stade, les fichiers stockés dans le dossier partagé du Windows (%userprofile%\Sync) vont apparaître dans le dossier /home/[compte Syncthing]/commun et vice-versa, la synchronisation est opérationnelle.
4-2-4. Bilan▲
Ce système ne nécessite aucun serveur en interne. Il a par contre l'inconvénient de pouvoir poser des difficultés pour passer les pare-feu par son utilisation P2P. Il faut aussi accepter l'utilisation de serveurs tiers pour la découverte à moins d'en mettre en service en interne et d'en interdire (ou autoriser) l'accès aux utilisateurs tiers.
4-3. Sparkleshare▲
SparkleShare s'appuie sur Git pour synchroniser les données. Le fait d'utiliser Git permet d'avoir facilement une gestion des versions. Les données sont transmises cryptées (par le biais de SSH).
SparkleShare est téléchargeable directement depuis le site web. Pour la version Linux, que nous utiliserons en serveur, SparkleShare recommande l'utilisation de Flatpak, un système de conteneur/paquets.
Nous commençons par installer flatpak :
apt-get install flatpak ca-certificates
Le paquet ca-certificate est un prérequis
et indique la méthode d'installation :
flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.sparkleshare.SparkleShare
La commande renvoie :
Required runtime for
org.sparkleshare.SparkleShare/x86_64/stable (
org.gnome.Platform/x86_64/3
.28
) is not installed, searching...
Found in
remote flathub, do
you want to install it? [y/n]: y
Installing: org.gnome.Platform/x86_64/3
.28
from flathub
Receiving delta parts: 0
/10
13
,8
MB/s 27
,6
MB/268
,4
MB 17
seconds remaining
10
delta parts, 81
loose fetched; 262039
KiB transferred in
315
seconds
Installing: org.freedesktop.Platform.ffmpeg/x86_64/1
.6
from flathub
1
delta parts, 3
loose fetched; 2650
KiB transferred in
0
seconds
Installing: org.gnome.Platform.Locale/x86_64/3
.28
from flathub
21
metadata, 82
content objects fetched; 2925
KiB transferred in
1
seconds
Installing: org.sparkleshare.SparkleShare/x86_64/stable from flathub
3
delta parts, 63
loose fetched; 93373
KiB transferred in
35
seconds
Installing: org.sparkleshare.SparkleShare.Locale/x86_64/stable from flathub
5
metadata, 1
content objects fetched; 2
KiB transferred in
0
seconds
root@Debian:~#
Pour installer SparkleShare, il faudra télécharger le script suivant :
wget https://raw.githubusercontent.com/hbons/Dazzle/master/dazzle.sh --no-check-certificate
Une fois le script rendu exécutable (chmod u+x), nous lancerons la commande :
./dazzle.sh setup
Ceci installera les dépendances, et finira par le message :
Setup complete!
To create a new project, run "dazzle create PROJECT_NAME"
.
Nous créons ensuite un partage, nommé « PROJECT » dans la nomenclature SparkleShare.
Puis nous créons le projet « TEST » :
./dazzle.sh create TEST
Ceci va créer un dépôt git nommé TEST dans le dossier /home/storage/TEST.
~# ./dazzle.sh create TEST
Creating project "TEST"
...
->
/usr/bin/git init --bare /home/storage/TEST
->
/usr/bin/git config --file /home/storage/TEST/config receive.denyNonFastForwards true
->
echo "*.DMG -delta"
>>
/home/storage/TEST/info/attributes
->
chown --recursive storage:storage /home/storage
->
chmod --recursive o-rwx /home/storage/TEST
Project "TEST"
was successfully created.
To link up a SparkleShare client, enter the following
details into the "Add Hosted Project..."
dialog:
Address: ssh://storage@192
.168
.1
.15
:
Remote Path: /home/storage/TEST
To link up (
more) computers, use the "dazzle link"
command.
~#
Il est possible de créer plusieurs dépôts/projets sur la même machine.
4-3-1. Installation du client sous Windows▲
Nous lançons l'installation du client depuis le site officiel.
Il vous sera demandé votre adresse mail, car il est possible d'utiliser des dépôts GitHub ou Gitorious comme espace de stockage.
Un message indique la création d'un dossier de synchronisation, et propose un tutoriel :
Une fois l'installation effectuée, votre ID client sera affiché. Il sera possible de le réobtenir ultérieurement.
L'installation est ensuite terminée, reste à créer le connecteur.
La première chose à faire est d'enregistrer le client auprès du serveur :
~# ./dazzle.sh link
Paste your Client ID (
found in
the status icon menu) below and press <
ENTER>
.
Client ID: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxP/ZXGZ9v3TBK2R3RVR/FeJhsLdZeYtFT62EQ5qKdVCZayZewZRMMoSMUphxyuJlPP88mTvfNiTHczED0fuzhnSDE9MMgDVpm3LXdF/8To5KSB010XQjX2A88AI8lkRIkrEXOAbZEiJfTt8TPXlDWd/pOisqiEpxQ4T+NrkEf4TEc5EpsBH5qxWGc5kMjgd8+1moItJ8BUpqVXcXDtJg1Aj3tzhr1SiuOOdQmny5pA2+yFlT0qJ3sTCaCy8gD6OUeUYLhMvAU8kpyL2dwvbGVUVfKHIMjl6waCRMGhHQmRhF2ADifBSd2CcqFO7LO8N7sUnLICoZ9ROaMKZ6ptUBfw
==
wam-PC
The client with this ID can now access projects.
Repeat this step to give access to more clients.
~#
Il faut ensuite aller dans le menu contextuel de SparkleShare pour créer le connecteur et sélectionner « add hosted project » :
Nous sélectionnons ensuite « On my own server » et renseignons les données précédemment communiquées par le serveur (Address et Remote Path)
..
Sous Windows, le dépôt est copié en local dans le dossier %userprofile%\SparkleShare\<nom du projet>. Toute modification de ces fichiers est répercutée sur le serveur.
Il n'est pas possible de sélectionner le dossier à synchroniser dans le dépôt, ou d'en ajouter d'autres.
4-3-2. Suivi de version▲
Il est possible d'accéder à l'historique de version depuis le menu déroulant SparkleShare. Il faudra sélectionner « Recent changes » :
En cliquant sur les documents (au niveau de l'heure), il est possible d'accéder aux différentes révisions :
Cliquer sur « restore » va alors ouvrir une boite de dialogue demandant où enregistrer le fichier. Le nom de fichier par défaut est complémenté par la date et l'heure.
Il n'y a pas de fonction de nettoyage des versions ni de durée de rétention, la rétention est illimitée.
Vous pouvez nettoyer le dépôt avec les commandes suivantes depuis le dossier du dépôt (/home/storage/TEST dans notre exemple) :
git gc --prune
=
now --aggressive
git repack -a -d -l
Cette manipulation va effacer l'ensemble de l’historique dans le dépôt pour ne garder que les versions les plus récentes.
Cette manipulation a été faite suite à une recherche Internet, sans maîtrise de Git, cela peut peut-être avoir des conséquences.
4-4. Pydio▲
Pydio, acronyme de « Put Your Data In Orbit », a été créée par une startup française. Pydio (anciennement AjaXplorer) est fourni sous deux versions, une version communautaire et une version entreprise avec support et les fonctions supplémentaires suivantes :
- meilleure personnalisation de l'interface (couleurs, logo…) ;
- interface simplifiée de partage « easy transfer » similaire à WeTransfer ;
- possibilité de désactiver l'option de chat dans les Cells ;
- applications mobiles gratuites préconfigurées ;
- possibilité de faire des règles de sécurité autour des métadonnées ;
- politique d'autorisation dans le carnet d'adresses : partage des utilisateurs et des équipes avec d'autres utilisateurs ;
- politique d’historique de version plus poussée ;
- Dynamic Nodes Programming (pour des grosses volumétries) ;
- journaux d'usage séparés des journaux techniques ;
- possibilité de couper des sessions suspectes ;
- Role bases ACL (filtrage par IP, terminaux, géographie…..) ;
- les connecteurs aux annuaires depuis Pydio Cells ne sont plus dans la version gratuite (les connexions Pydio 8 étaient des contributions communautaires).
Il est disponible pour Windows, MacOS X, Linux (64 bits), IOS, et Android.
La version entreprise est disponible pour Linux et Mac OS Server. Des images OVF (Open Virtual machine Format) sont disponibles. Pydio est également disponible dans Docker.
Pydio fonctionnait précédemment en PHP, il a été complètement réécrit en Go. La nouvelle version se nomme Pydio Cells. Le terme Pydio utilisé ci-dessous désigne Pydio Cells.
Pydio nécessite MySQL 5.7 minimum (ou MariaDB >10.3).
Nomenclature Pydio
Pydio utilise les termes suivants dans sa nomenclature :
- Workspaces : contrôles d'accès principaux gérés par les administrateurs ;
- Cell : espace de travail dynamique géré par les utilisateurs.
4-4-1. Installation▲
4-4-1-1. Installation des prérequis▲
Nous installons MariaDB (sur Debian 9, mysql-server pointe vers MariaDB) :
apt-get install mysql-server
Nous lançons ensuite le script mysql_secure_installation.
Nous créons ensuite une base de données :
~
# Mysql -u root -p
MariaDB [(none)]
>
CREATE
USER
'pydio'
@'localhost'
IDENTIFIED
BY
'<mot de passe>'
;
Query
OK, 0
rows
affected (
0
.00
sec)
MariaDB [(none)]
>
CREATE
DATABASE
cells;
Query
OK, 1
row
affected (
0
.00
sec)
MariaDB [(none)]
>
GRANT
ALL
PRIVILEGES
ON
cells.*
TO
'pydio'
@'localhost'
;
Query
OK, 0
rows
affected (
0
.00
sec)
MariaDB [(none)]
>
MaFLUSH PRIVILEGES
;
Query
OK, 0
rows
affected (
0
.00
sec)
MariaDB [(none)]
>
exit
Bye
~
#
4-4-1-2. Installation et configuration de Pydio▲
Nous commençons par créer l'utilisateur pydio :
adduser pydio
Nous nous loguons sous le compte Pydio, téléchargeons le .zip depuis le site et le décompressons.
~$
wget https://download.pydio.com/latest/cells/release/{latest}/linux-amd64/pydio-cells-{latest}-linux-amd64.zip –no-check-certificate
Une fois le .zip décompressé, nous nous retrouvons avec un exécutable nommé cells (ou cells-enterprise pour la version entreprise) que nous lançons :
./cells
Celui-ci affichera un résumé de la documentation (équivalent à l’option –-help) dont voici la sortie :
Thank you for
using Pydio Cells.
Comprehensive sync &
share solution for
your collaborators. Open-source software deployed on-premise or in
a private cloud.
### Installation
For
the very first run, use './cells install'
to load browser-based or command-line based installation wizard. Services
will start at the end of the installation.
### Run
Run './cells start'
to load all services.
### Logs level
By default, logs are outputted in
console format at the Info level. You can set the --log flag or set the PYDIO_LOGS_LEVEL environment
variable to one of the following values:
- debug, info, error : logs are written in
console format with the according level
- production : logs are written in
json format, for
usage with a log aggregator tool.
### Services Discovery
Micro services need a registry mechanism to discover each other. You don't need to install any dependency.
Cells currently only supports NATS (nats.io) implementation. If a gnatsd service is already running, it will be detected.
### Cells working directories
By default, application data is stored under the standard OS application dir :
- Linux: ${USER_HOME}/.config/pydio/cells
- Darwin: ${USER_HOME}/Library/Application Support/Pydio/cells
- Windows: ${USER_HOME}/ApplicationData/Roaming/Pydio/cells
You can customize the various storage locations with the following ENV variables :
- CELLS_WORKING_DIR : replace the whole standard application dir
- CELLS_DATA_DIR : replace the location for storing default datasources (default CELLS_WORKING_DIR/data)
- CELLS_LOG_DIR : replace the location for storing logs (default CELLS_WORKING_DIR/logs)
- CELLS_SERVICES_DIR : replace location for services-specific data (default CELLS_WORKING_DIR/services)
Usage:
./cells [flags]
./cells [command]
Available Commands:
acl Manage access control lists
completion Add auto-completion helper to Cells
config Configuration manager
data Directly interact with a datasource
doc Manage documentation about Cells and this CLI tool
help Help about any command
install Launch the installation process
meta Directly manage metadata on the nodes
ps List all available services and their statuses
start Start Cells services
stop Stop one or more services
update Check for available updates and apply them
user Manage users
version Show Pydio Cells version information
Flags:
--broker string Pub/sub service for events between services (currently nats only) (default "nats")
--broker_address string Broker port (default ":4222")
--enable_metrics Instrument code to expose internal metrics
--enable_pprof Enable pprof remote debugging
--fork Used internally by application when forking processes
--grpc_cert string Certificates used for communication via grpc
--grpc_external string External port exposed for gRPC (may be fixed if no SSL is configured or a reverse proxy is used)
--grpc_key string Certificates used for communication via grpc
-h, --help help for ./cells
--log string Sets the log level mode (default "info")
--registry string Registry used to manage services (currently nats only) (default "nats")
--registry_address string Registry connection address (default ":4222")
--registry_cluster_address string Registry cluster address (default ":5222")
--registry_cluster_routes string Registry cluster routes
--transport string Transport protocol for RPC (default "grpc")
--transport_address string Transport protocol port (default ":4222")
Use "./cells [command] --help" for more information about a command.
Nous procédons comme indiqué à l'installation :
./cells install
Nous obtenons le résultat suivant :
[Configs] Upgrading: setting default config services/pydio.web.oauth/secret to WRESXzxulWGn9-gK8.kKeqcwB4xBfVHM
[Configs] successfully saved config after upgrade - Reloading from source
WARNING: File descriptor limit 1024
is too low for
running Pydio Cells Home Edition in
production. At least 8192
is recommended. Fix with "ulimit -n 8192"
.
Welcome to Pydio Cells Home Edition installation
Pydio Cells Home Edition will be configured to run on this machine. Make sure to prepare the following data
- IPs and ports for
binding the webserver to outside world
- MySQL 5
.6
+ (
or MariaDB equivalent) server access
Pick your installation mode when you are ready.
Cannot find vaultKeyPath, creating new one /home/pydio/.config/pydio/cells/cells-vault-key
**************************************************************
Warning!
A keyring is not found on this machine,
A Master Key has been created for
cyphering secrets
It has been stored in
/home/pydio/.config/pydio/cells/cells-vault-key
Please make sure to secure this file and update the configs
with its new location, under the defaults/keyPath key.
***************************************************************
Use the arrow keys to navigate: ↓ ↑ → ←
? Installation mode:
▸ Browser-based (
requires a browser access)
Command line (
performed in
this terminal)
Nous choisissons l'installation via le navigateur (Browser-based). L'installeur va nous proposer l'adresse utilisable correspondant à l'adresse IP de la machine sur le port 8080, que nous sélectionnons :
- Browser-based (
requires a browser access)
Use the arrow keys to navigate:
Use the arrow keys to navigate:
Binding Host (
ip:port or yourdomain.tld that the webserver will listen. If
internal and external urls differ, use internal here):
+ Other
- 192
.168
.1
.200
:8080
localhost:8080
- Browser-based (
requires a browser access)
Use the arrow keys to navigate:
- 192
.168
.1
.200
:8080
- External Host (
used to access this machine from outside world if
it differs from Bind Host): 192
.168
.1
.200
:8080
Nous validons par un retour chariot.
L'étape suivante consiste à régler SSL, il nous est proposé :
- d'entrer le chemin des certificats ;
- d'utiliser un certificat Let's Encrypt ;
- de générer un certificat autosigné.
Use the arrow keys to navigate: ↓ ↑ → ←
? Choose TLS activation mode. Please note that you should enable SSL even behind a reverse proxy, as HTTP2 'TLS => Clear'
is generally not supported:
Provide paths to certificate/key files
▸ Use Let's Encrypt to automagically generate certificate during installation processerate your own locally trusted certificate (for staging env or if you are Generate your own locally trusted certificate (for staging env or if you are
L'installeur depuis la ligne de commande se met ensuite en écoute sur le port web Pydio (8080). Voici l'écran de l'interface d'installation web :
En version Entreprise, vous aurez un écran supplémentaire vous demandant d'entrer votre clé de licence :
Une fois les conditions acceptées, nous nous retrouvons dans l'écran de paramétrage de la base de données :
Nous arrivons ensuite à l'écran nous demandant :
- le nom de l'application ;
- la langue par défaut ;
- le login et mot de passe d'administration.
Un dernier écran de confirmation avant installation permettant d'afficher un résumé des réglages (détail affiché via l'appui du bouton à cet usage) :
Vous aurez ensuite le message « install successful » indiquant que la fenêtre sera rechargée une fois les services activés :
Nous nous retrouvons ensuite devant l’écran de connexion :
Une fois l'installation terminée, il faudra redémarrer cells avec l'option start comme ceci :
$
./cells start
Restera ensuite à automatiser le démarrage (par la création d'une Unit systemd).
4-4-2. Découverte de l'interface▲
Une fois connectés, nous nous trouverons devant une interface assez simple d'utilisation. Dans la partie gauche (1), vous avez les différentes « Cells », pouvant être vues comme une bibliothèque ou unité de partage. Vous avez aussi votre répertoire par défaut (« Personal files »).
Dans la barre en haut, vous avez les fonctions afférentes aux fichiers (2), puis en dessous les fichiers présents (3). Et enfin, dans la partie droite, le détail sur les fichiers (4).
Il est également possible de faire les manipulations sur les fichiers en cliquant dessus avec le bouton droit de la souris pour obtenir le menu contextuel :
4-4-2-1. Partage▲
Pour partager un fichier, vous avez deux possibilités :
- créer un lien de partage public ;
- mettre le document dans un Cell pour le partager.
Pour activer le lien public, il faut cliquer sur le bouton droit pour activer le lien public :
Le lien sera ensuite affiché :
En cliquant sur Accès, vous pourrez :
- mettre un mot de passe restreignant l'accès :
- mettre une date d'expiration :
- limiter le nombre de fois que le fichier peut être téléchargé.
Écran correspondant à un lien de partage :
En cas de téléchargement expiré ou de nombre maximum atteint, vous aurez ce type de message :
This link as expired (
number of maximum downloads has been reached).
Pour partager avec un utilisateur Pydio, il faudra sélectionner celui-ci dans la partie droite en cliquant sous le nom du fichier, ce qui fera apparaître un menu déroulant avec les utilisateurs. Vous pourrez choisir les droits (lecture ou lecture/écriture) :
Une fois le partage créé, l'entrée du menu contextuel change de « Partager » à « Éditer le partage ».
4-4-3. Administration▲
Seules les options les plus pertinentes sont détaillées ci-dessous.
L'accès à l'interface d'administration se fait en cliquant sur les trois points en haut à gauche, depuis le compte administrateur :
Le retour à l'interface standard se fait en cliquant sur l’icône dossier en haut à droite.
Voici l'interface d'administration pour la version communautaire :
Pour avoir accès à toutes les fonctionnalités, il faudra cliquer sur l’icône en haut à droite.
Une fois dans l’écran d'administration, vous aurez sur la gauche cinq catégories :
- Gestion des identités ;
- Gestion des données ;
- Logs & autres données ;
- Configurations globales ;
- Ressources développeurs.
4-4-3-1. Gestion des identités▲
La section « Gestion des identités » permet de gérer les utilisateurs et leurs droits.
Pour gérer les utilisateurs, il faut cliquer sur « Utilisateurs » :
En cliquant sur le crayon à côté du nom d'un utilisateur, nous avons accès au détail de son compte avec notamment la langue (effectif après reconnexion), les Cells auxquels il a accès :
En cliquant sur les trois petits traits en haut à droite de la fenêtre de l'utilisateur, vous pourrez changer le mot de passe, avec une option forçant le changement immédiatement, et « Exclure » celui-ci. Exclure un utilisateur signifie suspendre son compte (qu'il sera possible de réactiver).
Supprimer un utilisateur n'effacera pas son dossier personnel dans les données de Pydio.
Vous aurez aussi accès à la gestion des droits des dépôts (workspaces) accessibles :
La gestion des rôles permet de créer des règles par défaut pour un groupe d'utilisateurs (accès à certains dépôts, langue par défaut, etc.).
4-4-3-2. Gestion des données▲
La partie dépôts vous permettra d'ajouter de nouveaux workplaces pointant sur un sous-dossier du disque (pour créer un nouveau dossier, il faudra taper son nom).
Il est précisé dans l'interface que la synchronisation est expérimentale.
La partie Datasources permet de gérer les volumes accessibles à Pydio, avec par défaut le volume local. Vous pouvez également utiliser un volume Amazon S3. C'est à ce niveau que se gère le versioning. C'est à cet endroit également que vous pourrez activer le chiffrement.
Le système de gestion des versions propose :
- tout garder (keep all) ;
- maximum 30 jours : garde trois versions et efface celles supérieures à 30 jours ;
- Suppressions régulières : rétention jusqu'à 10 versions avec espacement 10 min, puis 3 h, puis 1 jour, etc. (voir détail en cliquant sur la fonction).
4-4-3-3. Configurations globales▲
Dans la partie options principales, vous retrouverez le titre de l'application ainsi que la langue par défaut. Ce sont les éléments qui ont été demandés lors de l'installation.
Dans la partie envoi de courriels, vous pourrez positionner les réglages permettant à Pydio d’envoyer des mails.
Dans la partie Authentification, vous pourrez régler la longueur minimale du mot de passe.
Dans la partie extensions, vous pourrez activer/désactiver des fonctionnalités optionnelles comme le visualiseur PDF, l'aperçu d'images, le visualiseur OpenDocument, l'accès à Collabora Online.
4-4-4. Utilisation du client▲
Le client Pydiosync est disponible pour Windows, Mac OS X, et Linux, mais uniquement pour l'ancienne version Pydio 8.
Pas de client PydioSync pour Pydio Cell pour le moment.
Une fois le client Pydiosync installé, la première chose à faire sera de créer une synchronisation :
Nous entrons ensuite les éléments nécessaires à la connexion (ne pas oublier de préciser le port : 8080 par défaut) :
4-4-4-1. Stockage des fichiers sur le disque▲
Les fichiers que vous stockez dans Pydio sont retrouvables dans le compte utilisateur utilisé pour faire fonctionner Pydio dans le dossier ~/.config/pydio/cells/data/ soit dans le sous-dossier cellsdata/[nom d'utilisateur] soit dans personal/[nom d'utilisateur]. Le dossier versions va contenir les différentes versions des fichiers sous forme de nom de fichier UUID.
La sauvegarde de la totalité du dossier .config/pydio/cells permet de conserver les données et la configuration. Il ne faudra pas oublier d'y associer un dump de la base de données.
4-4-5. Version commerciale▲
La première différence visible concerne le tableau de bord, avec des informations globales pour l'administrateur :
Contrairement à celui de la version communautaire :
La différence suivante est l'apparition d'une entrée supplémentaire « External Directories » servant à créer un connecteur LDAP ou Active directory :
Voici l'écran de réglages :
Pour plus d'informations, vous pouvez consulter la documentation officielle.
Autre menu supplémentaire : « Appearance ». À cet endroit, vous pourrez mettre votre logo et vos images de fond, fonction non disponible dans la version Community.
Ici, la page web a été dézoomée (50 %) pour permettre de voir le détail des réglages. La page web s'adapte à l’affichage (responsive).
4-4-6. Bilan▲
L'ancienne version Pydio 8.2.1 était plus souple et plus facile à installer que son successeur Pydio Cells, car écrit en PHP et s'appuyant sur des plugins faisant référence (tels que SabreDAV). Pydio Cells a un prérequis plus important.
Pas de fonction de connexion à un annuaire LDAP ou Active Directory dans la version Community, contrairement à Pydio 8.2.1. Pour ce type de connexion, il est nécessaire d'utiliser la version commerciale.
Pas de client de synchronisation pour le moment, celui-ci étant en cours de réécriture pour Cells, le client présenté précédemment correspond à celui de Pydio 8, la future version devrait lui ressembler.
La réussite de l'installation semble hasardeuse, celle-ci bloquant à la phase d'installation (peut-être dû au non-respect des prérequis minimums sur ma VM de test).
5. Solution maison▲
L'idée sera ici de synchroniser un dossier local avec un dossier distant avec une solution créée par moi-même.
Ceci sera implémenté par deux fonctionnalités différentes :
- la synchronisation d'une source avec une destination (bidirectionnelle ou non) ;
- le déclenchement de cette synchronisation lors d'une modification dans la source.
5-1. Linux▲
Pour synchroniser deux dossiers, la solution la plus simple sera d’utiliser rsync. L'utilisation de rsync sera faisable via une connexion SSH vers la destination. rsync permettant la synchronisation de deux dossiers « locaux », il sera possible de synchroniser vers n'importe quel type de partage tant que celui-ci peut être monté dans sur un point de montage de « / » et qu'il respecte les accès fichier POSIX.
Rappel : rsync fait une synchronisation en sens unique. Si vous avez besoin d'une synchronisation bi-directionnelle, vous pouvez utiliser Unison.
Nous pourrons ensuite surveiller les événements se passant sur le dossier source avec incron (Inotify cron).
Incron reprend le principe de fonctionnement de cron en reposant sur un fichier incrontab.
Voici un exemple d'entrée de surveillance pour le dossier /home/test :
/home/test/ IN_CREATE|
IN_MODIFY rsync -avz [source] [destination]
L'entrée précédente va par exemple déclencher rsync à chaque création ou modification de document.
5-2. Windows▲
Il existe une multitude d'applications permettant la synchronisation entre une source et une destination. Robocopy est une commande système puissante (sans interface graphique) avec beaucoup d'options. En l’utilisant de façon intelligente, notamment dans un script, vous pourrez effectuer des sauvegardes.
Exemple :
Robocopy.exe "c:\source"
"d:\destination"
/MIR /z /dcopy:T /XD "toto"
/LOG+:"C:\MonRepertoireSource_2020-07-22.txt"
Le dossier c:\source sera synchronisé avec le dossier destination. Explications des options :
- /MIR : équivalent à /e (copie des sous-répertoires) et /purge (supprime de la destination les fichiers et dossiers n'existant plus dans la source) ;
- /z : copie en mode redémarrable ;
- /dcopy : attributs de copie D=données,A=attributs, T=timestamp (DA par défaut) ;
- /xd : exclusion de dossier (/xf pour exclure un fichier) ;
- /log+ : nom du fichier de log (le + permet le mode ajout, sinon le fichier est remplacé s’il existe).
plus d'informations sur robocopy ici.
WinSCP permet de synchroniser un dossier local avec un dossier distant via SSH, et ceci de façon automatisée si vous le souhaitez. WinSCP est fourni avec une application en ligne de commande.
Il faudra à cela ajouter un système de contrôle des modifications dans le dossier source, par exemple Watch For Folder, un outil très léger et simple d'utilisation le fera très bien pour vous.
Ci-dessous une copie d'écran :
Une fois le profil créé, il ne faudra pas oublier de le démarrer en appuyant sur « Start », dans l’écran listant les profils. Écran que l’on obtient après avoir appuyé sur « Apply » :
Pour un aficionado de PowerShell, il ne devrait pas être compliqué de faire un équivalent simple (sans interface graphique par exemple) en quelques lignes de code.
Il existe des portages de la commande rsync sous Windows, comme deltacopy. Mais autant utiliser une commande native comme robocopy si vous n'avez pas besoin d'interface graphique.
5-3. Mac OS X▲
Mac OS X inclus rsync. Il existe, comme sur Windows (et quelques fois les mêmes que sous Windows), une multitude de logiciels de synchronisation.
Avec Automator, et une action dossiers, vous pourrez déclencher un événement lors de l'ajout d'un élément, mais Automator ne permet pas d'intercepter une modification ou une suppression de fichier.
Apple fournit une API « File System Event » permettant à une application d'être notifiée d'un changement dans un dossier. Cet API peut être utilisée avec fswatch, un outil cross-platform en ligne de commande (installable sous Mac OS X avec homebrew).
Tri-Backup, logiciel de sauvegarde faisant référence et payant, comporte une option de surveillance de dossier permettant de déclencher une action. Le but premier de tri-backup reste la sauvegarde incrémentale et le clonage de disque.
Hazel est un utilitaire payant permettant d'appliquer des critères à un dossier selon une règle définie, celui-ci n'a pas été testé.
6. Remerciements▲
Je remercie Mickael Baron, khayyam90, LittleWhite, et Louis-Guillaume Morland pour leur relecture technique.
Je remercie Claude Leloup pour sa relecture orthographique.