Recherche de site Web

Comment installer Seafile avec Nginx sur Ubuntu 18.04 LTS


Ce tutoriel existe pour ces versions d'OS

  • Ubuntu 15.04 (Vif Vervet)

Sur cette page

  1. Prérequis
  2. Qu'allons-nous faire ?
  3. Étape 1 : Installer les dépendances Seafile Python
  4. Étape 2 : Installer et configurer MySQL
  5. Étape 3 - Télécharger le serveur Seafile pour le système Linux
  6. Étape 4 : Installer le serveur Seafile avec MySQL
  7. Étape 5 : Installer et configurer Nginx avec Letsencrypt
  8. Étape 6 : Configurer Nginx en tant que proxy inverse pour le serveur Seafile
  9. Étape 7 - Configurer le serveur Seafile
  10. Étape 8 - Exécution de Seafile Server en tant que service
  11. Étape 8 : Configurer le pare-feu UFW
  12. Étape 9 : Tests
  13. Référence

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

Dans ce tutoriel, je vais vous 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 HTTPS SSL Letsencrypt activé, en utilisant le dernier MySQL 5.8 sur le système Ubuntu 18.04.

Conditions préalables

  • Ubuntu 18.04
  • Privilèges racine

Qu'allons nous faire?

  1. Installer les dépendances Seafile Python
  2. Installer et configurer MySQL
  3. Télécharger le serveur Seafile pour le système Linux
  4. Installer le serveur Seafile
  5. Installer Nginx et Letsencrypt
  6. Configurer Nginx en tant que proxy inverse pour le serveur Seafile
  7. Configurer le serveur Seafile
  8. Exécution du serveur Seafile en tant que service
  9. Configurer le pare-feu UFW
  10. Tests

Étape 1 - Installer les dépendances Seafile Python

La première étape à franchir avant d'installer le serveur seafile sur le système consiste à installer ses dépendances. Seafile est une application basée sur python, et elle nécessite python 2.7 pour s'exécuter sur le serveur.

Avant d'installer des packages, nous devons mettre à jour le référentiel Ubuntu.

sudo apt update

Installez maintenant python 2.7 avec toutes les dépendances nécessaires à l'installation du serveur seafile à l'aide des 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

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

Étape 2 - Installer et configurer MySQL

Seafile offre un support pour SQLite et le 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 MySQL 5.8.

Installez 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émarrez le service MySQL et activez-le pour qu'il se lance à chaque 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 root MySQL à l'aide de la commande mysql_secure_installation.

mysql_secure_installation

Vous serez maintenant interrogé sur la politique de mot de passe MySQL, 0 pour LOW, 1 pour MEDIUM et 2 pour STRONG. Tapez le numéro 1 pour la stratégie de mot de passe MOYEN, appuyez sur Entrée, puis tapez votre mot de passe sécurisé.

Pour les autres, tapez 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 root 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 sur les 3 bases de données ccnet-db, seafile-db et seahub-db.

Connectez-vous au shell MySQL à l'aide de la commande client MySQL.

mysql -u root -p

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

Exécutez 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 '';

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;

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écharger Seafile Server pour le système Linux

Dans ce didacticiel, le serveur seafile s'exécutera en tant que service sur le système systemd et s'exécutera sous un utilisateur non root.

Créez un nouvel utilisateur nommé mohammad.

useradd -m -s /bin/bash mohammad

Connectez-vous maintenant à l'utilisateur mohammad et téléchargez 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

Extrayez le fichier seafile-server.tar.gz et renommez le répertoire maître 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 du serveur seafile a été téléchargé dans le répertoire /home/mohammad/seafile-server.

Étape 4 - Installer Seafile Server avec MySQL

Dans cette étape, nous allons installer le serveur seafile à l'aide du script de configuration MySQL fourni par Seafile.

Connectez-vous en tant qu'utilisateur mohammad et accédez au répertoire seafile-server.

su - mohammad
cd seafile-server/

Exécutez maintenant le script setup-seafile-mysql.sh.

./setup-seafile-mysql.sh

Le script d'installation effectuera la vérification du module python. Assurez-vous que toutes les dépendances sont installées, puis appuyez sur Entrée.

Vous serez maintenant dans la configuration de Seafile.

  • nom du serveur : saisissez le nom de votre serveur Seafile, tel que hakase-cloud.
  • nom de domaine du serveur : saisissez le nom de domaine de votre serveur Seafile cloud.hakase-labs.io.
  • répertoire de données seafile : laissez la configuration par défaut et appuyez sur entrée.
  • port du serveur de fichiers seafile : laissez-le sur le port par défaut 8082.

Passons maintenant à la configuration de la base de données. Il vous sera demandé 2 options : laisser le script créer la base de données pour vous, ou utiliser une base de données existante.

Choisissez l'option 2 pour utiliser les paramètres de base de données existants.

  • Hôte de la base de données : localhost par défaut
  • port de la base de données : par défaut sur le port mysql normal 3306
  • l'utilisateur de la base de données est seafile avec mot de passe [email 
  • base de données ccnet : ccnet-db
  • base de données seafile : seafile-db
  • base de données seahub : seahub-db

Maintenant, appuyez à nouveau sur Entrée pour confirmer la configuration de notre serveur Seafile.

Et lorsque l'installation est terminée, vous obtiendrez le résultat comme indiqué ci-dessous.

L'installation et la configuration du serveur seafile se sont terminées avec succès. Et le serveur de fichiers seafile fonctionnera sous le port 8082, le service seahub fonctionnera sous le port 8000.

Ensuite, nous testerons l'exécution du serveur seafile et du serveur seahub à l'aide du script de démarrage.

En tant qu'utilisateur mohammad, allez dans le répertoire ~/seafile-server-latest.

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

Démarrez maintenant le serveur seafile en exécutant la commande ci-dessous.

./seafile.sh start

Lancez ensuite le serveur seahub.

./seahub.sh start

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

Saisissez votre adresse e-mail et votre mot de passe administrateur, puis appuyez sur Entrée.

Et l'utilisateur admin et le mot de passe ont été créés - vérifiez maintenant les ports de service seafile et seahub 8082 et 8080 à l'aide de la commande netstat.

netstat -plntu

Et vous verrez que le serveur seafile et le serveur seahub sont opérationnels sur le système Ubuntu 18.04.

Maintenant, arrêtez le serveur seafile et seahub.

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

Étape 5 - Installer et configurer Nginx avec Letsencrypt

Pour ce guide, le serveur seafile fonctionnera sous le serveur Web Nginx avec HTTPS activé. Et 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.

Installez le serveur Web Nginx à l'aide de la commande apt ci-dessous.

sudo apt install nginx -y

Une fois l'installation terminée, démarrez le service Nginx et activez-le pour qu'il se lance à chaque démarrage du système.

systemctl start nginx
systemctl enable nginx

Installez 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, allez dans le répertoire /etc/nginx et créez un nouveau fichier de configuration certbot.conf pour letsencrypt.

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

Collez-y la configuration suivante.

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

Sauvegarder et quitter.

Modifiez le fichier d'hôte virtuel par défaut.

vim sites-available/default

Ajoutez la ligne d'inclusion suivante ci-dessous au crochet du serveur {...}.

include snippets/certbot.conf;

Sauvegarder et quitter.

Testez la configuration nginx et redémarrez le serveur Web.

nginx -t
systemctl restart nginx

Et étaient prêts à générer un nouveau certificat SSL Letsencrypt pour le nom de domaine du serveur Seafile.

Générez les fichiers de 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  -w /var/www/html -d cloud.hakase-labs.io

Note:

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

Vous obtiendrez maintenant tous les fichiers de certificat SSL situés dans le répertoire /etc/letsencrypt/live.

Et pour plus de sécurité, 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 en tant que proxy inverse pour le serveur Seafile

Accédez au répertoire de configuration /etc/nginx et créez un nouveau fichier seafile d'hôte virtuel à l'aide de vim.

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

Collez-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;
        }
    }

Sauvegarder et quitter.

Activez l'hôte virtuel seafile et testez la configuration.

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

assurez-vous qu'il n'y a pas d'erreur et redémarrez le service nginx.

systemctl restart nginx

La configuration de Nginx en tant que proxy inverse pour le serveur Seafile est terminée.

É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 seafile par défaut pour le service ccnet, le serveur seafile et le serveur seahub.

Connectez-vous en tant qu'utilisateur mohammad et accédez au répertoire conf/.

su - mohammad
cd conf/

Modifiez le fichier de configuration du service ccnet ccnet.conf.

vim ccnet.conf

Sur la ligne SERVICE_URL, remplacez la valeur par le nom de domaine avec HTTPS comme ci-dessous.

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

Sauvegarder et quitter.

Modifiez maintenant le fichier seafile.conf pour la configuration du serveur seafile.

vim seafile.conf

Ajoutez la ligne host avec la valeur à 127.0.0.1 localhost comme ci-dessous.

[fileserver]
host = 127.0.0.1
port = 8082

Sauvegarder et quitter.

Et enfin, nous allons éditer le fichier seahub_settings.py.

vim seahub_settings.py

Sur la ligne FILE_SERVER_ROOT, remplacez la valeur par le nom de domaine avec HTTPS.

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

Sauvegarder et quitter.

Étape 8 - Exécution de Seafile Server en tant que service

Dans ce didacticiel, nous exécuterons 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.

Accédez au répertoire /etc/systemd/system et créez un nouveau fichier de service seafile.service.

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

Collez-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

Sauvegarder et quitter.

Créez maintenant le fichier de service seahub seahub.service.

vim seahub.service

Collez-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

Sauvegarder et quitter.

Note:

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

Maintenant, rechargez le système systemd.

systemctl daemon-reload

Et démarrez le service seafile et seahub.

systemctl start seafile
systemctl start seahub

Activez ces services pour qu'ils se lancent à chaque démarrage du système.

systemctl enable seafile
systemctl enable seahub

Les services seafile et seahub sont opérationnels - vérifiez-les à l'aide des commandes ci-dessous.

systemctl status seafile
systemctl status seahub

netstat -plntu

Étape 8 - Configurer le pare-feu UFW

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

Ajoutez le port ssh et activez le pare-feu UFW.

ufw allow ssh
ufw enable

tapez y pour activer le pare-feu.

Ajoutez maintenant les services HTTP et HTTPS.

ufw allow http
ufw allow https

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

ufw status numbered

Et vous obtiendrez trois services SSH, HTTP et HTTPS sur la liste.

Étape 9 - Test

Ouvrez votre navigateur Web et tapez l'installation de l'URL du serveur seafile. Le mien est:

Et vous serez redirigé vers la page de connexion sécurisée HTTPS.

Saisissez l'adresse e-mail de l'administrateur [email  et le mot de passe mypassword, puis cliquez sur le bouton Se connecter.

Vous obtiendrez maintenant le tableau de bord Seafile comme ci-dessous.

Supplémentaire - a téléchargé une image et vue sur le tableau de bord 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

  • https://manual.seafile.com/

Articles connexes: