📋 Contexte du projet

La solution Seafile précédemment utilisée par l'entreprise était devenue obsolète et ne pouvait plus être mise à jour, ce qui posait des problèmes de sécurité, de maintenance et de pérennité du service.

Il a donc été décidé de mettre en place une nouvelle instance Seafile 13, déployée via Docker, afin de disposer d'une solution à jour, maintenable et évolutive.

🎓 Compétences mobilisées

Docker & Conteneurisation Docker Compose Linux Administration Caddy Reverse Proxy SSL/TLS (Let's Encrypt) Gestion des volumes Sauvegardes automatisées Cloud Storage

🛠️ Technologies utilisées

🐳

Docker

Conteneurisation de l'application

📦

Docker Compose

Orchestration multi-conteneurs

☁️

Seafile 13

Plateforme de stockage cloud

🔒

Caddy

Reverse proxy avec SSL automatique

🎯 Objectifs du projet

⚙️ Étapes de réalisation

1

Installation de Docker

Installation de Docker en utilisant le dépôt APT officiel pour garantir une version à jour.

1.1 - Préparation du dépôt Docker dans APT

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

1.2 - Installation des paquets Docker

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérification de l'installation :

sudo docker run hello-world
Résultat de la commande docker hello-world

Résultat attendu de la commande hello-world

2

Installation de Seafile 13

Téléchargement des fichiers de configuration officiels pour Seafile 13.

sudo su
mkdir /opt/seafile 
cd /opt/seafile
wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env 
wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml 
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml
Fichiers téléchargés pour Seafile

Fichiers de configuration téléchargés

Note : Seuls trois fichiers sont visibles car le fichier .env est un fichier caché contenant les informations sensibles (variables d'environnement).

3

Configuration du fichier .env

Modification du fichier .env avec les paramètres de l'environnement.

nano .env

Les valeurs à modifier obligatoirement :

SEAFILE_SERVER_HOSTNAME=
SEAFILE_SERVER_PROTOCOL=
SEAFILE_MYSQL_DB_PASSWORD=
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=
INIT_SEAFILE_ADMIN_EMAIL=
INIT_SEAFILE_ADMIN_PASSWORD=
CACHE_PROVIDER= # redis ou memcached au choix
4

Génération de la clé JWT

La clé JWT est nécessaire pour sécuriser les communications. On utilise OpenSSL pour la générer.

Installation d'OpenSSL si nécessaire :

apt install openssl

Génération de la clé (minimum 32 caractères requis par Seafile) :

openssl rand -base64 32
Génération de la clé JWT

Exemple de clé générée par OpenSSL

Copier la clé générée et l'ajouter dans le fichier .env à la ligne JWT_PRIVATE_KEY=

5

Démarrage des conteneurs

Après avoir effectué les modifications nécessaires dans le fichier .env, lancement de la stack Docker.

docker compose up -d
Téléchargement des images Docker

Téléchargement des images Docker (pulling)

Conteneurs démarrés

Installation terminée - conteneurs démarrés

Attendre la fin du téléchargement des images (pulling). Une fois l'installation terminée, l'application est accessible via l'adresse IP ou le nom d'hôte configuré.

6

Accès à l'interface

Une fois les conteneurs démarrés, Seafile est accessible via l'adresse configurée dans SEAFILE_SERVER_HOSTNAME. Se connecter avec les identifiants admin définis dans le fichier .env.

Interface Seafile

Interface de connexion Seafile

← Projet précédent Projet suivant →