Seafile est un logiciel d'hébergement de fichiers gratuit avec une fonctionnalité comme Dropbox ou Google Drive qui peut être installé sur votre propre serveur. Seafile est publié sous une licence OpenSource. Vous pouvez créer votre propre serveur sécurisé de synchronisation et de partage de fichiers avec seafile, c'est un logiciel de partage de fichiers fiable qui permet aux utilisateurs de chiffrer leurs données sur le serveur. Seafile est écrit en C et Python.
Dans ce didacticiel, je vais vous montrer comment créer votre propre serveur de synchronisation et de partage de fichiers avec seafile sur openSUSE Leap 42.1. Nous vous guiderons tout au long de l'installation de seafile, puis configurerons l'interface graphique Web avec un cryptage https derrière un serveur proxy inverse nginx.
Prérequis
- OpenSUSE Leap 42.1 - 64 bits
- Privilèges root
- Comprendre la commande zypper
Étape 1 - Configurer le nom d'hôte
Connectez-vous à votre serveur openSUSE :
ssh [email protected]
après vous être connecté au serveur, modifiez le fichier hosts avec vim :
vim /etc/hosts
Coller la configuration (remplacez l'adresse IP et le nom d'hôte par vos propres valeurs) :
192.168.1.101 cloud.kuonseafile.co cloud
Enregistrez et quittez.
Remarque :
192.168.1.101 =l'adresse IP de mon serveur.
Cloud =nom d'hôte de mon serveur.
kuonseafile.co =mon nom de domaine.
Vérifiez le nom d'hôte et le FQDN (nom de domaine complet) :
hostname
hostname -f
Étape 2 - Installer les dépendances
Seafile est écrit en python, nous avons donc besoin de plusieurs bibliothèques python pour l'installation. Pour la base de données, seafile supporte SQLite et MySQL, dans ce tutoriel, j'utiliserai une base de données MySQL qui offre de meilleures performances que SQLite.
Installez tous les packages, y compris le serveur MySQL/MariaDB avec la commande zypper ci-dessous :
zypper in python python-imaging python-MySQL-python python-setuptools mariadb mariadb-client
Une fois l'installation terminée, passez à l'étape suivante.
Étape 3 - Configurer la base de données
Il y a une chose que vous devez savoir lorsque vous souhaitez déployer seafile. Seafile a besoin de 3 bases de données :
- base de données ccnet
- base de données seafile
- base de données seahub
À l'étape 2, nous avons installé avec succès le serveur MySQL/MariaDB, démarrez-le maintenant avec la commande ci-dessous :
rcmysql start
Définissez un nouveau mot de passe pour l'utilisateur mysql root avec la commande mysqladmin :
/usr/bin/mysqladmin -u root password 'aqwe123'
Ensuite, connectez-vous au shell MySQL et créez 3 bases de données pour seafile et un nouvel utilisateur pour ces 3 bases de données.
Connectez-vous au shell MySQL :
mysql -u root -p
SAISIR LE MOT DE PASSE "aqwe123"
Créez les trois bases de données pour l'installation de seafile :ccnet_db, seafile_db et seahub_db :
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
Et créez un nouvel utilisateur seafilecloud avec le mot de passe '[email protected]' :
create user [email protected] identified by '[email protected]';
Accordez maintenant l'accès à l'utilisateur seafilecloud à toutes les bases de données :
grant all privileges on ccnet_db.* to [email protected] identified by '[email protected]';
grant all privileges on seafile_db.* to [email protected] identified by '[email protected]';
grant all privileges on seahub_db.* to [email protected] identified by '[email protected]';
flush privileges;
Toutes les bases de données sont prêtes pour l'installation de seafile.
Étape 4 - Installer et configurer Seafile
Dans cette étape, nous allons installer et configurer seafile. Nous allons installer seafile sous l'utilisateur seafile et le répertoire personnel, nous devons donc créer un nouvel utilisateur Linux avec le nom "seafile".
Créer le nouvel utilisateur
Créez un nouvel utilisateur avec le nom seafile pour l'installation :
useradd -m -s /bin/bash seafile
Remarque :
-m =Créer un nouveau répertoire personnel pour l'utilisateur sous "/home/".
-s /bin/bash =Définir le shell pour l'utilisateur.
Télécharger Seafile
Basculez vers l'utilisateur seafile avec la commande su ci-dessous :
su - seafile
Maintenant que vous êtes dans le répertoire d'accueil de seafile, téléchargez le serveur seafile 5 avec la commande wget :
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_5.1.3_x86-64.tar.gz
Extrayez l'archive seafile et renommez-la :
tar -xzvf seafile-server_5.1.3_x86-64.tar.gz
mv seafile-server-5.1.3/ seafile-server
Installer Seafile 5
Accédez au répertoire seafile-server et exécutez le fichier de configuration pour installer seafile :
cd seafile-server/
Nous allons installer seafile avec la base de données MySQL, alors lancez le fichier d'installation MySQL :
./setup-seafile-mysql.sh
Maintenant, il vous sera demandé les détails du serveur.
nom du serveur =utiliser le nom d'hôte du serveur.
IP ou domaine du serveur =utiliser l'adresse IP de mon serveur.
Direction des données Seafile =appuyez simplement sur Entrée.
Port pour le serveur de fichiers seafile =appuyez simplement sur Entrée.
Ensuite, configurez la base de données. Nous avons créé notre propre base de données pour l'installation, alors choisissez le numéro "2" .
Maintenant, vous serez interrogé sur le profil de la base de données :
Hébergeur du mysql =La valeur par défaut est localhost.
Port par défaut =3306.
Utilisateur MySQL pour seafile =Utilise l'utilisateur que nous avons créé à l'étape 3 - "seafilecloud".
Mot de passe MySQL =mot de passe pour l'utilisateur seafilecloud.
base de données ccnet =Nous avons créé la base de données - ccnet_db.
base de données seafile =seafile_db.
base de données seahub =seahub_db.
Si aucune erreur ne s'est produite, vous pouvez confirmer l'installation en appuyant sur "Entrée".
attendez que le script génère la configuration et la base de données.
Démarrer Seafile et Seahub
Seafile est installé, vous pouvez maintenant le démarrer avec la commande ci-dessous :
./seafile.sh start
./seahub.sh start
Il vous sera demandé de créer un utilisateur administrateur pour seafile, entrez simplement votre adresse e-mail et votre mot de passe administrateur.
À ce stade, vous pouvez accéder à l'interface graphique Web Seafile sur le port 8000.
Étape 5 - Installer et configurer Nginx
Nginx est un serveur Web léger avec une faible utilisation de la mémoire et du processeur. Dans cette étape, nous allons installer nginx, puis créer un nouvel hôte virtuel pour l'accès proxy inverse à seafile. Nous allons activer https pour les connexions sur le serveur.
Installer Nginx
Installez le serveur Web nginx avec la commande zypper :
zypper in nginx
Générer le certificat SSL
Ensuite, allez dans le répertoire nginx et créez un nouveau répertoire pour le certificat SSL. Générez ensuite le fichier de certificat avec la commande OpenSSL :
mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
Générez maintenant le fichier de certificat :
openssl genrsa -out privkey.pem 4096
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
Configurer l'hôte virtuel
Dans le répertoire nginx, créez un nouveau répertoire appelé "vhosts.d" pour stocker le fichier d'hôte virtuel. Créez ce répertoire, puis créez un nouveau fichier d'hôte virtuel avec vim :
mkdir -p /etc/nginx/vhosts.d/
cd /etc/nginx/vhosts.d/
vim cloud.kuonseafile.conf
Collez la configuration de l'hôte virtuel ci-dessous :
server {
listen 80;
server_name cloud.kuonseafile.co; #Domain Name
rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https
}
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/cacert.pem; # path to your cacert.pem
ssl_certificate_key /etc/nginx/ssl/privkey.pem; # path to your privkey.pem
server_name cloud.kuonseafile.co; #Domain Name
proxy_set_header X-Forwarded-For $remote_addr;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
server_tokens off;
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 HTTPS on;
fastcgi_param HTTP_SCHEME https;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
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 /home/seafile/seafile-server/seahub;
}
}
Remplacez le nom_serveur par votre propre nom de domaine - lignes 3 et 11.
Pour la ligne 47 de l'emplacement du support, remplacez le chemin de l'installation seafile - '/home/seafile/seafile-server/seahub'.
Enregistrez le fichier et quittez l'éditeur, puis testez la configuration avec la commande :
nginx -t
assurez-vous qu'il n'y a pas de problème ou d'erreur sur la configuration.
Configurer Seafile pour utiliser votre propre domaine et HTTPS
Basculez vers le fichier marin utilisateur et modifiez la configuration. Avant de modifier la configuration, désactivez les services seafile et seahub.
su - seafile
cd seafile-server/
./seafile.sh stop
./seahub.sh stop
Revenez au répertoire d'accueil de l'utilisateur seafile, puis accédez au répertoire conf et modifiez les fichiers ccnet.conf et seahub_settings.py.
cd ~/
cd conf/
Modifier le fichier ccnet.conf :
vim ccnet.conf
À la ligne 5 : 'SERVICE_URL' :remplacez le domaine par votre propre nom de domaine par https.
SERVICE_URL = https://cloud.kuonseafile.co/
Enregistrez et quittez.
Modifiez maintenant seahub_settings.py
vim seahub_settings.py
Ajoutez la nouvelle ligne ci-dessous pour définir la racine du serveur de fichiers.
FILE_SERVER_ROOT = 'https://cloud.kuonseafile.co/seafhttp'
Enregistrez et quittez.
Étape 6 - Démarrer le fichier marin et les tests
Nginx est installé - MariaDB/MySQL sont installés et le serveur seafile est installé.
Faites en sorte que Nginx et MySQL démarrent au démarrage :
systemctl enable nginx
systemctl enable mysql
Redémarrez les services :
systemctl restart nginx
systemctl restart mysql
Ensuite, démarrez seafile et seahub à partir de l'utilisateur seafile :
su - seafile
cd seafile-server/
./seafile start
./seahub start-fastcgi
Tous les services sont démarrés.
Vous pouvez maintenant accéder au serveur seafile avec l'URL de votre serveur. Le mien est :
cloud.kuonseafile.co
Vous serez redirigé vers la page de connexion https de seafile.
Entrez les détails de l'utilisateur administrateur que nous avons créés à l'étape 4.
Vous pouvez maintenant voir le gestionnaire de fichiers seafile et commencer à télécharger des fichiers sur votre serveur seafile.