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 oeuvre
É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 :
cd /opt && mkdir seafile && cd seafile
Téléchargez la dernière version de Seafile et décompressez l’archive :
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 :
apt-get update
Installez le serveur MySQL et son client :
apt-get install mariadb-server mariadb-client
Installez les paquets Python nécessaires :
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 :
./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 :
./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 :
apt-get install nginx
Désactivation du site « default » de Nginx :
rm /etc/nginx/sites-enabled/default
Création du fichier de configuration pour Seahub :
vim /etc/nginx/sites-available/seafile.domain.tld
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
[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 :
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 :
./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=
#!/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 :
update-rc.d seafile-server defaults
And you are done !
Enjoy ! 🙂