Comment synchroniser et partager vos fichiers avec Seafile sur Debian 10

introduction

Seafile est une plate-forme open source, auto-hébergée, de synchronisation et de partage de fichiers. Les utilisateurs peuvent stocker et éventuellement chiffrer des données sur leurs propres serveurs, la seule limitation étant l’espace de stockage. Avec Seafile, vous pouvez partager des fichiers et des dossiers en utilisant une synchronisation multi-plateformes et des liens protégés par mot de passe vers des fichiers avec des dates d’expiration. Une fonctionnalité de version de fichier signifie que les utilisateurs peuvent restaurer des fichiers ou des dossiers supprimés et modifiés.

Dans ce tutoriel, vous allez installer et configurer Seafile sur un serveur Debian 10. Vous utiliserez MariaDB (la variante par défaut de MySQL sur Debian 10) pour stocker les données des différents composants de Seafile, et Apache en tant que serveur proxy pour gérer le trafic Web. Une fois ce didacticiel terminé, vous pourrez utiliser l’interface Web pour accéder à Seafile à partir de clients de bureau ou mobiles, ce qui vous permettra de synchroniser et de partager vos fichiers avec d’autres utilisateurs ou groupes sur le serveur ou avec le public.

Conditions préalables

Avant de commencer ce guide, vous aurez besoin des éléments suivants:

Étape 1 - Création de bases de données pour les composants Seafile

Seafile nécessite trois composants pour fonctionner correctement:

  • * Seahub *: interface Web Seafile, écrite en Python à l’aide du cadre Web Django. Seahub vous permet d’accéder à vos fichiers, de les gérer et de les partager à l’aide d’un navigateur Web.

  • * Serveur Seafile *: Le démon de service de données qui gère le téléchargement, le téléchargement et la synchronisation de fichiers bruts. Vous n’interagissez pas directement avec le serveur, mais utilisez plutôt un programme client ou l’interface Web Seahub.

  • * Serveur Ccnet *: Le démon du service RPC pour permettre la communication interne entre les différents composants de Seafile. Par exemple, lorsque vous utilisez Seahub, il est possible d’accéder aux données du serveur Seafile à l’aide du service Ccnet RPC.

Chacun de ces composants stocke ses données séparément dans sa propre base de données. Dans cette étape, vous allez créer les trois bases de données MariaDB et un utilisateur avant de procéder à la configuration du serveur.

Commencez par vous connecter au serveur à l’aide de SSH avec votre nom d’utilisateur et votre adresse IP:

ssh @

Connectez-vous au serveur de base de données MariaDB en tant qu’administrateur (racine):

sudo mysql

À l’invite de MariaDB, utilisez la commande SQL suivante pour créer l’utilisateur de base de données:

CREATE USER ''@'localhost' IDENTIFIED BY '';

Vous allez ensuite créer les bases de données suivantes pour stocker les données des trois composants Seafile:

  • ++ pour le serveur Ccnet.

  • ++ pour l’interface Web Seahub.

  • ++ pour le serveur de fichiers Seafile.

A l’invite de MariaDB, créez vos bases de données:

CREATE DATABASE '' CHARACTER SET = 'utf8';
CREATE DATABASE '' CHARACTER SET = 'utf8';
CREATE DATABASE '' CHARACTER SET = 'utf8';

Ensuite, accordez tous les privilèges à votre utilisateur de base de données pour accéder et apporter des modifications à ces bases de données:

GRANT ALL PRIVILEGES ON ''.* to ''@localhost;
GRANT ALL PRIVILEGES ON ''.* to ''@localhost;
GRANT ALL PRIVILEGES ON ''.* to ''@localhost;

Quittez l’invite MariaDB en tapant + exit +:

exit

Maintenant que vous avez créé un utilisateur et que les bases de données requises pour stocker les données de chacun des composants Seafile sont installées, vous allez installer des dépendances pour télécharger le package du serveur Seafile.

Étape 2 - Installation des dépendances et téléchargement de Seafile

Certaines parties de Seafile sont écrites en Python et nécessitent donc des modules et des programmes Python supplémentaires pour fonctionner. Dans cette étape, vous installerez ces dépendances requises avant de télécharger et d’extraire le package du serveur Seafile.

Pour installer les dépendances en utilisant + apt +, exécutez la commande suivante:

