Seafile est un logiciel de cloud privé qui fournit des fonctionnalités similaires telles que Dropbox, mega.co.nz et d'autres, simplement hébergées sur votre propre serveur. Seafile est basé sur le langage de programmation python et il est publié sous une licence open source afin que vous puissiez créer votre propre cloud privé et qu'il soit beaucoup plus sécurisé.
Seafile prend en charge le cryptage pour stocker vos données en toute sécurité. Pour chiffrer des fichiers dans une bibliothèque de stockage, vous devez définir un mot de passe lorsque vous créez la bibliothèque. Le mot de passe ne sera pas stocké dans le cloud Seafile. Ainsi, même l'administrateur des serveurs ne peut pas voir vos données cryptées sans le mot de passe.
Dans ce tutoriel, j'installerai Seafile sur CentOS 7 avec le serveur Web Nginx et MariaDB comme serveur de base de données.
Prérequis
- Serveur CentOS 7
- Privilèges root
Étape 1 - Préparer CentOS pour Seafile
Connectez-vous au serveur centOS avec votre mot de passe root ssh.
ssh [email protected]
TAPEZ VOTRE MOT DE PASSE
Modifiez le fichier de configuration SELinux avec vim.
vim /etc/sysconfig/selinux
Remplacez la valeur 'enforcing' par 'disabled'.
SELINUX=désactivé
Enregistrez le fichier et quittez l'éditeur.
Redémarrez le serveur pour appliquer la modification de la politique SELinux.
redémarrer
Attendez le redémarrage du serveur, puis reconnectez-vous à votre serveur en tant qu'utilisateur root.
Vérifiez le selinux avec la commande ci-dessous :
getenforce
Vous devriez voir 'Désactivé ' comme résultat.
Étape 2 - Installer les dépendances Seafile
Seafile est basé sur python, nous devons donc d'abord installer python pour l'installation. Seafile prend en charge les bases de données SQLite et MySQL/MariaDB, j'utiliserai ici MariaDB comme base de données pour seafile car il offre de meilleures performances que SQLite. Nginx est utilisé comme proxy inverse pour Seafile et Seahub.
Dans cette étape, nous allons installer plusieurs packages python, MariaDB et Nginx. Nous commençons par l'installation du référentiel EPEL sur notre serveur CentOS.
yum -y install epel-release
Ensuite, installez les packages python, MariaDB et Nginx.
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Attendez que tous les packages soient installés.
Étape 3 - Configurer MariaDB
À l'étape 2, nous avons déjà installé le serveur MariaDB, il nous suffit de démarrer le service et de configurer le mot de passe root maintenant.
Démarrez MariaDB et configurez le mot de passe root avec les commandes ci-dessous :
systemctl démarrer mariadb
mysql_secure_installation
Saisissez votre mot de passe root.
Définir le mot de passe root ? [O/n] O
Nouveau mot de passe :
Saisir à nouveau le nouveau mot de passe :
Supprimer les utilisateurs anonymes ? [O/n] O
Interdire la connexion root à distance ? [O/n] O
Supprimer la base de données de test et y accéder ? [O/n] O
Recharger les tables de privilèges maintenant ? [O/n] O
Le mot de passe root MariaDB est configuré et nous pouvons maintenant nous connecter au shell mysql.
Remarque :le shell de ligne de commande MariaDB s'appelle mysql.
Nous allons créer 3 bases de données pour seafile :
- ccnet_db
- seafile_db
- seahub_db
Et nous allons créer un nouvel utilisateur 'seacloud ' avec le mot de passe 'votremot de passe '. Remplacez votre mot de passe par un mot de passe sécurisé !
Connectez-vous au shell mysql avec le client mysql.
mysql -u root -p
TAPEZ VOTRE MOT DE PASSE
Exécutez les requêtes mysql ci-dessous pour créer les bases de données et l'utilisateur pour l'installation du fichier marin.
créer la base de données ccnet_db character set ='utf8';
créer la base de données seafile_db character set ='utf8';
créer la base de données seahub_db character set ='utf8';
créer utilisateur [email protected] identifié par 'yourpassword' ;
accorder tous les privilèges sur ccnet_db.* à [email protected] identifié par 'yourpassword' ;
accorder tous les privilèges sur seafile_db.* à [ email protected] identifié par 'yourpassword' ;
accorder tous les privilèges sur seahub_db.* à [email protected] identifié par 'yourpassword' ;
vider les privilèges ;
quitter
Remplacez votre mot de passe dans les commandes ci-dessus par votre propre mot de passe.
Étape 4 - Installer Seafile
Dans cette étape, nous allons installer Seafile. Seafile sera exécuté sous l'utilisateur nginx afin que nous puissions utiliser nginx comme proxy inverse pour les services seafile et seahub.
Nous allons installer seafile sous l'utilisateur nginx dans le répertoire '/var/www/seafile', créer ce répertoire et le saisir avec cd.
mkdir -p /var/www/seafile
cd /var/www/seafile
Téléchargez Seafile avec la commande wget et extrayez l'archive téléchargée.
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64. tar.gz
Renommez le répertoire en 'seafile-server' et basculez vers ce répertoire.
mv serveur-seafile-6.0.5 serveur-seafile
cd serveur-seafile/
Exécutez le fichier 'setup-seafile-mysql.sh' pour configurer la base de données.
./setup-seafile-mysql.sh
Appuyez sur Entrée et les informations ci-dessous vous seront demandées :
- nom du serveur - j'utiliserai le nom d'hôte du serveur 'natsume '
- IP ou domaine du serveur - adresse IP du serveur, dans mon cas '192.168.1.115 '
- répertoire de données par défaut - appuyez simplement sur Entrée
- port par défaut - appuyez sur Entrée
- Maintenant, pour la configuration de la base de données, choisissez le numéro 2
Pour la configuration MySQL :
- utiliser l'hôte par défaut - localhost
- port par défaut - 3306
- l'utilisateur mysql - 'seacloud '
- et le mot de passe est 'votremot de passe '
- la base de données ccnet est 'ccnet_db '
- la base de données seafile est 'seafile_db '
- la base de données seahub est 'seahub_db '
Appuyez sur Entrée et le script créera les tables de base de données pour le fichier marin.
Nous pouvons maintenant démarrer les services seafile et seahub.
./seafile.sh start
./seahub.sh start
Lorsque le fichier seahub.sh est exécuté, il nous sera demandé la configuration de l'administrateur.
Saisissez votre adresse e-mail et votre mot de passe administrateur, puis le service Seahub fonctionnera.
Seafile est installé et fonctionne maintenant, nous pouvons accéder à Seafile à partir d'un navigateur Web avec l'adresse IP du serveur sur le port 8000 (dans mon cas - 192.168.1.115:8000), mais nous ne le ferons pas maintenant car nous utiliserons un proxy inverse pour le serveur seafile et nous exécuterons seafile avec un fichier de service systemd.
Nous devons donc arrêter le service seafile et seahub pour le moment.
./seafile.sh stop
./seahub.sh stop
Étape 5 - Configurer le service Seafile et Seahub
Nous allons exécuter seafile en tant qu'utilisateur nginx, nous devons donc changer le propriétaire du répertoire d'installation seafile et du répertoire seahub_cache en utilisateur nginx :
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Ensuite, allez dans le répertoire systemd et créez un fichier seafile.service avec vim :
cd /etc/systemd/system/
vim seafile.service
Collez la configuration du service seafile ci-dessous :
[Unité]
Description=Seafile Server
Avant=seahub.service
Après=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit =oui
Utilisateur=nginx
Groupe=nginx
[Installer]
WantedBy=multi-user.target
Enregistrez et quittez.
Créez maintenant un nouveau fichier seahub.service.
vim seahub.service
Et collez la configuration ci-dessous.
[Unité]
Description=Seafile Hub
Après=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
Utilisateur=nginx
Groupe=nginx
[Installer]
WantedBy=multi-user.target
Enregistrez et quittez.
Rechargez le service systemd et démarrez seafile et seahub avec systemctl.
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Assurez-vous qu'il n'y a pas d'erreur et vérifiez que les services seafile et seahub fonctionnent sur les ports 8082 et 8000.
netstat -plntu
Étape 6 - Générer des fichiers de certificat SSL
Pour ce didacticiel, nous exécuterons seafile sur un proxy Nginx, et Nginx fournira des connexions sécurisées (HTTPS) pour la sécurité des données. Nous pouvons utiliser un fichier de certificat SSL gratuit ou le certificat SSL payant, cela n'a pas d'importance pour la configuration. Dans cette étape, je vais générer un fichier de certificat SSL auto-signé avec OpenSSL dans le répertoire "/etc/nginx/ssl".
Créez le répertoire SSL.
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Générez des fichiers de certificats auto-signés et un fichier dhparam avec la commande ci-dessous :
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Répondez aux détails du certificat demandés par OpenSSL, tels que votre nom, votre état, votre adresse e-mail, votre nom de domaine, etc. Modifiez ensuite les autorisations du répertoire et des fichiers de certificat.
chmod -R 700 /etc/nginx/ssl
serveur chmod 400.*
chmod 400 dhparam.pem
Les fichiers de certificat SSL ont été générés.
Étape 7 - Configurer Nginx en tant que proxy inverse
Dans cette étape, nous allons configurer Nginx en tant que proxy inverse pour le serveur seafile sur les ports 8000 et 8002.
Accédez au répertoire de configuration nginx et créez un nouveau fichier d'hôte virtuel pour seafile.
cd /etc/nginx/
vim conf.d/seafile.conf
Collez la configuration de l'hôte virtuel ci-dessous :
server {
listen 80 ;
nom_serveur cloud.natsume.co ;
return 301 https://$host$request_uri ;
}
serveur {
écouter 443 ssl ;
nom_serveur cloud.natsume.co ;
sl activé ;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ;
certificat_ssl /etc/ nginx/ssl/server.crt ;
ssl_certificate_key /etc/nginx/ssl/server.key ;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128- GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE- RSA-AES128-SHA :DHE-RSA-AES256-SHA256 :DHE-RSA-AES128-SHA256 :DHE-RSA-AES256-SHA :DHE-RSA-AES128-SHA :ECDHE-RSA-DES-CBC3-SHA :EDH- RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:ÉLEVÉ:!aNULL:!eNULL :!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
emplacement / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param script_filename $ document_root $ fastcgi_script_name;
FastCGI_PARAM PATH_INFO $ FASTCGI_NAME; br /> fastcgi_param server_protocol $ server_protocol;
fastcgi_param query_string $ query_string;
fastcgi_param request_method $ request_method $ server_addr;
fastcgi_param server_port $ server_port;
fastcgi_param server_name $ server_name;
fastcgi_param éteinte_addr $ rote_addr;
Access_log /var/log/nginx/seaHub.Access. log;
error_log /var/log/nginx/seahub.error.log;
fas tcgi_read_timeout 36000 ;
}
# Reverse Proxy for seahub
location /seafhttp {
réécrire ^/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 36000;
Send_timeout 36000s;
}
#CHANGEZ CE CHEMIN AVEC VOTRE PROPRE RÉPERTOIRE
location /media {
root /var/www/seafile/seafile-server/seahub ;
}
}Enregistrez et quittez.
J'utiliserai "cloud.natsume.co" comme nom de domaine. Veuillez le remplacer par votre propre nom de domaine dans la configuration ci-dessus.
Testez maintenant la configuration de Nginx et assurez-vous qu'il n'y a pas d'erreurs.
nginx -tDémarrez Nginx avec la commande systemctl :
systemctl démarrer nginxAssurez-vous que les ports 80 et 443 sont disponibles dans la liste fournie par netstat :
netstat -plntu
Ensuite, nous devons ajouter le nom de domaine à la configuration seafile. Allez dans le répertoire seafile et modifiez le fichier de configuration.
cd /var/www/seafile/
vim conf/ccnet.confRemplacez l'URL du service par votre nom de domaine.
SERVICE_URL =https://cloud.natsume.coEnregistrez et quittez.
Modifiez le fichier de configuration du Seahub.
vim conf/seahub_settings.pySur la deuxième ligne, ajoutez la configuration ci-dessous :
HTTP_SERVER_ROOT ='https://cloud.natsume.co/seafhttp'Remplacez à nouveau le nom de domaine par votre domaine. Enregistrez et quittez.
Redémarrez seafile et ajoutez tous les services à démarrer au démarrage :
systemctl redémarrer seafile
systemctl redémarrer seahub
systemctl activer nginx
systemctl activer mariadb
systemctl activer seafile
systemctl activer seahub
Étape 8 - Configurer FirewallD
À l'étape 7, nous avons configuré Nginx pour utiliser les ports HTTP et HTTPS. Nous devons maintenant ouvrir ces ports dans le pare-feu en les ajoutant à firewalld.
Démarrez firewalld.
systemctl start firewalld
systemctl enable firewalldAjoutez les ports HTTP et HTTPS à la configuration du pare-feu avec la commande firewall-cmd ci-dessous :
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanentRechargez la configuration du pare-feu et vérifiez la liste des ports.
firewall-cmd --reload
firewall-cmd --list-all
Étape 9 - Tester Seafile
Ouvrez votre navigateur, tapez le nom de domaine seafile, dans mon cas cloud.natsume.co et vous serez redirigé vers la connexion https.
Saisissez votre adresse e-mail et votre mot de passe administrateur, puis cliquez sur "Connexion".
Tableau de bord d'administration Seafile :
Vue du fichier Seafile.
Seafile avec Nginx comme proxy inverse et SSL a été installé avec succès sur le serveur CentOS 7.
Conclusion
Avec la grande variété d'applications cloud d'aujourd'hui, Seafile est une solution de cloud privé qui peut être utilisée aujourd'hui. Grâce à la fonctionnalité de cryptage au niveau de la bibliothèque/dossier, vous pouvez stocker vos données en toute sécurité sur un serveur Seacloud. De plus, Seafile est facile à configurer et à mettre en œuvre sur votre propre serveur.