Recherche de site Web

Comment déployer le serveur Seafile avec Docker pour héberger votre propre solution de synchronisation et de partage de fichiers


Tout d’abord, qu’est-ce que Seafile ?

Seafile est un programme de synchronisation de fichiers auto-hébergé qui fonctionne avec le modèle serveur-client, car vous disposez de plusieurs appareils comme votre ordinateur portable et votre téléphone qui se connectent à un serveur central.

Contrairement à certaines alternatives plus populaires comme Nextcloud ou ownCloud, Seafile essaie de suivre la philosophie « faites une seule chose, mais faites-la bien ». De même, Seafile n'a pas de fonctionnalités supplémentaires intégrées telles que l'intégration de contacts ou de calendrier.

Seafile se concentre uniquement sur la synchronisation, le partage et les éléments qui l'entourent, et c'est tout. En conséquence, il finit par le faire extrêmement bien.

Déploiement du serveur Seafile avec Docker et NGINX

Tutoriel avancé

La plupart des tutoriels sur It’s FOSS sont destinés aux débutants. Celui-ci ne l’est pas. Il est destiné aux utilisateurs avancés qui bricolent beaucoup avec des projets de bricolage et préfèrent s'auto-héberger.
Ce tutoriel suppose que vous êtes à l'aise avec la ligne de commande et que vous connaissez au moins assez bien les programmes que nous allons présenter. en utilisant.

Bien que l'ensemble du processus puisse être effectué sans utiliser NGINX du tout, l'utilisation de NGINX permettra une configuration plus facile, ainsi que l'auto-hébergement de davantage de services à l'avenir.

Si vous souhaitez utiliser une configuration Docker complète, vous pouvez également configurer NGINX dans Docker, mais cela ne fera que rendre les choses plus complexes et n'ajoutera pas trop d'avantages, et ne sera pas non plus couvert dans ce tutoriel.

Installation et configuration de NGINX

J'utiliserai Ubuntu dans ce tutoriel et j'utiliserai donc apt pour installer des packages. Si vous utilisez Fedora ou une autre distribution non-Debian, veuillez utiliser le gestionnaire de paquets de votre distribution.

NGINX, en plus d'être un serveur Web, est ce qu'on appelle un proxy. Il fonctionnera comme une connexion entre le serveur Seafile et Internet, tout en facilitant la réalisation de plusieurs tâches.

Pour installer NGINX, utilisez la commande suivante :

sudo apt install nginx

Si vous souhaitez utiliser HTTPS (ce petit cadenas dans votre navigateur), vous devrez également installer Certbot :

sudo apt install certbot python3-certbot-nginx

Ensuite, vous devez configurer NGINX pour vous connecter à l'instance Seafile que nous avons configurée plus tard.

Tout d'abord, exécutez la commande suivante :

sudo nano /etc/nginx/sites-available/seafile.conf

Entrez le texte suivant dans le fichier :

server {
  server_name localhost;
  location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

Important : remplacez localhost sur la ligne server_name par l'adresse à partir de laquelle vous accéderez à votre serveur (c'est-à-dire seafile.example.com ou 192.168.0.0). Vous ne savez pas quoi mettre ?

  • Si vous testez juste pour le plaisir, utilisez localhost. Cette configuration vous permettra uniquement d'accéder au serveur depuis votre ordinateur, et c'est tout.

  • Si vous souhaitez utiliser Seafile via votre connexion WiFi locale (n'importe quel appareil sur le même réseau WiFi que vous), vous devez saisir l'adresse IP de votre ordinateur. Vous souhaiterez peut-être également envisager de définir une adresse IP statique, même si cela n’est pas nécessaire.

  • Si vous disposez d’une adresse IP publique qui pointe vers votre système, utilisez-la.

  • Si vous disposez d'un nom de domaine (c'est-à-dire example.com, example.org) et d'une adresse IP publique pour votre système, modifiez vos paramètres DNS. pour pointer le nom de domaine vers l'adresse IP de votre système. Cela nécessitera également que l’adresse IP publique pointe vers votre système.

Vous devez maintenant copier le fichier de configuration dans le répertoire que NGINX recherche pour les fichiers, puis redémarrer NGINX :

sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
sudo systemctl restart nginx

Si vous configurez Certbot, vous devrez également exécuter la commande suivante pour configurer HTTPS :

sudo certbot

Si vous êtes invité à rediriger le trafic HTTP vers HTTPS, choisissez 2.

Ce serait le bon moment pour nous assurer que tout ce que nous avons mis en place jusqu’à présent fonctionne. Si vous visitez votre site, vous devriez obtenir un écran qui dit quelque chose du genre 502 Bad Gateway.

Installer Docker et Docker Compose

Passons maintenant aux choses amusantes !

Tout d’abord, vous devez installer Docker et Docker Compose. Docker Compose est nécessaire pour utiliser un fichier docker-compose.yml, ce qui facilitera la gestion des différents conteneurs Docker dont Seafile a besoin.

Docker et Docker Compose peuvent être installés avec la commande suivante :

sudo apt install docker.io docker-compose

Pour vérifier si Docker est installé et en cours d'exécution, exécutez ce qui suit :

sudo docker run --rm hello-world

Vous devriez voir quelque chose du genre dans votre terminal si l'opération s'est terminée avec succès :

Si vous souhaitez éviter d'ajouter sudo au début de la commande docker, vous pouvez exécuter les commandes suivantes pour vous ajouter au groupe docker :

sudo groupadd docker
sudo usermod -aG docker $USER

Le reste de ce didacticiel suppose que vous avez exécuté les deux commandes ci-dessus. Si vous ne l'avez pas fait, ajoutez sudo à toutes les commandes commençant par docker ou docker-compose.

Installation du serveur Seafile

Cette partie est nettement plus simple que la partie précédente. Tout ce que vous avez à faire est de mettre du texte dans un fichier et d'exécuter quelques commandes.

Ouvrez un terminal. Créez ensuite un répertoire dans lequel vous souhaitez que le contenu du serveur Seafile soit stocké et entrez dans le répertoire :

mkdir ~/seafile-server && cd ~/seafile-server

Accédez au répertoire que vous avez créé et exécutez ce qui suit :

nano docker-compose.yml

Ensuite, saisissez le texte ci-dessous dans la fenêtre qui apparaît :

version: '2.0'
services:
  db:
    image: mariadb
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - ./data/mariadb:/var/lib/mysql
    networks:
      - seafile-net

  memcached:
    image: memcached
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc
    container_name: seafile
    ports:
      - "8080:80"
    volumes:
      - ./data/app:/shared
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=password
      - TIME_ZONE=Etc/UTC
      - [email 
      - SEAFILE_ADMIN_PASSWORD=password
      - SEAFILE_SERVER_LETSENCRYPT=false
      - SEAFILE_SERVER_HOSTNAME=docs.seafile.com
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

Avant de sauvegarder le fichier, quelques éléments devront être modifiés :

  • MYSQL_ROOT_PASSWORD : remplacez par un mot de passe plus fort, vous n'avez pas besoin de vous en souvenir, alors n'essayez pas de choisir quelque chose de facile. Si vous avez besoin d'aide pour en créer un, utilisez un générateur de mots de passe. Je recommanderais 20 caractères et en évitant les caractères spéciaux (tous les symboles !@#$%^&*).

  • DB_ROOT_PASSWD : remplacez la valeur que vous avez définie pour MYSQL_ROOT_PASSWORD.

  • SEAFILE_ADMIN_EMAIL : définit l'adresse e-mail du compte administrateur.

  • SEAFILE_ADMIN_PASSWORD : définit le mot de passe du compte administrateur. Évitez de faire la même chose que MYSQL_ROOT_PASSWORD ou DB_ROOT_PASSWD.

  • SEAFILE_SERVER_HOSTNAME : défini sur l'adresse que vous avez définie dans la configuration NGINX.

Cela fait, vous pouvez afficher le tout avec docker-compose :

docker-compose up -d

Cela peut prendre une minute ou deux en fonction de votre connexion Internet, car il doit extraire plusieurs conteneurs dont Seafile a besoin pour fonctionner.

Une fois que c’est fait, donnez-lui encore quelques minutes pour terminer. Vous pouvez également vérifier son état en exécutant la commande suivante :

docker logs seafile

Une fois terminé, vous verrez le résultat suivant :

Ensuite, saisissez simplement l'adresse que vous avez définie pour SEAFILE_SERVER_HOSTNAME dans votre navigateur et vous devriez être sur un écran de connexion.

Et voilà ! Tout est désormais entièrement fonctionnel et prêt à être utilisé avec les clients.

Installation des clients Seafile

Seafile sur mobile est disponible sur Google Play, F-Droid et sur l'App Store iOS. Seafile propose également des clients de bureau disponibles pour Linux, Windows et Mac, disponibles ici.

Seafile est facilement disponible sur les systèmes Ubuntu via le package seafile-gui :

sudo apt install seafile-gui

Seafile est également dans l'AUR pour les utilisateurs d'Arch via le package seafile-client.

Clôture

N'hésitez pas à explorer les clients et tout ce qu'ils ont à offrir. J'aborderai tout ce dont les clients Seafile sont capables dans un prochain article (restez à l'écoute 😃).

Si quelque chose ne fonctionne pas correctement, ou si vous avez simplement une question d’ordre général, n’hésitez pas à la laisser dans les commentaires ci-dessous – j’essaierai de répondre dès que je le pourrai !

Articles connexes: