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.

Article à suivre: Seafile, un Dropbox like bien cool - #2 La structure

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 ces cas de figure dans ce guide)
  • Possibilité d’avoir plusieurs utilisateurs, voire même des groupes
  • Gestion de quota
  • Fichiers versionnés (un peu 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 version 8 de Debian. C’est important car j’utiliserai systemd. 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 :

1
sudo apt-get install mysql-server python-imaging python-mysqldb python-setuptools

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é-e, on va créer un dossier seafile à un endroit dédié. 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).

1
2
3
sudo mkdir /home/seafile
sudo chown lyyn:lyyn /home/seafile
cd /home/seafile

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. Ensuite, il faut décompresser l’archive que nous venons de télécharger.

1
2
3
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server\_4.3.1\_x86-64.tar.gz
tar -zxvf seafile-server*
cd seafile-server*

(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 le sens suivant :

  • 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 !

1
./setup-seafile-mysql.sh

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 : sle 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 :

1
./seafile.sh start && ./seahub.sh start

À 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 :

1
./seahub.sh start 8069

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

[Source](http://lazenby.tumblr.com/post/3624139029)

Pour rappel, je considère que nous sur Debian 8. 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 plusieurs fichiers qui contiendront les paramètres permettant à systemd de savoir comment amorcer les services. Deux fichiers donc, un pour Seafile (en tant que serveur de fichiers) 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 est une bonne pratique.

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 et que je préfère une belle interface graphique, je les ai créés en local et les ai envoyés par la suite, via WinSCP, dans le bon dossier avec le compte root. Veillez à créer les fichiers avec le compte root si vous le faites avec vi.

Le contenu des fichiers est le suivant :

/etc/systemd/system/seafile.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target mysql.service

[Service]
Type=oneshot
ExecStart=/home/seafile/seafile-server-4.3.1/seafile.sh start
ExecStop=/home/seafile/seafile-server-4.3.1/seafile.sh stop
RemainAfterExit=yes
User=lyyn
Group=lyyn

[Install]
WantedBy=multi-user.target

/etc/systemd/system/seahub.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/seafile/seafile-server-4.3.1/seahub.sh start
ExecStop=/home/seafile/seafile-server-4.3.1/seahub.sh stop
User=lyyn
Group=lyyn
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Une fois ces fichiers créés et enregistrés au bon emplacement, il faut signaler à 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…

1
2
sudo systemctl enable seafile.service
sudo systemctl enable seahub.service

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

1
2
sudo service seafile start
sudo service seafile stop

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

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 de l’ancien blog :

*** 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 encore pour ton feedback ! 😃

Et maintenant ?

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.

=> Article à suivre: Seafile, un Dropbox like bien cool - #2 La structure

Sources

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