Recherche de site Web

Comment installer le serveur Seafile sur Ubuntu 22.04|20.04|18.04 |


Dans cet article de blog, je vais vous montrer comment installer le serveur Seafile sur Ubuntu 22.04|20.04|18.04. Seafile Server est une plate-forme d'hébergement de fichiers open source, d'entreprise et auto-hébergée, conçue pour des performances et une fiabilité élevées. Seafile vous permet de placer des fichiers sur votre propre serveur et de permettre à d'autres personnes et à vos différents appareils de les synchroniser et d'y accéder. Vous pouvez également accéder à tous les fichiers en tant que disque virtuel.

Caractéristiques de Seafile

  • Chiffrement de fichiers intégré : les fichiers sont chiffrés avant d'être synchronisés avec le serveur. Même l'administrateur système ne peut pas voir les fichiers.
  • Drive Client : utilisez le client Drive pour accéder aux fichiers dans le cloud sur le lecteur S local sans les synchroniser.
  • Synchronisation de fichiers fiable : dispose d'une synchronisation de fichiers fiable et efficace qui améliore votre productivité.
  • Facile à mettre à niveau : la mise à niveau peut être effectuée en exécutant un simple script en quelques secondes.
  • Prêt pour l'entreprise : Seafile prend en charge l'intégration AD/LDAP, la synchronisation des groupes et le contrôle précis des autorisations qui rendent l'outil facilement applicable à votre environnement d'entreprise.

Configuration requise pour le serveur Seafile

  • Serveur HTTP – Nginx ou Apache
  • Serveur de base de données – MySQL ou MariaDB
  • Outils Python

Nos étapes d'installation commenceront par l'installation des exigences logicielles ci-dessus avant de télécharger et de configurer un serveur Seafile. Suivez les étapes ci-dessous pour installer le serveur Seafile sur Ubuntu 22.04|20.04|18.04.

Étape 1 : Installer le serveur de base de données MariaDB

Commencez par l'installation du serveur de base de données MariaDB en suivant les étapes ci-dessous.

sudo apt update
sudo apt install mariadb-server

Serveur de base de données MariaDB sécurisé :

sudo mysql_secure_installation

Après l'installation du serveur de base de données MariaDB, créez un utilisateur et une base de données pour Seafile.

Connectez-vous d'abord au shell MySQL en tant qu'utilisateur root :

$ sudo mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.6.11-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Trois composants de Seafile Server nécessitent leurs propres bases de données :

  • serveur CCnet
  • serveur de fichiers marins
  • serveur SeaHub

Nous allons créer une base de données pour chacun de ces composants serveur.

CREATE DATABASE seafile_server;
CREATE DATABASE ccnet_server;
CREATE DATABASE seahub_server;

Créez un utilisateur de base de données et accordez des privilèges pour les bases de données créées.

CREATE USER 'seafile'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL ON seafile_server.* TO 'seafile'@'localhost';
GRANT ALL ON ccnet_server.* TO 'seafile'@'localhost';
GRANT ALL ON seahub_server.* TO 'seafile'@'localhost';
QUIT;

Confirmez l'accès en vous connectant à la base de données en tant qu'utilisateur seafile :

$ sudo mysql -u seafile -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.6.11-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| ccnet_server       |
| information_schema |
| seafile_server     |
| seahub_server      |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]> QUIT
Bye

Étape 2 : Installer les dépendances Python

Seafile dépend fortement de Python et de ses modules. Installez les dépendances Python requises sur Ubuntu en exécutant les commandes suivantes dans votre terminal.

sudo apt update
sudo apt install ffmpeg memcached libmemcached-dev python3 python3-{pip,pil,ldap,urllib3,setuptools,mysqldb,memcache,requests}
sudo pip3 install --upgrade pip
sudo pip3 install Pillow pylibmc captcha jinja2 sqlalchemy django-pylibmc django-simple-captcha python3-ldap mysqlclient

Étape 3 : Téléchargez et installez le serveur Seafile

Vérifiez la dernière version du serveur Seafile avant de la télécharger. Cet article pourrait être obsolète au moment de votre installation.

sudo apt -y install wget
export VER="9.0.10"
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_${VER}_x86-64.tar.gz

Une fois le fichier téléchargé, extrayez l'archive dans le répertoire /srv.

