Comment installer Seafile avec Nginx sur Ubuntu 18.04 LTS

Seafile est un système d’hébergement de fichiers et de stockage en nuage open source doté de fonctions avancées comme la synchronisation à partir de plusieurs plateformes (système multiplateforme), la protection de la vie privée avec le cryptage intégré des fichiers et la prise en charge de l’authentification à deux facteurs (TFA), le contrôle de version, le verrouillage des fichiers, l’édition en ligne et bien d’autres choses encore. Seafile est écrit en langage de programmation C et Python et offre des fonctionnalités similaires à celles de Dropbox, mega.co.nz, et d’autres.

Dans ce tutoriel, je vais te montrer, étape par étape, comment installer et configurer un serveur Seafile avec le serveur Web Nginx et la base de données MySQL. Nous installerons le serveur Seafile sous le serveur Web Nginx avec le protocole SSL HTTPS Letsencrypt activé, en utilisant la dernière version de MySQL 5.8 sur le système Ubuntu 18.04.

Prérequis

  • Ubuntu 18.04
  • Privilèges de racine

Ce que nous allons faire ?

  1. Installer les dépendances Python de Seafile
  2. Installer et configurer MySQL
  3. Télécharger Seafile Server pour le système Linux
  4. Installer Seafile Server
  5. Installer Nginx et Letsencrypt
  6. Configurer Nginx comme Reverse-Proxy pour Seafile Server
  7. Configurer Seafile Server
  8. Exécuter Seafile Server en tant que service
  9. Configurer le pare-feu UFW
  10. Test de

Étape 1 – Installer les dépendances Python de Seafile

La première étape à suivre avant d’installer le serveur Seafile sur le système est d’installer ses dépendances. Seafile est une application basée sur python, et elle nécessite python 2.7 pour fonctionner sur le serveur.

Avant d’installer un quelconque paquet, nous devons mettre à jour le dépôt Ubuntu.

sudo apt update

Installe maintenant python 2.7 avec toutes les dépendances nécessaires à l’installation du serveur seafile en utilisant les commandes apt ci-dessous.

sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y

Attends que toutes les dépendances soient installées.

Étape 2 – Installe et configure MySQL

Seafile offre une prise en charge de SQLite et du serveur de base de données MySQL. Pour ce guide, nous utiliserons le serveur de base de données MySQL pour notre installation. Nous allons déployer le serveur Seafile en utilisant la dernière version de MySQL 5.8.

Installe le serveur MySQL à l’aide de la commande apt ci-dessous.

sudo apt install mysql-server mysql-client -y

Une fois l’installation terminée, démarre le service MySQL et active-le pour qu’il se lance à chaque fois au démarrage du système.

systemctl start mysql
systemctl enable mysql

Le serveur MySQL est installé sur le système Ubuntu.

Nous devons maintenant configurer le mot de passe de la racine de MySQL à l’aide de la commande ‘mysql_secure_installation’.

mysql_secure_installation

On te demandera maintenant quelle est la politique de mot de passe MySQL, 0 pour LOW, 1 pour MEDIUM et 2 pour STRONG. Tape le chiffre ‘1’ pour la politique de mot de passe MEDIUM, appuie sur la touche Entrée et tape ensuite ton mot de passe sécurisé.

Installe MySQL

Pour les autres, tape simplement ‘Y’ comme indiqué ci-dessous.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

La configuration du mot de passe racine MySQL est terminée.

Ensuite, nous allons créer une nouvelle base de données pour le serveur Seafile. Nous allons créer 3 bases de données pour chaque composant Seafile et créer un nouvel utilisateur de base de données. Nous allons créer un nouvel utilisateur nommé ‘seafile’ et il aura tous les privilèges pour les 3 bases de données ‘ccnet-db’, ‘seafile-db’ et ‘seahub-db’.

Connecte-toi au shell MySQL à l’aide de la commande client MySQL.

mysql -u root -p

Crée maintenant de nouvelles bases de données ‘ccnet-db’, ‘seafile-db’, ‘seahub-db’, et crée un nouvel utilisateur ‘seafile’. Accorde ensuite les 3 privilèges de base de données à l’utilisateur ‘seafile’.

Exécute les requêtes MySQL ci-dessous.

create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';

create user 'seafile'@'localhost' identified by '[email protected]';

GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

Crée une base de données pour Seafile

Le serveur MySQL a été installé, le mot de passe root a été configuré et la base de données pour l’installation de seafile a été créée.

Étape 3 – Télécharge le serveur Seafile pour le système Linux

Dans ce tutoriel, le serveur seafile fonctionnera comme un service sur le système systemd, et il fonctionnera sous un utilisateur non root.

Crée un nouvel utilisateur nommé ‘mohammad’.

useradd -m -s /bin/bash mohammad

Connecte-toi maintenant à l’utilisateur ‘mohammad’ et télécharge la dernière version du serveur seafile à l’aide de wget.

su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz

Extrais le fichier ‘seafile-server.tar.gz’ et renomme le répertoire principal en ‘seafile-server’.

tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/

Le code source de Seafile Server a été téléchargé dans le répertoire ‘/home/mohammad/seafile-server’.

Télécharge les sources de Seafile

Étape 4 – Installer le serveur Seafile avec MySQL

Dans cette étape, nous allons installer le serveur seafile à l’aide du script d’installation MySQL fourni par Seafile.

Connecte-toi en tant qu’utilisateur ‘mohammad’ et va dans le répertoire ‘seafile-server’.

su - mohammad
cd seafile-server/

Exécute ensuite le script ‘setup-seafile-mysql.sh’.

./setup-seafile-mysql.sh

Le script d’installation effectuera la vérification du module python. Assure-toi que toutes les dépendances sont installées, puis appuie sur Entrée.

Tu vas maintenant pouvoir configurer Seafile.

  • Nom du serveur : entre le nom de ton serveur Seafile, par exemple ‘hakase-cloud’.
  • Nom de domaine du serveur : entre le nom de domaine de ton serveur Seafile ‘cloud.hakase-labs.io’.
  • répertoire de données seafile : laisse la configuration par défaut et appuie sur la touche Entrée.
  • Port du serveur de fichiers seafile : laisse le port par défaut ‘8082’.

Installe le serveur seafile

Passons maintenant à la configuration de la base de données. On te demandera 2 options : laisser le script créer la base de données pour toi, ou utiliser une base de données existante.

Choisis l’option ‘2’ pour utiliser les paramètres de la base de données existante.

  • hôte de la base de données : par défaut localhost
  • Port de la base de données : par défaut sur le port normal de mysql ‘3306’.
  • L’utilisateur de la base de données est ‘seafile’ avec le mot de passe ‘[email protected]’.
  • Base de données ccnet : ccnet-db
  • base de données seafile : ‘seafile-db
  • base de données seahub : ‘seahub-db

Utilise la base de données existante pour seafile

Maintenant, appuie à nouveau sur la touche Entrée pour confirmer notre configuration du serveur seafile.

Confirme la configuration du serveur seafile

Et lorsque l’installation est terminée, tu obtiendras le résultat indiqué ci-dessous.

Installation du serveur Seafile terminée

L’installation et la configuration du serveur seafile ont été effectuées avec succès. Le serveur de fichiers seafile fonctionnera sur le port ‘8082’ et le service seahub sur le port ‘8000’.

Ensuite, nous allons tester l’exécution du serveur seafile et du serveur seahub à l’aide du script de démarrage.

En tant qu’utilisateur ‘mohammad’, va dans le répertoire ‘~/seafile-server-latest’.

su - mohammad
cd ~/seafile-server-latest/

Démarre ensuite le serveur seafile en exécutant la commande ci-dessous.

./seafile.sh start

Ensuite, exécute le serveur seahub.

./seahub.sh start

La première fois que tu exécutes le script de démarrage ‘seahub.sh’, il te sera demandé de créer un utilisateur et un mot de passe administrateur pour le serveur seafile.

Saisis ton adresse e-mail et ton mot de passe admin, puis appuie sur Entrée.

Lance le fichier marin

L’utilisateur admin et le mot de passe ont été créés. Vérifie maintenant les ports 8082 et 8080 des services seafile et seahub à l’aide de la commande netstat.

netstat -plntu

Et tu verras que le serveur seafile et le serveur seahub sont en place et fonctionnent sur le système Ubuntu 18.04.

Vérifier les ports

Maintenant, arrête le serveur seafile et seahub.

./seafile.sh stop
./seahub.sh stop

Arrêter seafile et seahub

Étape 5 – Installe et configure Nginx avec Letsencrypt

Pour ce guide, le serveur seafile fonctionnera sous le serveur web Nginx avec HTTPS activé. Dans cette étape, nous allons installer le serveur Web Nginx et l’outil Letsencrypt, puis générer la clé SSL letsencrypt et DHPARAM pour le nom de domaine du serveur seafile.

Installe le serveur Web Nginx à l’aide de la commande apt ci-dessous.

sudo apt install nginx -y

Une fois l’installation terminée, démarre le service Nginx et active-le pour qu’il se lance à chaque fois au démarrage du système.

systemctl start nginx
systemctl enable nginx

Installe maintenant l’outil letsencrypt pour générer des certificats SSL letsencrypt.

sudo apt install letsencrypt -y

Le serveur Web Nginx et l’outil letsencrypt ont été installés.

Ensuite, va dans le répertoire ‘/etc/nginx’ et crée un nouveau fichier de configuration ‘certbot.conf’ pour letsencrypt.

cd /etc/nginx/
vim snippets/certbot.conf

Colle-y la configuration suivante.

location /.well-known {
    alias /var/www/html/.well-known;
}

Sauvegarde et quitte.

Modifie le fichier d’hôte virtuel par défaut.

vim sites-available/default

Ajoute la ligne d’inclusion suivante à la parenthèse ‘server {…}’.

include snippets/certbot.conf;

Sauvegarde et quitte.

Teste la configuration de nginx et redémarre le serveur Web.

nginx -t
systemctl restart nginx

Configurer le serveur web nginx

Et nous sommes prêts à générer un nouveau certificat SSL letsencrypt pour le nom de domaine du serveur seafile.

Génère les fichiers du certificat SSL à l’aide de la commande ‘certbot’ comme indiqué ci-dessous.

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/html -d cloud.hakase-labs.io

Remarque :

  • nous allons générer un nouveau certificat SSL et spécifier la taille de la clé à ‘4096’.

Tu obtiendras maintenant tous les fichiers de certificats SSL situés dans le répertoire ‘/etc/letsencrypt/live’.

Crée un certificat SSL avec Let's encrypt

Et pour une sécurité supplémentaire, nous allons générer la clé Diffie-Hellman de taille 4096 à l’aide de la commande OpenSSL.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

Tous les certificats nécessaires ont été générés.

Étape 6 – Configurer Nginx comme Reverse-Proxy pour le serveur Seafile

Va dans le répertoire de configuration ‘/etc/nginx’ et crée un nouveau fichier d’hôte virtuel ‘seafile’ en utilisant vim.

cd /etc/nginx/
vim sites-available/seafile

Colle-y la configuration suivante.

 server {
        listen       80;
        server_name  cloud.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name cloud.hakase-labs.io;
        
        ssl on;
        ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;

        ssl_dhparam /etc/nginx/dhparam.pem;

        #SSL Security
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_ecdh_curve secp384r1;
        ssl_prefer_server_ciphers on;
        server_tokens off;
        ssl_session_tickets off;

        proxy_set_header X-Forwarded-For $remote_addr;

        location / {
            proxy_pass         http://127.0.0.1:8000;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
            proxy_read_timeout  1200s;

            # used for view/edit office file via Office Online Server
            client_max_body_size 0;

            access_log      /var/log/nginx/seahub.access.log;
            error_log       /var/log/nginx/seahub.error.log;
        }

        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
        }
        location /media {
            root /home/mohammad/seafile-server-latest/seahub;
        }
    }

Sauvegarde et quitte.

Active l’hôte virtuel seafile et teste la configuration.

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

Assure-toi qu’il n’y a pas d’erreur et redémarre le service nginx.

systemctl restart nginx

La configuration de Nginx en tant que reverse-proxy pour le serveur seafile est terminée.

Nginx comme proxy inverse pour seafile

Étape 7 – Configurer le serveur Seafile

Pour exécuter le serveur seafile sous le nom de domaine du serveur Web Nginx, nous devons modifier la configuration par défaut de ‘seafile’ pour le ‘service ccnet’, le ‘serveur seafile’ et le ‘serveur seahub’.

Connecte-toi en tant qu’utilisateur ‘mohammad’ et va dans le répertoire ‘conf/’.

su - mohammad
cd conf/

Modifie le fichier de configuration du service ccnet ‘ccnet.conf’.

vim ccnet.conf

Sur la ligne ‘SERVICE_URL’, modifie la valeur du nom de domaine avec HTTPS comme ci-dessous.

SERVICE_URL = https://cloud.hakase-labs.io

Sauvegarde et quitte.

Modifie maintenant le fichier ‘seafile.conf’ pour la configuration du serveur seafile.

vim seafile.conf

Ajoute la ligne ‘host’ avec la valeur ‘127.0.0.1’ localhost comme ci-dessous.

[fileserver]
host = 127.0.0.1
port = 8082

Sauvegarde et quitte.

Et enfin, nous allons modifier le fichier ‘seahub_settings.py’.

vim seahub_settings.py

Sur la ligne ‘FILE_SERVER_ROOT’, modifie la valeur du nom de domaine avec HTTPS.

FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'

Sauvegarde et quitte.

Configurer le serveur Seafile

Étape 8 – Exécuter Seafile Server en tant que service

Dans ce tutoriel, nous allons exécuter le serveur Seafile en tant que service sur le système Ubuntu 18.04. Nous allons créer un nouveau script de service pour seafile et seahub.

Va dans le répertoire ‘/etc/systemd/system’ et crée un nouveau fichier de service ‘seafile.service’.

cd /etc/systemd/system/
vim seafile.service

Colle-y le script de service seafile suivant.

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

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

[Install]
WantedBy=multi-user.target

Sauvegarde et quitte.

Crée maintenant le fichier de service seahub ‘seahub.service’.

vim seahub.service

Colle-y le script de service seahub suivant.

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

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

[Install]
WantedBy=multi-user.target

Sauvegarde et quitte.

Remarque :

  • Change le chemin des scripts seafile.sh et seahub.sh.

Maintenant, recharge le système systemd.

systemctl daemon-reload

Et démarre le service seafile et seahub.

systemctl start seafile
systemctl start seahub

Active ces services pour qu’ils se lancent chaque fois au démarrage du système.

systemctl enable seafile
systemctl enable seahub

Configurer l'unité Seafile systemd

Les services seafile et seahub sont en place et fonctionnent – vérifie-le à l’aide des commandes ci-dessous.

systemctl status seafile
systemctl status seahub

netstat -plntu

Seafile démarré par systemd

Étape 8 – Configurer le pare-feu UFW

Il est recommandé de toujours activer le pare-feu sur tout système. Pour le système ubuntu, nous allons activer le pare-feu UFW et y ajouter les ports SSH, HTTP et HTTPS.

Ajoute le port ‘ssh’ et active le pare-feu UFW.

ufw allow ssh
ufw enable

Tape ‘y’ pour activer le pare-feu.

Ajoute maintenant les services HTTP et HTTPS.

ufw allow http
ufw allow https

Vérifie les règles de la liste sur le pare-feu.

ufw status numbered

Et tu auras trois services SSH, HTTP et HTTPS dans la liste.

Configurer le pare-feu UFW

Étape 9 – Test

Ouvre ton navigateur Web et tape l’installation de l’URL du serveur seafile. La mienne est :

http://cloud.hakase-labs.io/

Et tu seras redirigé vers la page de connexion sécurisée de la connexion HTTPS.

Connexion à Seafile

Tape l’email de l’administrateur ‘[email protected]’ et le mot de passe ‘mypassword’, puis clique sur le bouton ‘Log in’.

Tu obtiendras maintenant le tableau de bord de Seafile comme ci-dessous.

Tableau de bord de Seafile

Supplémentaire – a téléchargé une image et l’affiche sur le tableau de bord seafile.

Télécharge le fichier avec Seafile

L’installation et la configuration du serveur seafile avec le serveur Web Nginx et Letsencrypt sur Ubuntu 18.04 ont été effectuées avec succès.

Référence

Vous aimerez aussi...