Comment installer Seafile avec Nginx sur CentOS 7
Sur cette page
- Prérequis
- Étape 1 – Préparer CentOS pour Seafile
- Étape 2 - Installer les dépendances Seafile
- Étape 3 : Configurer MariaDB
- Étape 4 - Installer Seafile
- Étape 5 : Configurer le service Seafile et Seahub
- Étape 6 : Générer des fichiers de certificat SSL
- Étape 7 : Configurer Nginx en tant que proxy inverse
- Étape 8 - Configurer FirewallD
- Étape 9 : Tester Seafile
- Conclusion
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 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.
Conditions préalables
- Serveur CentOS 7
- Privilèges racine
Étape 1 - Préparer CentOS pour Seafile
Connectez-vous au serveur centOS avec votre mot de passe root ssh.
ssh
TYPE YOUR PASSWORD
Modifiez le fichier de configuration SELinux avec vim.
vim /etc/sysconfig/selinux
Remplacez l'application de la valeur par désactivé.
SELINUX=disabled
Enregistrez le fichier et quittez l'éditeur.
Redémarrez le serveur pour appliquer la modification de la politique SELinux.
reboot
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 Disabled 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 start mariadb
mysql_secure_installation
Tapez votre mot de passe root.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
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 yourpassword. 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
TYPE YOUR PASSWORD
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.
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user identified by 'yourpassword';
flush privileges;
exit
Remplacez yourpassword 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 seafile-server-6.0.5 seafile-server
cd seafile-server/
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 des serveurs - 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 yourpassword
- 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.
Tapez 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
Before=seahub.service
After=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=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Sauvegarder et quitter.
Créez maintenant un nouveau fichier seahub.service.
vim seahub.service
Et collez la configuration ci-dessous.
[Unit]
Description=Seafile Hub
After=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
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Sauvegarder et quitter.
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 le service seafile et seahub s'exécute 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
chmod 400 server.*
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;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /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:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
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 REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
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;
}
#CHANGE THIS PATH WITH YOUR OWN DIRECTORY
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
Sauvegarder et quitter.
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 Nginx et assurez-vous qu'il n'y a pas d'erreurs.
nginx -t
Démarrez Nginx avec la commande systemctl :
systemctl start nginx
Assurez-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. Accédez au répertoire seafile et modifiez le fichier de configuration.
cd /var/www/seafile/
vim conf/ccnet.conf
Remplacez l'URL du service par votre nom de domaine.
SERVICE_URL = https://cloud.natsume.co
Sauvegarder et quitter.
Modifiez le fichier de configuration du Seahub.
vim conf/seahub_settings.py
Sur 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. Sauvegarder et quitter.
Redémarrez seafile et ajoutez tous les services à démarrer au démarrage :
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable 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 le pare-feu.
systemctl start firewalld
systemctl enable firewalld
Ajoutez 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 --permanent
Rechargez 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.