Seafile | Synchronisation et partage de fichiers

 

 


 

Présentation
 


Seafile est un système de stockage, de partage et de synchronisation de fichiers. Très simple d’utilisation, consultez vos fichiers sur votre ordinateur ou sur votre smartphone.

Seafile se décline en deux versions : – Community Edition (CE) – Professional Edition (PE).

Le version Pro contient plus de fonctionnalités, comme par exemple la double authentification, la synchronisation des utilisateurs et groupes Active Directory, l’intégration d’Office Web App, etc.

Pour l’essayer, rendez-vous sur la page de demo


 

Mise en place
 


Étape 1 : Téléchargement de Seafile

Rendez-vous sur la page de téléchargement de Seafile et téléchargez-y (ou copiez le lien de téléchargement) la dernière version de Seafile (Server for generic Linux).

Puis sur votre serveur, créez un répertoire seafile dans /opt :

1
cd /opt && mkdir seafile && cd seafile

Téléchargez la dernière version de Seafile et décompressez l’archive :

1
2
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.9_x86-64.tar.gz
tar -xzvf seafile-server_6.0.9_x86-64.tar.gz

Étape 2 : Installation des paquets nécessaires et configuration de la base de données MySQL

Mettez à jour les sources de votre serveur :

1
apt-get update

Installez le serveur MySQL et son client :

1
apt-get install mariadb-server mariadb-client

Installez les paquets Python nécessaires :

1
2
apt-get install python
apt-get install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-mysqldb python-memcache python-urllib3

Configuration de MySQL :
Une fois les différents paquets installés, rendez-vous dans : /opt/seafile/seafile-server-*

Lancez le script de configuration de MySQL : ./setup-seafile-mysql.sh

Puis entrez les informations suivantes :
Nom d’hôte : seafile
Adresse IP ou nom de domaine de votre serveur : seafile.domain.tld
Chemin du répertoire « seafile-data » : /opt/seafile/seafile-data
Port du serveur de fichier : 8082

Puis sélectionnez l’option 1 pour créer les bases de données ccnet, seafile et seahub.

Et entrez les informations suivantes :
Adresse du serveur de base de données : localhost
Port d’écoute du serveur MySQL : 3306
Mot de passe root de la base de données : UnMotDePasseFort
Nom d’utilisateur MySQL pour Seafile : seafile
Un mot de passe pour cet utilisateur : UnAutreMotDePasseFort
Nom de la base de données ccnet : ccnet-db
Nom de la base de données seafile : seafile-db
Nom de la base de données seahub : seahub-db

Effectuez un test rapide :
Toujours de puis /opt/seafile/seafile-server-*, lancez les commandes suivantes :

1
2
./seafile.sh start
./seahub.sh start 8000

Au premier démarrage, comme c’est le cas ici, vous devrez configurer le compte administrateur du serveur Seafile. Vous devrez rentrez une adresse mail et un mot de passe (deux fois).
Puis connectez-vous en web à l’adresse de votre serveur et au port configuré. Ex : http://10.29.1.20:8000

Vous devriez obtenir ceci :

 

 

Une fois le test effectué, coupez les services :

1
2
./seahub.sh stop
./seafile.sh stop

Étape 3 : Configuration de Seahub avec Nginx

Seahub est l’interface Web de Seafile. Ici nous allons le configurer avec FastCGI et Nginx en tant que reverse proxy.

Installation de Nginx :

1
apt-get install nginx

Désactivation du site « default » de Nginx :

1
rm /etc/nginx/sites-enabled/default

Création du fichier de configuration pour Seahub :

1
vim /etc/nginx/sites-available/seafile.domain.tld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {
listen 80;
server_name seafile.example.com;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
fastcgi_pass    127.0.0.1:8000;
fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
fastcgi_param   PATH_INFO           $fastcgi_script_name;
fastcgi_param    SERVER_PROTOCOL        $server_protocol;
fastcgi_param   QUERY_STRING        $query_string;
fastcgi_param   REQUEST_METHOD      $request_method;
fastcgi_param   CONTENT_TYPE        $content_type;
fastcgi_param   CONTENT_LENGTH      $content_length;
fastcgi_param    SERVER_ADDR         $server_addr;
fastcgi_param    SERVER_PORT         $server_port;
fastcgi_param    SERVER_NAME         $server_name;
fastcgi_param   REMOTE_ADDR         $remote_addr;
access_log      /var/log/nginx/seahub.access.log;
error_log       /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
client_max_body_size 0;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout  36000s;
proxy_read_timeout  36000s;
proxy_send_timeout  36000s;
send_timeout  36000s;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
}

