feigned

Installer et configurer Seafile (serveur) sur Ubuntu/Debian

Crédits : Snapwire

Seafile est une solution de synchronisation et de partage de fichiers open source, fiable et performante à l’instar de son concurrent Nextcloud.

Si vous cherchez à créer votre service de stockage en ligne, Seafile est sans doute le meilleur choix !

Dans ce tutoriel, nous allons voir comment installer et configurer Seafile sur un serveur Ubuntu/Debian et ensuite comment synchroniser ses fichiers avec le serveur.

Préambule : Seafile

Voici la liste des fonctionnalités de Seafile :

  • Synchronisation des fichiers : organisez vos fichiers dans des bibliothèques. Une bibliothèque peut être synchronisée de manière sélective sur n’importe quel appareil.
  • Client Drive : accédez à vos fichiers dans le cloud sans les synchroniser. Vos fichiers peuvent également être utilisés hors ligne.
  • Chiffrement de fichiers intégré : une bibliothèque peut être chiffrée par un mot de passe que vous avez choisi. Les fichiers sont chiffrés avant la synchronisation avec le serveur.
  • Rapide et performant : le cœur du serveur Seafile est écrit avec le langage de programmation C.
  • Fonctionnalités avancées : intégration AD/LDAP, synchronisation de groupes, hiérarchie des services, contrôle précis des autorisations…

Avant de commencer, assurez-vous d’avoir un serveur dédié parfaitement configuré :

Commander, installer et configurer un serveur dédié

Installer et configurer Seafile (côté serveur)

Étape 1 : installer Docker

Nous allons installer Seafile à l’intérieur d’un conteneur isolé du reste du système à l’aide du logiciel Docker.

C’est simple, rapide et puissant !

Info : les lignes qui suivent supposent que vous installez Seafile sur un serveur Debian. Si vous avez un serveur Ubuntu, remplacez simplement debian par ubuntu quand cela se présentera.

C’est parti :

  1. Connectez-vous à votre serveur via SSH :
    ssh <username>@<hostname>

    Remplacez username par le nom du compte utilisateur et hostname par l’adresse IP ou le nom d’hôte du serveur.

  2. Mettez à jour la liste des paquets :
    sudo apt update
  3. Installez les paquets nécessaires à apt pour utiliser un dépôt avec le protocole HTTPS :
    sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
  4. Ajoutez la clé GPG de Docker :
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  5. Ajoutez le dépôt stable de Docker :
    echo \
      "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  6. Mettez à jour la liste des paquets :
    sudo apt update
  7. Installez la dernière version de Docker CE (Community Edition) et de containerd :
    sudo apt install docker-ce docker-ce-cli containerd.io
  8. Vérifiez que Docker CE est correctement installé en exécutant l’image hello-word :
    sudo docker run hello-world
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    Cette commande télécharge une image de test et l’exécute dans un conteneur. Quand le conteneur s’exécute, il affiche un message d’information puis se ferme.

Étape 1 terminée : Docker est installé sur notre serveur, nous pouvons maintenant installer Seafile !

