Comment installer un serveur Seafile sur LinuxMint, utilisant Apache2, SSL et MySQL?

Pour avoir gossé assez longtemps là dessus, laissez-moi vous épargner les heures de plaisirs que j’ai eu en simplifiant le tout dans un seul article.

En date du 20 janvier 2015, 2:00 du matin, l’heure à laquelle j’écris cet article, la version de Seafile Server la plus récente est la 4.0.5.

La documentation de Seafile Server est assez complète sur le site officiel, mais elle manque de clarté si l’on veut plus qu’une simple installation. Pour votre information, la documentation officielle est ici: http://manual.seafile.com/ .

Le tutoriel qui suit prend pour acquis que vous avez déjà Python, MySQL et Apache2 d’installé sur votre serveur Linux. Consultez l’article ici pour savoir comment installer LAMP.

La méthode suivante a été testé avec les versions suivantes:

  • Seafile Server 4.0.5
  • Apache 2.4.7
  • LinuxMint 17.1 (Ubuntu 14.04 LTS)
  • MySQL 5.5.4
  • Python 2.7

Préparation de MySQL

Il vous faudra créer trois bases de données et un utilisateur, puis ajouter ce dernier à ces bases de données. Pour savoir comment créer une base de données, un utilisateur, puis, ajouter un utilisateur à une base de données, cliquez ici.

Utilisateur à créer: seafile
Bases de données à créer: ccnet-db , seafile-db , seahub-db

Installation de Seafile Server

  1. Créez un dossier « seafile » quelque part sur votre serveur où vous souhaitez installer Seafile.
  2. mkdir seafile

    Notez que vous aurez besoin suffisament d’espace disque pour ce répertoire, selon la quantité de donnée que vous allez synchroniser, donc créez le dossier à un emplacement conséquent.

  3. Assurez-vous que votre utilisateur ai les droits d’écriture et de lecture sur le dossier et que les autres puissent lire et exécuter.
  4. chmod 775 seafile/

  5. Allez dans le dossier seafile nouvellement créé.
  6. cd seafile/

  7. Téléchargez la dernière version du serveur Seafile pour Linux dont vous avez besoin (32 ou 64 bits) ici.
  8. wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_4.0.5_x86-64.tar.gz

  9. Décompressez le fichier tar.gz dans le dossier seafile.
  10. tar xzvf seafile-server_4.0.5_x86-64.tar.gz

  11. Allez dans le dossier « seafile-server-4.0.5 ».
  12. cd seafile-server-4.0.5/

  13. Lancez le script d’installation.
  14. ./setup-seafile-mysql.sh

  15. Entrez les valeurs désirées lorsque demandé.
  16. [ server name ] est un nom qui ne sera utilisé que dans les logs du client Seafile.

    [ ip or domain ] est l’adresse IP de votre serveur Linux(sur votre réseau local) ou nom de domaine s’il y a lieux.

    Vous pouvez utiliser les paramètres par défaut pour les paramètres [ ccnet server ], [ seafile data ], [ seafile server ] et [ seafile httpserver ].

    [ admin email ] est votre adresse courriel.

    [ admin password ] est le mot de passe désiré pour votre compte admin Seafile.

    [ Please choose a way to initialize seafile databases: ]; choisissez l’option [1] Create new ccnet/seafile/seahub databases.

    [ mysql host ] localhost à moins que votre installation de MySQL Server ne roule sur un autre serveur.

    [ mysql port ] 3306 à moins que votre installation de MySQL Server ne roule sur un autre port.

    [ root password ] est le mot de passe du compte « root » de votre serveur MySQL.

    [ mysql user of seafile ] est le nom d’utilisateur « seafile » que nous avons créé plus tôt.

    [ password for mysql user ] est le mot de passe de l’utilisateur que nous avons créé plus tôt.

    Les trois derniers champs, soit [ ccnet-db ], [ seafile-db ] et [ seahub-db ] sont les valeurs par défaut, puisque nous avons créé ces bases de données plus tôt.

Démarrer Seafile pour la première fois

Cette étape est importante, car elle terminera l’installation de Seafile Server en créant un compte administrateur.

./seafile.sh start
./seahub.sh start

Entrez votre adresse email et mot de passe tel que demandé.

Arrêtez Seafile.

./seahub.sh stop
./seafile.sh stop

 
Créer un service « seafile-server »

  1. Créer un fichier seafile-server dans /etc/init.d/ .
  2. sudo nano /etc/init.d/seafile-server

  3. Y mettre le contenu suivant:

  4. #!/bin/bash

    # Change the value of « user » to your linux user name
    user=guizmo

    # Change the value of « seafile_dir » to your path of seafile installation
    seafile_dir=/emplacement/de/votre/dossier/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 true if fastcgi is to be used
    fastcgi=true
    # Set the port of fastcgi, default is 8000. Change it if you need different.
    fastcgi_port=8000

    case « $1 » in
    start)
    sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log}
    if [ $fastcgi = true ];
    then
    sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log}
    else
    sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log}
    fi
    ;;
    restart)
    sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log}
    if [ $fastcgi = true ];
    then
    sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log}
    else
    sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log}
    fi
    ;;
    stop)
    sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log}
    sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log}
    ;;
    *)
    echo « Usage: /etc/init.d/seafile {start|stop|restart} »
    exit 1
    ;;
    esac

  5. Changez la valeur user= pour le nom d’utilisateur dont vous avez donné les permissions chmod au tout début de l’installation.
  6. Changez la valeur seafile_dir= pour le chemin d’accès de votre dossier que nous avons créé au tout début de l’installation.
  7. Créez un fichier seafile-server.conf dans /etc/init/ .
  8. sudo nano /etc/init/seafile-server.conf

  9. Y mettre le contenu suivant:

  10. start on (started mysql
    and runlevel [2345])
    stop on (runlevel [016])

    pre-start script
    /etc/init.d/seafile-server start
    end script

    post-stop script
    /etc/init.d/seafile-server stop
    end script

  11. Rendre exécutable le fichier seafile-server dans le dossier /etc/init.d/ .
  12. sudo chmod +x /etc/init.d/seafile-server

Préparation de Apache2

Il faut installer les paquets python-flup et libapache2-mod-fastcgi .

  1. sudo apt-get update
    sudo apt-get install python-flup
    sudo apt-get install libapache2-mod-fastcgi
  2. Maintenant nous allons activer mod_fastcgi, mod_rewrite, et apache proxy.> .

  3. sudo a2enmod rewrite
    sudo a2enmod fastcgi
    sudo a2enmod proxy_http
    sudo a2enmod ssl
    sudo a2ensite default-ssl

    Nous allons maintenant modifier le fichier apache2.conf dans le dossier /etc/apache2/ .

  4. sudo nano /etc/apache2/apache2.conf
  5. À la toute fin, nous allons y ajouter ceci:

    FastCGIExternalServer /var/www/html/seahub.fcgi -host 127.0.0.1:8000

    Nous allons maintenant modifier le fichier default-ssl.conf dans le dossier /etc/apache2/sites-available/ .

  6. sudo nano /etc/apache2/sites-available/default-ssl.conf
  7. Ajouter la ligne suivante sous DocumentRoot :
  8. Alias /media /emplacement/de/votre/dossier/seafile/seafile-server-latest/seahub/media

    Changer /emplacement/de/votre/dossier/seafile/ pour l’emplacement du dossier « seafile » que nous avons créé au tout début.

    Assurez-vous de conserver la partie seafile-server-latest/seahub/media à la fin de cet emplacement.

  9. Descendez à la fin du fichier, et avant </VirtualHost> ajouter ceci:

  10. <Directory /emplacement/de/votre/dossier/seafile>
    Require all granted
    Options FollowSymLinks
    </Directory>

    RewriteEngine On

    #
    # seafile fileserver
    #
    ProxyPass /seafhttp http://127.0.0.1:8082
    ProxyPassReverse /seafhttp http://127.0.0.1:8082
    RewriteRule ^/seafhttp – [QSA,L]

    #
    # seahub
    #
    RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /seahub.fcgi/$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Redémarrer le service Apache2

sudo service apache2 restart

Configuration de Seafile pour le SSL

    Nous allons modifier le fichier « ccnet.conf » dans le dossier /emplacement/de/votre/dossier/seafile/ccnet/ .

  1. Modifiez la ligne SERVICE_URL = http://votre_ip par SERVICE_URL = https://votre_ip .
  2. Nous allons maintenant modifier le fichier « seahub_settings.py » dans le dossier /emplacement/de/votre/dossier/seafile/ .

  3. Ajouter la ligne suivante sous la ligne SECRET_KEY.
  4. FILE_SERVER_ROOT = 'https://votre_ip/seafhttp'

Démarrer le service « seafile-server »

sudo service seafile-server start

Ouvrir les ports dans le pare-feu (firewall)

LinuxMint vient avec le pare-feu ufw par défaut, mais il n’est pas activé. Après avoir eu beaucoup de mal à utiliser les commandes ufw dans Terminal, j’ai finit par installé gufw, un interface GUI pour configurer ufw.

À l’aide de ce dernier, assurez-vous que les ports suivant sont ouvert dans votre pare-feu afin de pouvoir accéder à Seafile.

443, 10001 et 12001.

Inutile d’ouvrir les ports 8000 et 8082 que nous avons configuré lors de l’installation de Seafile, puisque nous utilisons Apache2 en SSL, le tout passe dans le port 443.

C’est terminé, vous devriez être en mesure d’accéder à votre serveur Seafile à l’adresse https://votre_ip ou https://localhost sur la machine directement .

Ajout 14 Février 2015: Si vous ne voulez pas utiliser Seafile à la racine de votre serveur Apache2 dans /var/www/html/, mais plutôt dans /var/www/html/seafile/ pour vous y connecter à l’adresse https://votre_ip/seafile , veuillez suivre ce qui suit.

sudo gedit /etc/apache2/sites-available/default-ssl.conf

Remplacez ceci:


#
# seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Par ceci:


#
# seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(seafile.*)$ /seafile/seahub.fcgi/$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

sudo gedit /emplacement/de/votre/dossier/seafile/ccnet/ccnet.conf

Ajustez la valeur SERVICE_URL pour: https://votre_ip/seafile

sudo gedit /emplacement/de/votre/dossier/seafile/seahub_settings.py

Nous allons y ajouter les lignes suivantes au dessus de la valeur FILE_SERVER_ROOT:


SERVE_STATIC = False

MEDIA_URL = ‘/media/’

SITE_ROOT = ‘/seafile/’

Créer le dossier seafile dans /var/www/html .

sudo mkdir /var/www/html/seafile

Maintenant redémarrez les services et tout devrait fonctionner. Vous devriez être en mesure d’accéder à Seafile via https://votre_ip/seafile .

sudo service seafile-server restart
sudo service apache2 restart

Commentaires

  1. Bonjour,

    Juste une petite coquille à la ligne  » case « $1″ in  » du fichier de conf  » /etc/init.d/seafile-server « 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *