Seafile, un Dropbox-like bien cool – #1 Installation

Vous possédez un serveur dédié ou virtualisé  ? Vous avez envie de vous passer de Dropbox qui est malheureusement trop pratique ? Vous préférez garder le contrôle entier sur vos données ? Et en plus de tout ça, vous refusez d’utiliser un service payant ?

Alors Seafile est fait pour vous.

Source

Quelques points clés qui m’ont fait choisir Seafile :

  • Serveur et client disponibles sur Windows et Linux (pas Mac !)
  • Possibilité de partager et créer des comptes utilisateurs
  • Interface web tournant sur un serveur web en Python (on peut choisir Apache ou Nginx, mais je ne verrai pas ce cas de figure dans ce guide)
  • Possibilité d’avoir plusieurs utilisateurs, voire même des groupes
  • Gestion de quota (très important, pour moi)
  • Fichiers versionnés (comme git) avec diff, historique et restauration
  • Preview des fichiers images en mode galerie supportant les touches fléchées ♥
  • Edition des fichiers textes (+ support du Markdown)
  • Partage de fichiers/dossiers via un lien (temporaire ou non, avec mot de passe ou non)

Dans ce guide en plusieurs parties, je considérerai que l’on possède un serveur distant (VPS ou dédié, peu importe) qui tourne sous la dernière version de Debian : Jessie (la 8 donc). C’est important car j’utiliserai systemd (et je sais que beaucoup ne l’aiment pas). Je chercherai aussi à récupérer un client Windows et Android afin de profiter du confort dont j’avais l’habitude avec Dropbox. Nous partirons de zéro et je n’aborderai pas le cas d’un pare-feu installé qui bloquerait certains ports (il faudra donc savoir les ouvrir vous-même).

Les pré-requis

  • Une base de données type SQL (pour ce guide, on se tournera vers MySQL, SQLite est supporté mais manque de robustesse pour une application de cette importance)
  • Les packages suivants : mysql-server, python-imaging, python-mysqldb, python-setuptools
  • Accès à un terminal / SSH (tout sera fait en ligne de commandes)

Petite ligne à copier/coller pour aller plus vite :

Installation du serveur Seafile

C’est le moment d’ouvrir la connexion SSH ou un terminal sur la machine qui hébergera le serveur de fichier. Cette machine sera également celle qui sera accessible via une interface web que nous installerons après.

Une fois connecté, on va créer un dossier seafile à un endroit propre. Ce dossier contiendra les fichiers du serveur et les scripts d’exécution. J’ai pour ma part choisi de le placer dans le dossier /home. Pour ne pas tout le temps passer par sudo, j’ai tout de suite donné les droits et la propriété du dossier à mon compte utilisateur lyyn (ainsi qu’à son groupe).

 

Il faut maintenant récupérer les fichiers du serveur. Vous trouverez tous les liens ici : https://www.seafile.com/en/download/#server. Pour me rendre la tâche plus facile, j’ai choisi d’utiliser wget. Et évidemment, il ne faut pas oublier d’extraire l’archive. Au moment où j’ai installé le serveur, il était à la version 4.3.1.

(les étoiles servent juste à ne pas être obligé de taper le nom du fichier/dossier en entier)

« tar -zxvf » est la commande permettant de décompresser l’archive. Les arguments ont du sens :

  • z : Format d’archive GZip
  • x : eXtract (décompresser, c pour compresser)
  • v : verbose output (affichera chaque fichier décompressé)
  • f : Préciser le nom du fichier ciblé (ici, seafile-server*)

 

Il ne reste plus qu’à lancer l’installation !

Quelques infos de configuration seront demandées, la plupart des valeurs par défaut iront très bien.

  • Server name: Le nom du serveur (pas d’espace dans le nom)
  • Server ip/domain : Mettez ici le nom de domaine de votre serveur, ou son IP directement
  • Seafile data: Emplacement d’enregistrement des fichiers, celui par défaut est très bien
  • Port : le port du serveur Seafile (pas Seahub) est donné par défaut (8082), laissons ainsi (n’oubliez pas d’ouvrir ce port !)
  • >>> [1] Create new ccnet/seafile/seahub databases (c’est un choix entre créer ou mettre à jour, ici on crée forcement)
  • SQL Server : adresse du serveur SQL, localhost si c’est sur la même machine
  • SQL Port : Port du serveur SQL, en général on utilise celui par défaut.
  • Password root SQL : Mot de passe de l’user root (ne sera utilisé qu’une seule fois)
  • Mysql User : Nom de l’utilisateur SQL dédié à Seafile (sera créé par le programme)
  • Pass : Mot de passe de l’utilisateur SQL dédié à Seafile

Et c’est tout. Le serveur est installé. Il ne reste plus qu’à l’exécuter manuellement une première fois et à configurer Debian pour qu’il lance Seafile au démarrage du système. L’interface web est elle aussi déjà installée et accessible via le port précisé pendant l’installation.

J’ai également reproduit toutes ces étapes en vidéo ici :

(Et non, ce serveur n’est déjà plus actif, il ne l’a été que le temps de cette vidéo !)

Execution

Il y a deux fichiers à exécuter : un qui lancera le service du serveur de fichiers, l’autre qui permettra d’instancier l’interface web. Respectivement, seafile.sh et seahub.sh :

À la première exécution, l’interface web demandera d’entrer le compte e-mail qui servira de compte administrateur (il sera toujours possible d’élire d’autres admins plus tard) et de lui attribuer un mot de passe. Si vous oubliez le mot de passe, vous pouvez le remettre à zéro en lançant le script reset-admin.sh.