Étape 2 : installer Seafile

  1. Installez docker-compose :
    sudo apt install docker-compose -y
  2. Téléchargez le fichier docker-compose.yml :
    wget "https://download.seafile.com/d/320e8adf90fa43ad8fee/files/?p=/docker/docker-compose.yml&dl=1" -O ~/docker-compose.yml
  3. Éditez le fichier docker-compose.yml et modifiez les champs suivants :
    nano ~/docker-compose.yml
    • MYSQL_ROOT_PASSWORD=xxx et DB_ROOT_PASSWD=xxx
      > remplacez xxx par le mot de passe root du service MySQL (mettez le mot de passe que vous voulez)
    • TIME_ZONE=Europe/Paris
    • SEAFILE_ADMIN_EMAIL=[email protected] et SEAFILE_ADMIN_PASSWORD=mdp
      > remplacez [email protected] par l’adresse e-mail et mdp par le mot de passe du compte admin de Seafile (mettez le mot de passe que vous voulez)
    • SEAFILE_SERVER_LETSENCRYPT=true
      > pour obtenir un certificat SSL auprès de Let’s Encrypt
    • Décommentez la ligne contenant « 443:443 » (supprimez le # en début de ligne)
      > pour activer le protocole HTTPS
    • SEAFILE_SERVER_HOSTNAME=<hostname>
      > l’adresse IP ou le nom de domaine de votre serveur

    Sauvegardez avec Ctrl + O > Entrée, puis quittez avec Ctrl + X.

  4. Démarrez le serveur Seafile :
    sudo docker-compose up -d
  5. Patientez environ 5 à 10 minutes, le temps que l’ensemble du système s’installe dans le conteneur. Vous pouvez d’ailleurs suivre l’installation avec la commande suivante :
    sudo docker logs -f seafile

    Tout est OK lorsque le message suivant s’affiche :

    Seahub is started
    
    Done.
  6. Vous pouvez maintenant vous connecter à l’interface web de l’instance Seafile de votre serveur via https://x.x.x.x ou https://mondomaine.fr :

    Magnifique, n’est-ce pas ? 😎

  7. Pour plus d’informations sur la gestion de Seafile avec Docker, cliquez ici.
Étape 2 terminée : Seafile est correctement installé sur notre serveur !

Synchroniser ses fichiers avec Seafile

Une fois Seafile installé côté serveur, il faut l’installer côté client sur notre ordinateur ou notre smartphone afin de pouvoir synchroniser automatiquement nos fichiers entre nos différents appareils.

Pour en savoir plus, consultez cet article :

Installer et configurer Seafile (client) sur PC et smartphone

15 commentaires

Connecté en tant que (connexion / s'inscrire)

Formulaire protégé par reCAPTCHA. Les Règles de confidentialité et les Conditions d'utilisation de Google s'appliquent.

Page 1 sur 1

  • paolini

    bonjour
    je n’ai pas pu installer la dernière version de Docker CE (Community Edition) et de containerd
    je suis sur ubuntu 22.04

  • francois delvera

    Bonjour
    j’ai installé il y a 1 an et demi un Seafile sur Kimsufi en suivant à la lettre lu tuto du Crabe. Ca marchait parfaitement. Super.
    Mais hier, j’ai fait un update et upgrade de Debian et soudain Seafile n’est plus là. Il y a encore toute la structure des fichiers data et la base mysql mais touy le serveur seafile a disparu. J’avoue ne pas comprendre quand je tente de démarrer
    ~# ./seahub.sh start
    -bash: ./seahub.sh: No such file or directory
    Puis en cherchant bien dans /opt:
    ~# tree /opt -L 1
    /opt
    ├── beamium
    ├── containerd
    ├── noderig
    ├── seafile-data -> /home/username/seafile-data
    └── seafile-mysql
    Il n’y a pas de seafile-server
    Le directory /home/username contient
    ├── docker-compose.yml
    └── seafile-data
    ├── logs
    │   └── var-log
    ├── nginx
    │   └── conf
    ├── seafile
    │   ├── ccnet
    │   ├── conf
    │   ├── logs
    │   ├── seafile-data
    │   └── seahub-data
    └── ssl
    Comment faire pour redémarrer le seafile tout en gardant toutes les données déjà présentes et bien sauvegardées?
    Merci

  • francoisa

    Juste un petit mot pour te remercier. Très bon tuto qui m’a permis de me lancer sur un projet que j’avais en tête depuis un moment. Merci!

  • Laurent

    Bonjour,
    Merci pour ce tuto, marche super depuis plusieurs mois.

    Du coup, petit souci de SSL plusieurs mois après, cela me dit que le certificat n’est plus valide. En effet, il n’est plus valide depuis hier 29 décembre.
    Comment fait-on pour le refaire valider ? Car on n’a pas vu ça dans le tuto, c’était automatique.

    Merci d’avance !
    Laurent

    • Capture
      7 Ko
    • Le Crabe

      Salut Laurent,

      Qu’est-ce que t’indique la commande suivante : sudo docker logs seafile ?

      • Laurent
        [supprimé pour confidentialité]
        • Laurent

          Mais apparemment ce sont des vieux log de quand j’ai créé le serveur… Il y a un moyen de redémarrer Seafile pour qu’il refasse signer les certificats ?
          Ou un moyen de savoir où sont les certificats que je les fasse signer par Certbot. Je sais faire sur un serveur Web Apache2 mais là, je suis perdu.

      • Laurent

        Bon et bien, j’ai le message suivant :

        nginx: [emerg] PEM_read_bio_X509_AUX(« /shared/ssl/cloudcentury21limmobilierejassans.fr.crt ») failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

      • Laurent

        J’ai refait des fichiers avec Certbot et écraser les fichiers. C’est bon, mais ça dure que 3 mois.

        Pouvez vous supprimer mes précédents messages où il y a des informations perso svp. MERCI

        • Le Crabe

          Essaie ceci :

          – Supprime ton ancien fichier nginx.conf :

          sudo rm /opt/seafile-data/nginx/conf/seafile.nginx.conf

          – Supprime les conteneurs, réseaux, volumes et images liés au docker-compose.yml de Seafile :

          sudo docker-compose down

          – Recrée le tout :

          sudo docker-compose up -d

          – Vérifie avec cette commande que tout se passe bien :

          sudo docker logs -f seafile
          • Le Crabe

            Je viens de voir qu’il n’y a aucun job enregistré dans le crontab de root pour le renouvellement du certificat Let’s Encrypt.

            On peut faire ceci pour corriger le problème :

            – On accède au conteneur de Seafile :

            sudo docker exec -it seafile /bin/bash

            – On édite le crontab de root :

            crontab -e

            – On ajoute la ligne suivante à la fin du fichier :

            0 0 * * * /scripts/renew_cert.sh 2>> /var/log/acme_tiny.log

            Tous les jours, cela va vérifier et renouveler si besoin le certificat Let’s Encrypt.

          • Laurent

            Je ne vais pas perdre tous mes fichiers, utilisateurs etc ? Ça me fait peur.

  • Sylva

    Merci beaucoup, je viens juste de trouver ce dont j’avais tellement besoin, courage à vous vraiment

  • Nicolas

    Bonjour,
    merci pour tous ces tutos, pour un amateur débrouillard qui découvre s’est parfait. Mais j’ai une question, si on voulait faire la même chose sur un VPS tournant avec une distribution Windows Serveur (2016 ou 2019) quelle serait la solution pour se créer ce même service de serveur de fichiers?
    Sachant que je suis plus intéressé par une connexion Desktop Drive Clients que par une solution Synchro. Pourquoi sous Windows ? car en plus d’un serveur cloud j’ai besoin d’installer une application qui ne fonctionne que sous Windows, que je ne veux pas l’installer sur un desktop car une autre personne doit y avoir accès à distance plus facilement que via Teamviewer par exemple. J’ai bien pensé à un VPS sous Ubuntu en installant une interface graphique type xfce4 et ensuite Wine pour faire tourner mon appli de gestion de stock mais je trouve que ça fait un peu bricolage et comme je ne suis pas un spécialiste, je n’ai pas envie de passer mon temps à résoudre des prob avec l’utilisateur externe. D’où l’orientation vers un Windows Serveur directement. Si vous avez des pistes de solution ou de réflexion, je suis preneur. D’avance merci.
    Nicolas

98 utilisateurs actifs