sudo tar -xvf  seafile-server_${VER}_x86-64.tar.gz -C /srv
sudo mv /srv/seafile-server-${VER} /srv/seafile

Aucune installation n'est nécessaire, exécutez simplement le script d'installation.

cd /srv/seafile/
sudo ./setup-seafile-mysql.sh

Le script vous guidera pour configurer votre serveur Seafile à l'aide de MySQL.

$ sudo ./setup-seafile-mysql.sh 
Checking python on this machine ...
  Checking python module: setuptools ... Done.
  Checking python module: python-imaging ... Done.
  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-Server

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] fileserver.example.com

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/srv/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" ] <Enter>

Which mysql user to use for seafile?
[ mysql user for seafile ] seafile

What is the password for mysql user "seafile"?
[ password for seafile ] StrongPassword

verifying password of user seafile ...  done

Enter the existing database name for ccnet:
[ ccnet database ] ccnet_server

verifying user "seafile" access to database ccnet_server ...  done

Enter the existing database name for seafile:
[ seafile database ] seafile_server

verifying user "seafile" access to database seafile_server ...  done

Enter the existing database name for seahub:
[ seahub database ] seahub_server

verifying user "seafile" access to database seahub_server ...  done

---------------------------------
This is your configuration
---------------------------------

    server name:            Seafile-Server
    server ip/domain:       fileserver.example.com

    seafile data dir:       /srv/seafile-data
    fileserver port:        8082

    database:               use existing
    ccnet database:         ccnet_server
    seafile database:       seafile_server
    seahub database:        seahub_server
    database user:          seafile

---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Generating ccnet configuration ...

done
Successly create configuration dir /srv/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

----------------------------------------
Now creating seahub database tables ...

----------------------------------------
creating seafile symbolic link ...  done

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

Le serveur Seafile fonctionnera sur le port 8082 et l'interface utilisateur Web Seafile sera disponible sur le port 8000.

Démarrer les services Seafile

Démarrez le démon du serveur Seafile qui gère le téléchargement, le téléchargement et la synchronisation des fichiers bruts :

$ cd /srv/seafile
$ sudo ./seafile.sh start 

[12/15/18 05:08:27] ../common/session.c(132): using config file /srv/conf/ccnet.conf
Starting seafile server, please wait ...
Seafile server started

Done.

Ensuite, démarrez le service d'interface Web Seahub (Django) :

$ sudo ./seahub.sh start 

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 

What is the password for the admin account?
[ admin password ] <ENTER ADMIN PASSWORD>

Enter the password again: <CONFIRM ADMIN PASSWORD>
[ admin password again ] 

----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started
Done.

Si vous rencontrez des problèmes avec les paramètres régionaux, définissez-les comme ci-dessous :

echo "export LC_ALL=en_US.UTF-8" >>~/.bashrc
echo "export LANG=en_US.UTF-8" >>~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >>~/.bashrc
source ~/.bashrc

Ajoutez les lignes au fichier ~/.bashrc pour avoir des paramètres LC persistants.

Étape 4 : Créer le service Seafile Systemd

Je préfère gérer Seafile avec systemd. Créez un fichier d'unité systemd pour le serveur backend Seafile.

sudo tee  /etc/systemd/system/seafile.service<<EOF
[Unit]
Description=Seafile
After= mysql.service
After=network.target

[Service]
Type=forking
ExecStart=/srv/seafile/seafile.sh start
ExecStop=/srv/seafile/seafile.sh stop

[Install]
WantedBy=multi-user.target
EOF

Créez-en également un pour Seahub

sudo tee  /etc/systemd/system/seahub.service<<EOF
[Unit]
Description=Seafile
After= mysql.service
After=network.target

[Service]
Type=forking
ExecStart=/srv/seafile/seahub.sh start
ExecStop=/srv/seafile/seahub.sh stop

[Install]
WantedBy=multi-user.target
EOF

Démarrez et activez le démarrage des services au démarrage :

sudo systemctl daemon-reload
sudo systemctl start seafile && sudo systemctl enable seafile
sudo systemctl start seahub && sudo systemctl enable seahub

Confirmer l'état des services :

$ systemctl status  seafile
● seafile.service - Seafile
   Loaded: loaded (/etc/systemd/system/seafile.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-12-15 06:01:19 PST; 14s ago
  Process: 26437 ExecStart=/srv/seafile/seafile.sh start (code=exited, status=0/SUCCESS)
    Tasks: 14 (limit: 2319)
   CGroup: /system.slice/seafile.service
           ├─26476 /srv/seafile/seafile/bin/seafile-controller -c /srv/ccnet -d /srv/seafile-data -F /srv/conf
           ├─26478 ccnet-server -F /srv/conf -c /srv/ccnet -f /srv/logs/ccnet.log -d -P /srv/pids/ccnet.pid
           └─26482 seaf-server -F /srv/conf -c /srv/ccnet -d /srv/seafile-data -l /srv/logs/seafile.log -P /srv/pids/seaf-server.pid

Dec 15 06:01:16 ubuntu-01 systemd[1]: Starting Seafile...
Dec 15 06:01:16 ubuntu-01 seafile.sh[26437]: [12/15/18 06:01:16] ../common/session.c(132): using config file /srv/conf/ccnet.conf
Dec 15 06:01:16 ubuntu-01 seafile.sh[26437]: Starting seafile server, please wait ...
Dec 15 06:01:19 ubuntu-01 seafile.sh[26437]: Seafile server started
Dec 15 06:01:19 ubuntu-01 seafile.sh[26437]: Done.
Dec 15 06:01:19 ubuntu-01 systemd[1]: Started Seafile.

$ systemctl status  seahub
● seahub.service - Seafile
   Loaded: loaded (/etc/systemd/system/seahub.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-12-15 06:02:43 PST; 4s ago
  Process: 26572 ExecStart=/srv/seafile/seahub.sh start (code=exited, status=0/SUCCESS)
 Main PID: 26600 (python2.7)
    Tasks: 6 (limit: 2319)
   CGroup: /system.slice/seahub.service
           ├─26600 python2.7 /srv/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /srv/conf/gunicorn.conf --preload
           ├─26607 python2.7 /srv/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /srv/conf/gunicorn.conf --preload
           ├─26608 python2.7 /srv/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /srv/conf/gunicorn.conf --preload
           ├─26609 python2.7 /srv/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /srv/conf/gunicorn.conf --preload
           ├─26610 python2.7 /srv/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /srv/conf/gunicorn.conf --preload
           └─26611 python2.7 /srv/seafile/seahub/thirdpart/gunicorn seahub.wsgi:application -c /srv/conf/gunicorn.conf --preload

Dec 15 06:02:38 ubuntu-01 systemd[1]: Starting Seafile...
Dec 15 06:02:38 ubuntu-01 seahub.sh[26572]: LC_ALL is not set in ENV, set to en_US.UTF-8
Dec 15 06:02:38 ubuntu-01 seahub.sh[26572]: Starting seahub at port 8000 ...
Dec 15 06:02:43 ubuntu-01 seahub.sh[26572]: Seahub is started
Dec 15 06:02:43 ubuntu-01 seahub.sh[26572]: Done.
Dec 15 06:02:43 ubuntu-01 systemd[1]: Started Seafile.

Étape 5 : Configurer le proxy inverse Nginx

Maintenant que les services sont exécutés, il est temps de configurer nginx comme proxy inverse pour le serveur Seafile.

sudo apt -y install nginx

Créez un nouveau fichier de configuration sous /etc/nginx/conf.d/seafile.conf avec le contenu suivant.

server {
    listen 80;
    listen [::]:80;
    server_name  fileserver.example.com;
    autoindex off;
    client_max_body_size 100M;
    access_log /var/log/nginx/seafile.com.access.log;
    error_log /var/log/nginx/seafile.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 /srv/seafile/seahub;
        }
}

Visitez le nom de domaine de votre serveur Seafile sur http://example.com

Entrez l'adresse e-mail et le mot de passe de l'utilisateur administrateur pour vous connecter. Vous devriez accéder au tableau de bord Seafile qui ressemble à ci-dessous.

Vous avez installé et configuré avec succès le serveur Seafile sur Ubuntu LTS.

Articles similaires :

  • Installer et configurer le serveur de partage de fichiers Pydio sur Ubuntu
  • Comment installer Nextcloud sur Ubuntu

Articles connexes: