Seafile est une plate-forme de partage de fichiers gratuite et open-source basée sur le cloud qui peut être utilisée pour stocker des fichiers et synchroniser les données sur plusieurs appareils. Seafile est un système de stockage auto-hébergé et performant qui vous permet d'héberger sur vos propres serveurs privés. Seafile est gratuit et très similaire à d'autres fournisseurs de stockage, notamment OwnCloud, NextCloud, Google Drive et DropBox.
Avec Seafile, vous pouvez accéder et synchroniser vos fichiers, contacts et données sur PC et appareils mobiles.
Seafile est livré avec un riche ensemble de fonctionnalités, notamment la prise en charge du chiffrement client, la prise en charge du contrôle de version, l'authentification LDAP, l'authentification à deux facteurs, l'intégration antivirus, l'intégration d'applications Web Office, le partage de liens publics, la synchronisation de fichiers fiable, la prise en charge de Drive Client et bien d'autres. .
Dans ce tutoriel, nous expliquerons comment installer et configurer un serveur Seafile avec Nginx en tant que reverse proxy sur Ubuntu 18.04.
Prérequis
- Un nouveau VPS Ubuntu 18.04 sur la plate-forme cloud Atlantic.Net.
- Un nom de domaine valide pointant vers votre adresse IP VPS. Dans ce didacticiel, nous utiliserons seafile.example.com.
Remarque :Vous pouvez vous référer au Atlantic DNS Guide pour gérer les enregistrements DNS.
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 18.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois connecté à votre serveur Ubuntu 18.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Installer les dépendances requises
Tout d'abord, vous devrez installer toutes les dépendances nécessaires à l'installation du serveur Seafile. Vous pouvez tous les installer en exécutant la commande suivante :
apt-get install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests unzip wget -y
Une fois toutes les dépendances installées, vous pouvez passer à l'étape suivante.
Étape 3 – Installer Nginx et MariaDB
Ensuite, vous devrez installer le serveur Web Nginx et le serveur de base de données MariaDB sur votre serveur. Vous pouvez les installer en exécutant la commande suivante :
apt-get install nginx mariadb-server mariadb-client -y
Une fois l'installation terminée, démarrez le service Nginx et MariaDB et autorisez-le à démarrer après le redémarrage du système :
systemctl start nginx systemctl start mariadb systemctl enable nginx systemctl enable mariadb
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Étape 4 - Créer une base de données pour Seafile
Seafile se compose de trois composants principaux :Seahub, le serveur Seafile et le serveur Ccnet. Chaque composant nécessite une base de données distincte pour stocker ses données. Vous devrez créer une base de données distincte pour chacun de ces composants.
Pour ce faire, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité, puis créez les bases de données requises avec les commandes suivantes :
CREATE DATABASE seafiledb character set = 'utf8'; CREATE DATABASE ccnetdb character set = 'utf8'; CREATE DATABASE seahubdb character set = 'utf8';
Ensuite, créez l'utilisateur de la base de données avec la commande suivante :
CREATE USER 'seafileuser'@'localhost' IDENTIFIED BY 'password';
Ensuite, accordez tous les privilèges à l'utilisateur de la base de données Seafile avec la commande suivante :
GRANT ALL ON seafiledb.* TO 'seafileuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; GRANT ALL ON ccnetdb.* TO 'seafileuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; GRANT ALL ON seahubdb.* TO 'seafileuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Ensuite, videz les privilèges et quittez le shell MariaDB avec la commande suivante :
FLUSH PRIVILEGES; EXIT;
À ce stade, vous avez créé toutes les bases de données nécessaires pour stocker les données Seafile.
Étape 5 - Installer le serveur Seafile
Ensuite, téléchargez la dernière version de Seafile depuis leur site officiel avec la commande wget :
wget https://download.seadrive.org/seafile-server_7.0.5_x86-64.tar.gz
Une fois téléchargé, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf seafile-server_7.0.5_x86-64.tar.gz
Ensuite, copiez le répertoire extrait dans le répertoire racine Web de Nginx :
cp -r seafile-server-7.0.5 /var/www/html/seafile
Ensuite, lancez le script d'installation de Seafile avec la commande suivante :
cd /var/www/html/seafile ./setup-seafile-mysql.sh
Au cours de l'installation, vous serez invité à répondre à plusieurs questions comme indiqué ci-dessous :
Checking python on this machine ... Checking python module: python-mysqldb ... Done. ----------------------------------------------------------------- This script will guide you to setup your seafile server using MySQL. Make sure you have read seafile server manual at https://github.com/haiwen/seafile/wiki Press ENTER to continue ----------------------------------------------------------------- What is the name of the server? It will be displayed on the client. 3 - 15 letters or digits [ server name ] seafile What is the ip or domain of the server? For example: www.mycompany.com, 192.168.1.101 [ This server's ip or domain ] seafile.example.com Where do you want to put your seafile data? Please use a volume with enough free space [ default "/var/www/html/seafile-data" ] Which port do you want to use for the seafile fileserver? [ default "8082" ] ------------------------------------------------------- Please choose a way to initialize seafile databases: ------------------------------------------------------- [1] Create new ccnet/seafile/seahub databases [2] Use existing ccnet/seafile/seahub databases [ 1 or 2 ] 2 What is the host of mysql server? [ default "localhost" ] What is the port of mysql server? [ default "3306" ] Which mysql user to use for seafile? [ mysql user for seafile ] seafileuser What is the password for mysql user "seafileuser"? [ password for seafileuser ] verifying password of user seafileuser ... done Enter the existing database name for ccnet: [ ccnet database ] ccnetdb verifying user "seafileuser" access to database ccnetdb ... done Enter the existing database name for seafile: [ seafile database ] seafiledb verifying user "seafileuser" access to database seafiledb ... done Enter the existing database name for seahub: [ seahub database ] seahubdb verifying user "seafileuser" access to database seahubdb ... done --------------------------------- This is your configuration --------------------------------- server name: seafile server ip/domain: seafile.example.com seafile data dir: /var/www/html/seafile-data fileserver port: 8082 database: use existing ccnet database: ccnetdb seafile database: seafiledb seahub database: seahubdb database user: seafileuser --------------------------------- Press ENTER to continue, or Ctrl-C to abort ---------------------------------
Une fois l'installation terminée avec succès, vous devriez obtenir le résultat suivant :
----------------------------------------------------------------- Your seafile server configuration has been finished successfully. ----------------------------------------------------------------- run seafile server: ./seafile.sh { start | stop | restart } run seahub server: ./seahub.sh { start <port> | stop | restart <port> } ----------------------------------------------------------------- If you are behind a firewall, remember to allow input/output of these tcp ports: ----------------------------------------------------------------- port of seafile fileserver: 8082 port of seahub: 8000 When problems occur, Refer to https://github.com/haiwen/seafile/wiki for information.
Ensuite, donnez les permissions à Seafile avec la commande suivante :
chown -R www-data:www-data /var/www/html/
Ensuite, vous devrez ajouter un paramètre FILE_SERVER_ROOT dans le fichier seahub_settings.py :
nano /var/www/html/conf/seahub_settings.py
Ajoutez les paramètres FILE_SERVER_ROOT comme indiqué ci-dessous :
SECRET_KEY = "x)0=j*l6b+4amq2n^&)c=q5p==exn13%s&6x!*48u4p0p97k)4" FILE_SERVER_ROOT = 'http://seafile.example.com/seafhttp' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', : 'NAME': 'seahubdb', 'USER': 'seafileuser', 'PASSWORD': 'password', 'HOST': '127.0.0.1', 'PORT': '3306' } }
Enregistrez et fermez le fichier lorsque vous avez terminé.
Étape 6 - Créer un utilisateur administrateur pour Seafile
Ensuite, vous devrez créer un utilisateur administrateur et définir un mot de passe pour Seafile. Pour ce faire, changez le répertoire en seafile et démarrez le service seafile avec la commande suivante :
cd /var/www/html/seafile su -p -l www-data -s /bin/bash -c "./seafile.sh start"
Ensuite, démarrez le service seahub et créez un compte administrateur avec la commande suivante :
su -p -l www-data -s /bin/bash -c "./seahub.sh start"
Il vous sera demandé de fournir votre adresse e-mail et votre mot de passe administrateur comme indiqué ci-dessous :
LC_ALL is not set in ENV, set to en_US.UTF-8 Starting seahub at port 8000 ... ---------------------------------------- It's the first time you start the seafile server. Now let's create the admin account ---------------------------------------- What is the email for the admin account? [ admin email ] [email protected] What is the password for the admin account? [ admin password ] Enter the password again: [ admin password again ] ---------------------------------------- Successfully created seafile admin ---------------------------------------- Seahub is started Done.
Une fois que vous avez terminé, arrêtez les services seafile et seahub :
su -p -l www-data -s /bin/bash -c "./seafile.sh stop" su -p -l www-data -s /bin/bash -c "./seahub.sh stop"
Étape 7 - Créer un fichier Systemd pour Seafile et Seahub
Ensuite, vous devrez créer un fichier d'unité systemd pour que Seafile et Seahub gèrent le service.
Tout d'abord, créez un fichier de service seafile avec la commande suivante :
nano /etc/systemd/system/seafile.service
Ajoutez les lignes suivantes :
[Unit] Description=Seafile After= mysql.service After=network.target [Service] User=www-data Group=www-data Type=forking ExecStart=/var/www/html/seafile-server-latest/seafile.sh start ExecStop=/var/www/html/seafile-server-latest/seafile.sh stop [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier. Ensuite, créez un fichier de service systemd pour Seahub avec la commande suivante :
nano /etc/systemd/system/seahub.service
Ajoutez les lignes suivantes :
[Unit] Description=Seafile After= mysql.service After=network.target [Service] User=www-data Group=www-data Type=forking ExecStart=/var/www/html/seafile-server-latest/seahub.sh start ExecStop=/var/www/html/seafile-server-latest/seahub.sh stop [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier. Ensuite, rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, redémarrez les services Seafile et Seahub et autorisez-les à démarrer après le redémarrage du système avec la commande suivante :
systemctl start seafile systemctl enable seafile systemctl start seahub systemctl enable seahub
Pour vérifier le service Seafile, exécutez la commande suivante :
systemctl status seafile
Sortie :
● seafile.service - Seafile Loaded: loaded (/etc/systemd/system/seafile.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2019-11-28 08:48:31 UTC; 8s ago Process: 15487 ExecStart=/var/www/html/seafile-server-latest/seafile.sh start (code=exited, status=0/SUCCESS) Tasks: 16 (limit: 1150) CGroup: /system.slice/seafile.service ├─15522 /var/www/html/seafile/seafile/bin/seafile-controller -c /var/www/html/ccnet -d /var/www/html/seafile-data -F /var/www/html/c ├─15524 ccnet-server -F /var/www/html/conf -c /var/www/html/ccnet -f /var/www/html/logs/ccnet.log -d -P /var/www/html/pids/ccnet.pid └─15527 seaf-server -F /var/www/html/conf -c /var/www/html/ccnet -d /var/www/html/seafile-data -l /var/www/html/logs/seafile.log -P Nov 28 08:48:28 ubuntu1804 systemd[1]: Starting Seafile...
Pour vérifier le service Seahub, exécutez la commande suivante :
statut systemctl seahub
Sortie :
● seahub.service - Seafile Loaded: loaded (/etc/systemd/system/seahub.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2019-11-28 08:50:49 UTC; 18s ago Process: 15547 ExecStart=/var/www/html/seafile-server-latest/seahub.sh start (code=exited, status=0/SUCCESS) Main PID: 15573 (python2.7) Tasks: 6 (limit: 1150) CGroup: /system.slice/seahub.service ├─15573 python2.7 /var/www/html/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /var/www/html/conf/gunicorn.conf --prel ├─15579 python2.7 /var/www/html/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /var/www/html/conf/gunicorn.conf --prel ├─15580 python2.7 /var/www/html/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /var/www/html/conf/gunicorn.conf --prel ├─15581 python2.7 /var/www/html/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /var/www/html/conf/gunicorn.conf --prel ├─15582 python2.7 /var/www/html/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /var/www/html/conf/gunicorn.conf --prel └─15583 python2.7 /var/www/html/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /var/www/html/conf/gunicorn.conf --prel Nov 28 08:50:43 ubuntu1804 systemd[1]: Starting Seafile...
Étape 8 – Configurer le proxy inverse avec Nginx
Ensuite, vous devrez installer et configurer Nginx en tant que proxy inverse pour que Seafile transmette les demandes des clients des ports 8000 et 8082 au port Nginx 80.
Pour ce faire, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :
nano /etc/nginx/sites-available/seafile
Ajoutez les lignes suivantes :
server { listen 80; listen [::]:80; root /var/www/html/seafile; server_name seafile.example.com; client_max_body_size 100M; autoindex off; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; 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; } location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; 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 /var/www/html/seafile-server-latest/seahub; } }
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, activez l'hôte virtuel Nginx avec la commande suivante :
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
Enfin, redémarrez le service Nginx avec la commande suivante :
systemctl restart nginx
Étape 9 - Accéder à l'interface Web Seafile
Maintenant, ouvrez votre navigateur Web et accédez à l'URL http://seafile.example.com. Vous devriez voir la page de connexion Seafile :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur Connexion bouton. Vous devriez voir le tableau de bord par défaut de Seafile :
Conclusion
Dans le didacticiel ci-dessus, nous avons appris à installer le serveur Seafile avec Nginx en tant que proxy inverse sur Ubuntu 18.04 VPS. J'espère que vous avez maintenant suffisamment de connaissances pour héberger votre propre serveur de partage de fichiers en utilisant Seafile. Commencez dès aujourd'hui avec Seafile sur un VPS d'Atlantic.Net !