sudo apt install python-setuptools python-pip python-urllib3 python-requests python-mysqldb ffmpeg

Les dépendances + python-setuptools + et + + python-pip + supervisent l’installation et la gestion des paquets Python. Les paquets + python-urllib3 + et + + python-request + font des requêtes aux sites Web. Enfin, ` python-mysqldb + `est une bibliothèque pour utiliser MariaDB de Python et + ffmpeg + `gère les fichiers multimédias.

Seafile nécessite + Pillow +, une bibliothèque python pour le traitement des images et + moviepy + pour gérer les vignettes des fichiers vidéo. Ces modules ne sont pas disponibles dans le référentiel de paquets Debian, donc installez-les plutôt avec + pip +:

sudo pip install Pillow moviepy

Maintenant que vous avez installé les dépendances nécessaires, vous pouvez télécharger le package du serveur Seafile.

Seafile crée des répertoires supplémentaires lors de l’installation. Pour les garder tous organisés, créez un nouveau répertoire et changez-le:

mkdir seafile
cd seafile

Vous pouvez maintenant télécharger la dernière version («++» au moment de l’écriture) du serveur Seafile à l’adresse le site Web du projet en exécutant la commande suivante:

wget https://download.seadrive.org/seafile-server__x86-64.tar.gz

Seafile distribue le téléchargement sous forme d’archive tar compressée, ce qui signifie que vous devez l’extraire avant de poursuivre. Extrayez l’archive en utilisant + tar:

tar -zxvf seafile-server__x86-64.tar.gz

Maintenant changez dans le répertoire extrait:

cd seafile-server-

À ce stade, vous avez téléchargé et extrait le package du serveur Seafile et avez également installé les dépendances nécessaires. Vous êtes maintenant prêt à configurer le serveur Seafile.

Étape 3 - Configuration du serveur Seafile

Seafile a besoin d’informations sur votre configuration avant de démarrer les services pour la première fois. Cela inclut des détails tels que le nom de domaine, la configuration de la base de données et le chemin où seront stockées les données. Pour lancer la série d’invitations aux questions à fournir ces informations, vous pouvez exécuter le script + setup_seafile_mysql.sh +, inclus dans l’archive que vous avez extraite à l’étape précédente.

Exécutez le script en utilisant + bash:

bash setup-seafile-mysql.sh

Appuyez sur + ENTER pour continuer lorsque vous y êtes invité.

Le script va maintenant vous poser une série de questions. Partout où les valeurs par défaut sont mentionnées, appuyez sur la touche + ENTER + pour utiliser cette valeur.

Ce tutoriel utilise ++ comme nom de serveur, mais vous pouvez le changer si vous voulez:

Question 1

What is the name of the server?
It will be displayed on the client. 3 - 15 letters or digits
[ server name ]

Pour + Question 2 +, entrez le nom de domaine de cette instance Seafile.

Question 2

What is the ip or domain of the server?.
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ]

Appuyez sur + ENTER + pour accepter la valeur par défaut de + Question 3 +. Si vous avez configuré le stockage externe, en utilisant par exemple NFS ou un stockage en bloc, vous devrez spécifier ici le chemin d’accès à cet emplacement.

Question 3

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/home//seafile/seafile-data" ]

Pour + Question 4 +, appuyez sur + ENTER + pour accepter le numéro de port par défaut.

Question 4

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

L’invite suivante vous permet de confirmer la configuration de la base de données. Vous pouvez créer de nouvelles bases de données ou utiliser des bases de données existantes pour la configuration. Pour ce tutoriel, vous avez créé les bases de données nécessaires à l’étape 1; sélectionnez donc l’option + 2 + ici.

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ]

Les questions 6 à 9 concernent le serveur de base de données MariaDB. Vous devez fournir le nom d’utilisateur et le mot de passe de l’utilisateur MySQL créé à l’étape 1, mais vous pouvez appuyer sur + ENTER + pour accepter les valeurs par défaut de + host + et + port +.

What is the host of mysql server?

[ default "localhost" ]

What is the port of mysql server?

[ default "3306" ]

Which mysql user to use for seafile?

[ mysql user for seafile ]

What is the password for mysql user "seafile"?

[ password for seafile ]

Après avoir fourni le mot de passe, le script demandera les noms des bases de données Seafile. Utilisez `, ` et ++ pour ce tutoriel. Le script vérifiera ensuite si la connexion aux bases de données est établie avant d’afficher un récapitulatif de la configuration initiale.

Enter the existing database name for ccnet:
[ ccnet database ]

verifying user "sammy" access to database  ...  done

Enter the existing database name for seafile:
[ seafile database ]

verifying user "sammy" access to database  ...  done

Enter the existing database name for seahub:
[ seahub database ]

verifying user "For this tutorial you have" access to database  ...  done

---------------------------------
This is your configuration
---------------------------------

   server name:            Seafile
   server ip/domain:

   seafile data dir:       /home//seafile/seafile-data
   fileserver port:        8082

   database:               use existing
   ccnet database:
   seafile database:
   seahub database:
   database user:

--------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Appuyez sur + ENTER pour confirmer.

OutputGenerating ccnet configuration ...
done
Successly create configuration dir /home/sammy/seafile/ccnet.

Generating seafile configuration ...
done

Generating seahub configuration ...
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
creating seafile-server-latest symbolic link ...  done

-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------
run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }
-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------
port of seafile fileserver:   8082
port of seahub:               8000

When problems occur, Refer to
       https://github.com/haiwen/seafile/wiki
for information.

Vous exécuterez Seafile derrière Apache, ce que vous avez déjà autorisé à passer par le pare-feu de votre serveur. Par conséquent, vous n’avez pas à vous soucier de l’ouverture des ports + 8082 + et + 8000 + et vous pouvez ignorer cette partie de la sortie.

Vous avez terminé la configuration initiale du serveur. Dans l’étape suivante, vous allez configurer le serveur Web Apache avant de démarrer les services Seafile.

Étape 4 - Configuration du serveur Web Apache

Dans cette étape, vous allez configurer le serveur Web Apache pour qu’il transfère toutes les demandes à Seafile. Utiliser Apache de cette manière vous permet d’utiliser une URL sans numéro de port, d’activer les connexions HTTPS avec Seafile et d’utiliser la fonctionnalité de mise en cache fournie par Apache pour améliorer les performances.

Pour commencer le transfert des demandes, vous devez activer le module + proxy_http + dans la configuration Apache. Ce module fournit des fonctionnalités pour le proxy des demandes HTTP et HTTPS. La commande suivante activera le module:

sudo a2enmod proxy_http

Ensuite, mettez à jour la configuration de l’hôte virtuel ++ pour transmettre les demandes au serveur de fichiers Seafile et à l’interface Web Seahub.

Ouvrez le fichier de configuration dans un éditeur de texte:

sudo nano /etc/apache2/sites-enabled/-le-ssl.conf

Les lignes «+ ServerAdmin » à « SSLCertificateKeyFile » font partie de la configuration initiale Apache et Let Encrypt que vous avez configurée dans les tutoriels préalables. Ajoutez le contenu en surbrillance, en commençant par ` Alias ​​` et en terminant par la directive ` ProxyPassReverse +`:

/etc/apache2/sites-enabled/your_domain-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
   ServerAdmin
   ServerName
   ServerAlias www.
   DocumentRoot /var/www//html
   ErrorLog ${APACHE_LOG_DIR}/-error.log
   CustomLog ${APACHE_LOG_DIR}/-access.log combined

   Include /etc/letsencrypt/options-ssl-apache.conf
   SSLCertificateFile /etc/letsencrypt/live//fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live//privkey.pem

   sammy














</VirtualHost>
</IfModule>

La directive Alias ​​mappe le chemin d’URL + / media + sur un chemin local du système de fichiers utilisé par Seafile. La directive + Emplacement + suivante permet d’accéder au contenu de ce répertoire. Les directives + ProxyPass + et + ProxyPassReverse + permettent à Apache de jouer le rôle de proxy inverse pour cet hôte, en transmettant les demandes à + ​​/ + et + / seafhttp + à l’interface Web Seafile et au serveur de fichiers s’exécutant sur les ports de l’hôte local ` + 8000 + et + 8082 + respectivement. La directive `+ RewriteRule + passe toutes les demandes à + ​​/ seafhttp + sans modification et arrête le traitement de règles supplémentaires (+ [QSA, L] +).

Enregistrez et quittez le fichier.

Testez s’il y a des erreurs de syntaxe dans la configuration de l’hôte virtuel:

sudo apache2ctl configtest

S’il indique + Syntax OK +, il n’y a aucun problème avec votre configuration. Redémarrez Apache pour que les modifications prennent effet:

sudo systemctl restart apache2

Vous avez maintenant configuré Apache pour qu’il agisse en tant que proxy inverse pour le serveur de fichiers Seafile et Seahub. Ensuite, vous allez mettre à jour les URL dans la configuration de Seafile avant de démarrer les services.

Étape 5 - Mise à jour des services de configuration et de démarrage de Seafile

Comme vous utilisez maintenant Apache pour créer un proxy avec toutes les demandes adressées à Seafile, vous devez mettre à jour les URL des fichiers de configuration de Seafile dans le répertoire + conf + à l’aide d’un éditeur de texte avant de démarrer le service Seafile.

Ouvrez + ccnet.conf + dans un éditeur de texte:

nano /home//seafile/conf/ccnet.conf

Près du haut du fichier, dans le bloc + [General] +, se trouve la directive + SERVICE_URL +. Il ressemblera à ceci:

Mettre à jour /home/sammy/seafile/conf/ccnet.conf

. . .
SERVICE_URL=http://www.example.com:8000
. . .

Modifiez ce paramètre pour qu’il pointe vers votre domaine. Assurez-vous que l’URL que vous indiquez utilise le protocole HTTPS et qu’il n’inclut aucun numéro de port:

Mettre à jour /home/sammy/seafile/conf/ccnet.conf

. . .
SERVICE_URL = ://
. . .

Enregistrez et quittez le fichier une fois que vous avez ajouté le contenu.

Maintenant, ouvrez + seahub_settings.py + dans un éditeur de texte:

nano /home//seafile/conf/seahub_settings.py

Ajoutez un paramètre + FILE_SERVER_ROOT + dans le fichier pour spécifier le chemin où le serveur de fichiers écoute les transferts de fichiers et les téléchargements:

Mettre à jour /home/sammy/seafile/conf/seahub_settings.py

# -*- coding: utf-8 -*-
SECRET_KEY = "..."
your_domain
# ...

Sauvegardez et quittez seahub_settings.py +.

Vous pouvez maintenant démarrer le service Seafile et l’interface Seahub:

cd /home//seafile/seafile-server-
./seafile.sh start
./seahub.sh start

Comme c’est la première fois que vous démarrez le service Seahub, il vous sera demandé de créer un compte administrateur. Entrez une adresse email valide et un mot de passe pour cet utilisateur administrateur:

OutputWhat is the email for the admin account?
[ admin email ]

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]

----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started

Done.

Ouvrez + https: // + dans un navigateur Web et connectez-vous à l’aide de votre adresse e-mail et de votre mot de passe administrateur Seafile.

image: https: //assets.digitalocean.com/articles/seafile_1804/step5a.png [Écran de connexion de l’interface Web Seafile]

Une fois connecté, vous pouvez accéder à l’interface d’administration ou créer de nouveaux utilisateurs.

Maintenant que vous avez vérifié que l’interface Web fonctionne correctement, vous pouvez permettre à ces services de démarrer automatiquement au démarrage du système à l’étape suivante.

Étape 6 - Activer le serveur Seafile pour qu’il démarre au démarrage du système

Pour permettre au serveur de fichiers et à l’interface Web de démarrer automatiquement au démarrage, vous pouvez créer leurs fichiers de service + systemd + respectifs et les activer.

Créez un fichier de service + systemd + pour le serveur de fichiers Seafile:

sudo nano /etc/systemd/system/seafile.service

Ajoutez le contenu suivant au fichier:

Créez /etc/systemd/system/seafile.service

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home//seafile/seafile-server-latest/seafile.sh start
ExecStop=/home//seafile/seafile-server-latest/seafile.sh stop
User=
Group=

[Install]
WantedBy=multi-user.target

Ici, les lignes + ExectStart + et + ExecStop + indiquent les commandes qui s’exécutent pour démarrer et arrêter le service Seafile. Le service fonctionnera avec ++ en tant que + User et` + Group`. La ligne + After + indique que le service Seafile va démarrer après le démarrage du réseau et du service MariaDB.

Sauvegardez + seafile.service + et quittez.

Créez un fichier de service + systemd + pour l’interface Web Seahub:

sudo nano /etc/systemd/system/seahub.service

Ceci est similaire au service Seafile. La seule différence est que l’interface Web est démarrée après le service Seafile. Ajoutez le contenu suivant à ce fichier:

Créez /etc/systemd/system/seahub.service

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home//seafile/seafile-server-latest/seahub.sh start
ExecStop=/home//seafile/seafile-server-latest/seahub.sh stop
User=
Group=

[Install]
WantedBy=multi-user.target

Sauvegardez + seahub.service + et quittez.

Pour en savoir plus sur les fichiers d’unité systemd, consultez le tutoriel Comprendre les unités et les fichiers d’unités.

Enfin, pour permettre aux services Seafile et Seahub de démarrer automatiquement au démarrage, exécutez les commandes suivantes:

sudo systemctl enable seafile.service
sudo systemctl enable seahub.service

Lorsque le serveur est redémarré, Seafile démarre automatiquement.

À ce stade, vous avez terminé la configuration du serveur et pouvez maintenant tester chacun des services.

Étape 7 - Test de la fonctionnalité de synchronisation et de partage de fichiers

Au cours de cette étape, vous allez tester la fonctionnalité de synchronisation et de partage de fichiers du serveur que vous avez configuré et vous assurer de son bon fonctionnement. Pour ce faire, vous devrez installer le programme client Seafile sur un ordinateur séparé et / ou un périphérique mobile.

Visitez la page download sur le site Web de Seafile et suivez les instructions pour installer la dernière version du programme client sur votre ordinateur. Les clients Seafile sont disponibles pour les différentes distributions de Linux (Ubuntu, Debian, Fedora, Centos / RHEL, Arch Linux), MacOS et Windows. Les clients mobiles sont disponibles pour les appareils Android et iPhone / iPad dans les magasins d’applications respectifs.

Une fois que vous avez installé le client Seafile, vous pouvez tester la synchronisation des fichiers et la fonctionnalité de partage.

Ouvrez le programme client Seafile sur votre ordinateur ou votre appareil. Acceptez l’emplacement par défaut du dossier Seafile et cliquez sur * Suivant *.

Dans la fenêtre suivante, entrez l’adresse du serveur, le nom d’utilisateur et le mot de passe, puis cliquez sur * Connexion *.

Sur la page d’accueil, faites un clic droit sur * Ma bibliothèque * et cliquez sur * Synchroniser cette bibliothèque *. Acceptez la valeur par défaut pour l’emplacement sur votre ordinateur ou votre périphérique.

image: https: //assets.digitalocean.com/articles/seafile_1804/step7a.png [Client Seafile - Synchroniser la bibliothèque par défaut]

Ajoutez un fichier, par exemple un document ou une photo, dans le dossier * Ma bibliothèque *. Après un certain temps, le fichier sera téléchargé sur le serveur. La capture d’écran suivante montre le fichier * photo.jpg * copié dans le dossier * Ma bibliothèque *.

image: https: //assets.digitalocean.com/articles/seafile_1804/step7b.png [Ajouter un fichier à la bibliothèque par défaut à partir de l’ordinateur]

Maintenant, connectez-vous à l’interface Web à + ​​https: // + et vérifiez que votre fichier est présent sur le serveur.

image: https: //assets.digitalocean.com/articles/seafile_1804/step7c.png [Page Ma bibliothèque pour vérifier la synchronisation des fichiers]

Cliquez sur * Partager * à côté du fichier pour générer un lien de téléchargement pour ce fichier que vous pouvez partager.

Vous avez vérifié que la synchronisation de fichiers fonctionne correctement et que vous pouvez utiliser Seafile pour synchroniser et partager des fichiers et des dossiers à partir de plusieurs périphériques.

Conclusion

Dans ce tutoriel, vous configurez une instance privée d’un serveur Seafile. Vous pouvez maintenant commencer à utiliser le serveur pour synchroniser des fichiers, ajouter des utilisateurs et des groupes, et partager des fichiers entre eux ou avec le public sans faire appel à un service externe.

Lorsqu’une nouvelle version du serveur est disponible, veuillez consulter la section upgrade du manuel pour connaître les étapes à suivre pour effectuer une mise à niveau.