Auto-hébergement : Seafile une alternative sérieuse pour monter son espace cloud personnel

Bonjour,

Aujourd’hui nous allons monter notre propre espace cloud personnel sur une machine Linux. Evidemment il existe plusieurs logiciels Open Source qui permettent de créer des services de stockage et d’applications diverses en ligne soi-même. D’ailleurs avant de m’intéresser à ce produit, j’ai utilisé le fameux logiciel libre Owncloud, couplé à son exécutable pour Windows client pour synchroniser certains documents de mon pc portable dont j’avais souvent besoin à l’extérieur de la maison.

Lors de mes recherches sur le Web, je suis tombé sur ce logiciel qui m’a semblé différent de ces concurrents car il se concentre plus sur le partag, la synchronisation et la sécurité des fichiers que des applications ou options tierces annexes.

A titre personnel ce qui m’intérrese sur ce logiciel c’est qu’il est multiplate-forme, disponible aussi sur mobile Apple et Android (application gratuite????) , il permet une gestion des droits, historique de version, co-edition en ligne de documents bureautiques (via Collabora Online) et bien-sur, cryptage.

En plus de tous les éléments cités plus haut son atout majeur selon mes besoins est le Drive Client qui permet d’installer un disque virtuel sur son pc et tous les documents qui sont rangés dans ce disque seront automatiquement synchronisés sur le serveur !

Vous pouvez voir toute les fonctionnalités du logiciel sur le site : https://www.seafile.com/en/home/

Il peut aussi être utilisé dans le cadre professionnel car il peut être couplé à un serveur Active Directory ou un LDAP.

Je vais vous montrer maintenant comment installer le dit logiciel, les schémas suivant expliquent comment le logiciel interagit avec les différents supports client ( et aussi pour connaitre aussi les ports à ouvrir en cas d’accès externe????)

1-Synchronisation entre les ordinateurs clients et le serveur Seafile

2-Synchronisation entre les smartphones et le serveur Seafile

a) Prérequis

Avant de se lancer dans les prérequis je vais vous présenter les différents services utilisés par le serveur Seafile et leur but

  • Ccnet daemon  (ccnet coté client or ccnet-server coté serveur) : Il sert en partie au transport des données entre les clients et le serveur
  • Seafile daemon : Service de données
  • Seahub : Service qui fournit l’application web du server seafile
  • FileServer : Service qui permet d’uploader et downloader les fichiers dans le serveur
  • Controller: Permet de controller les services ccnet et Seafile, en cas de souci il peut relancer les services.

Je vais lancer mon installation sur mon VPS qui tourne sous débian Jessie (8.11) avec les logiciels suivants déjà installé :

  • Apache2
  • Mysql

Si vous respectez ces prérequis vous pouvez lancer la mise à jour de votre système

apt-get update && apt-get upgrade
apt-get install python2.7 libpython2.7 python-setuptools python-ldap python-mysqldb python-memcache python-urllib3 python-requests
pip install Pillow==4.3.0
apt-get update
apt-get install python3 python3-setuptools python3-pip -y


pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy \
django-pylibmc django-simple-captcha python3-ldap
apt-get install memcached libmemcached-dev -y
pip3 install --timeout=3600 pylibmc django-pylibmc


systemctl enable --now memcached

Se rendre dans le repertoire ou vous voulez installer le logiciel

cd /votre/repertoire/

Créer le dossier Cloud

mkdir cloud

Se rendre dans le dossier cloud

cd cloud

Télécharger la dernière version de seafile. Lors de mes tests la dernière version est la 7.0

wget https://download.seadrive.org/seafile-server_7.0.0_x86-64.tar.gz

Décompressons le fichier que nous venons de télécharger

tar -xzf seafile-server_*

Il faut créer un dossier installed et déplacer le fichier compressé dans ce dossier

mkdir installed
mv seafile-server_* installed

Maintenant nous allons nous connecter à notre base de données mysql afin de créer 3 nouvelles bases pour accueillir notre logiciel et un utilisateur ayant les droits d’accès à ces bases

#connexion à la base sql
 mysql -u root -p
 
#Création des bases
 create database ccnet-db character set = 'utf8';
 create database seafile-db character set = 'utf8';
 create database seahub-db character set = 'utf8';
 
#création des utilisateurs
 create user 'seafile'@'localhost' identified by 'VotreMotDePasse';
 