NB : Dans sa configuration par défaut, nginx n’accepte pas les fichiers dont la taille est supérieure à 1 Mo en Upload. Pour pallier à ce problème, utilisez la variable suivante pour fixer la taille maximale que vous souhaitez ou mettez 0 pour désactiver la limite : client_max_body_size : 0;. Si vous modifiez cette valeur, n’oubliez pas de la modifier également dans le fichier suivant : /opt/seafile/conf/seafile.conf

1
2
[fileserver]
max_upload_size = 1G

Dans le cas où vous auriez à transférer des fichiers > 4 Go, vous devrez appliquer la configuration suivante pour prévenir d’un blocage de la part de nginx :

1
2
3
4
  location /seafhttp {
... ...
proxy_request_buffering off;
}

Configuration de ccnet.conf et seahub_settings.py
Dans /opt/seafile/conf/ccnet.conf, modifiez SERVICE_URL = en ajoutant l’adresse de votre serveur.
Ex : SERVICE_URL = http://10.29.1.20

De la même manière dans /opt/seafile/conf/seahub_settings.py :
FILE_SERVER_ROOT = ‘http://10.29.1.20’

Démarrage de Seafile et Seahub :
Depuis /opt/seafile/seafile-server-*, exécutez les commandes suivantes :

1
2
./seafile.sh start
./seahub.sh start-fastcgi

Étape 4 : Lancer Seafile au démarrage du serveur

Créez et éditez le fichier /etc/init.d/seafile-server

Et copiez-collez la configuration présente ci-dessous :
Prêtez bien attention à la variable seafile_dir=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
### BEGIN INIT INFO
# Provides:          seafile-server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Seafile server
# Description:       Start Seafile server
### END INIT INFO
# Change the value of "user" to your linux user name
user=seafile
# Change the value of "seafile_dir" to your path of seafile installation
# usually the home directory of $user
seafile_dir=/opt/seafile
script_path=${seafile_dir}/seafile-server-latest
seafile_init_log=${seafile_dir}/logs/seafile.init.log
seahub_init_log=${seafile_dir}/logs/seahub.init.log
# Change the value of fastcgi to false if fastcgi is not used
fastcgi=true
# Set the port of fastcgi, default is 8000. Change it if you need different.
fastcgi_port=8000
#
# Write a polite log message with date and time
#
echo -e "\n \n About to perform $1 for seafile at `date -Iseconds` \n " >> ${seafile_init_log}
echo -e "\n \n About to perform $1 for seahub at `date -Iseconds` \n " >> ${seahub_init_log}
case "$1" in
start)
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
if [ $fastcgi = true ];
then
sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
else
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
fi
;;;
restart)
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
if [ $fastcgi = true ];
then
sudo -u ${user} ${script_path}/seahub.sh ${1}-fastcgi ${fastcgi_port} >> ${seahub_init_log}
else
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
fi
;;;
stop)
sudo -u ${user} ${script_path}/seahub.sh ${1} >> ${seahub_init_log}
sudo -u ${user} ${script_path}/seafile.sh ${1} >> ${seafile_init_log}
;;;
*)
echo "Usage: /etc/init.d/seafile-server {start|stop|restart}"
exit 1
;;;
esac

Si votre serveur MySQL est installé en local, remplacez # Required-Start: $remote_fs $syslog par # Required-Start: $remote_fs $syslog mysql

Assurez-vous que le fichier soit exécutable chmod +x /etc/init.d/seafile-server et ajoutez-le au rc.d :

1
update-rc.d seafile-server defaults

And you are done !

Source

Enjoy ! 🙂