Il ne reste plus qu’à rejoindre l’interface web. Le port par défaut de cette interface est 8000, mais vous pouvez en spécifier un autre au lancement en indiquant le numéro de port après le paramètre start, par exemple :

Il ne restera plus qu’à taper l’IP ou le nom de domaine de votre serveur dans votre barre d’adresse, suivi du port utilisé par Seahub pour rejoindre l’interface web. Mais avant de chipoter à la configuration de Seafile, il nous reste une dernière chose à faire…

Ajouter Seafile au boot du système

boot

Pour rappel, je suis sur Debian 8. Et cette version de la distribution utilise systemd comme daemon d’init. Je ne vais donc voir que ce cas de figure ici, mais je vous mettrai un lien plus bas si vous utilisez Debian 6 ou Debian 7. Pas d’inquiétude donc.

Première étape, il faut créer deux fichiers qui contiendront les paramètres permettant à systemd de savoir comment amorcer les services. Deux fichiers donc, un pour Seafile (en tant que serveur) et un autre pour Seahub (l’interface web). Le nom est donné arbitrairement, mais pour plus de logique, je les ai appelés seafile.service et seahub.service. Le « .service » n’est pas obligatoire lui, mais c’est bien plus propre.

Systemd considérera, s’il n’y pas d’extension, que le fichier indiqué doit être considéré comme un service. Les autres types sont .mount, .device et .socket. Plus d’infos ici : https://wiki.archlinux.org/index.php/Systemd

L’emplacement des fichiers est celui-ci : /etc/systemd/system/. Comme je n’aime pas utiliser vi, je les ai créé en local et les enverrai par la suite, via WinSCP, dans le bon dossier avec le compte root.

 

Le contenu des fichiers est le suivant :

/etc/systemd/system/seafile.service

 

/etc/systemd/system/seahub.service

 

Une fois ces fichiers créés et enregistrés au bon emplacement. Il faut dire à systemd de prendre en compte ces deux nouveaux services. Pour ce faire, on utilise systemctl, composant majeur de systemd servant à le configurer. Il faut bien entendu les droits root pour l’exécuter.

 

Vous pouvez désormais gérer ces services comme n’importe quels autres. Par exemple, pour démarrer puis stopper Seafile :

Et comme promis, si tout ceci ne vous a servi a rien parce que vous n’utilisez pas systemd, jetez un coup d’oeil à ceci : http://manual.seafile.com/deploy/start_seafile_at_system_bootup.html

EDIT : Si vous n’avez pas systemd sur votre distribution et que vous souhaitez l’utiliser, Guillaume Pommier nous a expliqué comment faire dans les commentaires :

*** Installation rapide et facile ! *** Merci !

Pour ce qui est des services, j’ai dû installer systemd et systemd-sysv pour que ça fonctionne.

apt-get install systemd systemd-sysv
reboot

puis :

systemctl enable seafile.service
systemctl enable seahub.service

 

Petit caprice au redémarrage :
Seafile se lance et Seahub fait la tronche.
Il a suffit de stopper Seafile, puis le démarrer.
Ensuite Seahub s’est déridé et a fonctionné.

Merci pour ton feedback ! 🙂

Et maintenant ?

pizza

Maintenant que Seafile est installé et fonctionnel, il ne reste plus qu’à se connecter à l’interface web (rappel : le nom de votre serveur, suivi du port de Seahub, 8000 par défaut). Après avoir découvert Seahub et ses différentes options, il faudra installer et configurer nos clients Windows et Android. Mais tout ceci sera pour de futurs guides qui arriveront prochainement, celui-ci étant déjà assez conséquent.

Sources

[EN] Site officiel de Seafile
[EN] 
http://manual.seafile.com/deploy/start_seafile_at_system_bootup.html
[EN] https://wiki.archlinux.org/index.php/Systemd
[EN] https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-seafile-on-an-ubuntu-12-04-vps

Et merci à Cédric pour m’avoir fait découvrir Seafile. 😉


Related Posts Plugin

Lyyn~

Lyyn~

L'informatique est un monde magique et complexe, partager quelques connaissances et astuces au travers de ce blog me permet de participer à la construction d'un web meilleur pour tous !

  • thesanzo

    Je viens de voir ton post, excellent tuto 😉

    Tu l’utilises toujours d’ailleurs ?

    • Je viens seulement de voir ce message. Hem…

      Mais tu as eu ma réponse entretemps donc : OUI MILLE FOIS OUI ! J’aime Seafile !

  • *** Installation rapide et facile ! *** Merci !

    Pour ce qui est des services, j’ai dû installer systemd et systemd-sysv pour que ça fonctionne.

    apt-get install systemd systemd-sysv
    reboot

    puis :

    systemctl enable seafile.service
    systemctl enable seahub.service

  • Petit caprice au redémarrage :
    Seafile se lance et Seahub fait la tronche.
    Il a suffit de stopper Seafile, puis le démarrer.
    Ensuite Seahub s’est déridé et a fonctionné.

    • Je viens seulement de voir tes commentaires (donc Disqus ne m’a pas notifié, j’retiens ça :p)

      Merci pour ton retour en tout cas !

      Et effectivement, j’utilise systemd ici parce qu’il est le système d’init par défaut depuis Debian 8 (et c’est cette distrib que j’utilise sur mon serveur en prod). Ceci dit, il y a moyen de faire la même chose avec l’ancien système d’init ^^

      Je vais modifier mon article pour ajouter tes remarques 🙂

      Merci encore !

      (Pas de souci de mon côté par contre pour le démarrage de Seafile :/)

  • Pingback: Émission #108 du 2 juin 2016 – Ça va mal à shop – blogueLinux.ca()

  • Justin

    Merciiiiiiiiiiiii, super tuto !!!