#Attribution des droits à l'utilisateur sur les bases
 GRANT ALL PRIVILEGES ON ccnet-db.* to seafile@localhost;
 GRANT ALL PRIVILEGES ON seafile-db.* to seafile@localhost;
 GRANT ALL PRIVILEGES ON seahub-db.* to seafile@localhost;
 flush privileges ;

b) Installation du serveur seahub

Rendons nous dans le sous répertoire du dossier cloud pour procéder à l’installation

cd seafile-server-*
démarrer le script & lance le questionnaire d'installation
./setup-seafile-mysql.sh

Il faut donner un nom a votre serveur seafile

server name

Il faut ensuite entre le nom de domaine complet (FQDN) ou l’adresse IP qui va lui être attribué

Il faut indiquer le chemin ou vous voulez stocker vos données

Where do you want to put your seafile data?
Please use a volume with enough free space
[default "/votre/emplacement/seafile-data"]

Sur quel port voulez vous utiliser le serveur par défaut le 8082 mais vous pouvez le modifier

Port

Pour les bases de données, il faut choisir l’option [2] car nous avons déjà nos bases

-------------------------------------------------------
Please choose a way to initialize Seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

Pour l’emplacement de la base de données et le port laissez les paramètres par défaut sinon rentrez l’ip de votre serveur SQL et son port

rentrez le nom de l’utilisateur créé précédemment dans la base SQL « seafile » avec son mot de passe

Terminez le questionnaire avec vos informations personnalisées

c) Configuration sur service Apache

Maintenant nous allons modifier les fichiers de configuration d’apache pour activer l’interface web

Il faut commencer par installer les modules suivants d’Apache

sudo a2enmod rewrite 
sudo a2enmod proxy_http 

Modifier le fichier de configuration d’Apache par défaut sites-enabled/000-default

<VirtualHost *:80>
    ServerName cloud.nomdedomaine.com
    DocumentRoot /var/www
    Alias /media  /votre/emplacement/seafile-data/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
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

Si vous herbegez déjà des sites web sur votre débian vous devez créer un nouveau virtualhost et renseigner les informations ci-dessous

# Creer le fichier et le modifier avec les informations ci dessus
vi  /etc/apache2/sites-available/cloud.nomdedomaine.conf

# Activer le nouveau virtualhost
a2ensite cloud.nomdedomaine.conf

#Redemarrer le service apache
service apache2 restart

Démarrer les services nécessaires à seafile serveur

cd /reperotire/dulogiciel/seafile
./seafile.sh start
./seahub.sh start

Maintenant vous pouvez vous connecter à la page web du serveur seafile : http://votre.ip.ou.nomdedomaine.com

Une fois connecté avec votre adresse mail et le mot de passe renseigné lors de la configuration du serveur, rendez-vous des les paramètres administrateur système

Dans « Paramètres » Modifier les deux paramètres SERVICE_URL et FILE_SERVER_ROOT

Par les informations suivantes

SERVICE_URL = http://cloud.votrenomdedomaine.com
FILE_SERVER_ROOT = 'http://cloud.votrenomdedomaine.com/seafhttp'

Redémarrez les services

sudo service apache2 restart
./seafile.sh start
./seahub.sh start

Votre serveur est maintenant prêt ???????????? vous pouvez désormais naviguer vers les options afin de le personnaliser en fonction de vos besoins

d) Installation coté client

Vous pouvez vous rendre sur le lien suivant https://www.seafile.com/en/download/ pour télécharger le Desktop Syncing Clients et ou le Desktop Drive Clients

Moi j’ai préféré installé le Desktop Drive Clients et lors de l’installation il me demande la lettre à utiliser pour le lecteur virtuel qui sera connecté à mon serveur

Renseignez les informations de connexion à votre serveur

Une fois l’installation terminée on peut constater que le nouveau lecteur S: à été ajouté

Tous les dossiers en cours de synchronisation sont marqués

Le nuage orange ci-contre indique que la bibliothèque n’est pas synchronisée.

Tout les documents que vous mettrez dans ce lecteur seront synchronisés sur le serveur et une fois la synchronisation terminée les documents passent au vert.

Voilà c’est déjà terminé, c’était une présentation brève de l’outil Seafile mais vous pouvez aller sur leur site web car le logiciel dispose de plusieurs fonctionnalités que je n’aurais malheureusement le temps de couvrir.

Je ferais surement un article basé plus sur mon retour d’expérience avec cet outil.