Partager des fichiers volumineux au sein d’une PME, d’une école ou d’un bureau au Togo est souvent un casse-tête. WhatsApp compresse les images, les clés USB se perdent, et les solutions cloud comme Google Drive ou Dropbox deviennent vite coûteuses, surtout avec une connexion limitée. Copyparty est la réponse à ce problème : un serveur de fichiers auto-hébergé, léger, sans base de données, que vous pouvez déployer en quelques minutes sur un simple VPS ou même un vieux PC de bureau recyclé. Dans ce guide, vous apprendrez à installer et configurer Copyparty sur Ubuntu/Debian, à le sécuriser avec une authentification par utilisateurs, à l’exposer sur internet via Cloudflare Tunnel, et à l’optimiser pour les contraintes de bande passante de l’Afrique de l’Ouest. Que vous passiez par Docker (recommandé pour la production) ou directement en Python, chaque étape est détaillée avec les commandes prêtes à l’emploi.

Qu’est-ce que Copyparty ?

Copyparty est un serveur de fichiers HTTP écrit en Python, conçu pour être aussi simple à déployer qu’un fichier unique tout en offrant des fonctionnalités dignes d’un NAS professionnel. Contrairement à Nextcloud ou Seafile qui nécessitent une base de données, un serveur web configuré et des dizaines de dépendances, Copyparty fonctionne avec un seul script Python ou une image Docker.

Fonctionnalités principales

  • Upload et téléchargement par navigateur web, avec reprise automatique (resumable upload) pour les connexions instables
  • Interface web moderne avec galerie photo, lecteur audio/vidéo intégré
  • Authentification multi-utilisateurs avec permissions par dossier (lecture, écriture, liste)
  • Support WebDAV pour monter le serveur comme un disque réseau sur Windows/Linux/macOS
  • Recherche full-text dans les fichiers texte et documents
  • Compression à la volée et déduplication des fichiers
  • Aucune base de données la configuration se fait par fichier texte ou arguments en ligne de commande
  • Compatible avec Cloudflare Tunnel et tout reverse proxy standard

Bonne Pratique : Copyparty est idéal pour remplacer un serveur FTP ou un partage Samba dans une PME, avec l’avantage d’un accès web depuis n’importe quel appareil sans installation côté client.

Prérequis

Matériel Nécessaire

ComposantSpécifications minimalesPrix estimé (FCFA)
Serveur/VPS1 vCPU, 512 Mo RAM, 10 Go SSD5 000 – 15 000 FCFA/mois
VPS recommandé (Hetzner CX11)2 vCPU, 2 Go RAM, 20 Go SSD6 000 FCFA/mois
PC recyclé (option locale)Core i3, 4 Go RAM, disque HDDMatériel existant
Onduleur650VA minimum45 000 – 65 000 FCFA
Disque externe de stockage1 To USB 3.050 000 – 60 000 FCFA

🔌 Spécificité Locale : Si vous hébergez Copyparty sur un serveur physique à Lomé, un onduleur est absolument indispensable. Les coupures CEET peuvent corrompre des fichiers en cours d’upload. Un onduleur 650VA de marque APC ou Eaton coûte entre 45 000 et 65 000 FCFA dans les boutiques électroniques du Grand Marché.

Logiciels Requis

  • OS : Ubuntu 22.04 LTS ou Ubuntu 24.04 LTS (recommandé), Debian 11/12
  • Docker Engine : 24.x ou supérieur (pour la méthode Docker)
  • Python : 3.8 ou supérieur (pour la méthode directe)
  • Cloudflared : dernière version (pour l’exposition internet)
  • Accès SSH à votre serveur

Compétences Techniques

  • Manipulation basique de la ligne de commande Linux (SSH, navigation dans les répertoires)
  • Notions de Docker (images, conteneurs, volumes) consultez notre guide Docker pour débutants si nécessaire
  • Connaissance de base de Cloudflare

Accès et Permissions

  • Accès root ou utilisateur sudo sur le serveur
  • Un compte Cloudflare gratuit (pour le tunnel)
  • Un nom de domaine (optionnel mais recommandé) un sous-domaine comme files.votre-domaine.tg suffit

Méthode 1 : Déploiyer copyparty sous Docker (recommandé)

La méthode Docker est recommandée pour la production car elle isole Copyparty de votre système, facilite les mises à jour et s’intègre parfaitement avec votre infrastructure Dockge ou Portainer.

Étape 1.1 : Préparer l’environnement

Connectez-vous à votre serveur en SSH et créez la structure de répertoires :

# Créer les répertoires nécessaires
mkdir -p /opt/copyparty/{config,data}
cd /opt/copyparty

# Créer le sous-répertoire pour les fichiers partagés
mkdir -p data/partage-commun
mkdir -p data/uploads-clients
mkdir -p data/archives
Bash

Étape 1.2 : Créer le fichier de configuration

Copyparty utilise un fichier de configuration .conf pour définir les utilisateurs et les volumes. Créez le fichier de configuration principal :

nano /opt/copyparty/config/copyparty.conf
Bash

Copiez-y le contenu suivant (nous expliquerons chaque section plus bas) :

[global]
port = 3923
gzip = yes
maxsize = 0
no-thumb = no

[accounts]
admin = MotDePasseAdmin2024!
employe1 = PassEmploye1Secure
employe2 = PassEmploye2Secure
client-externe = PassClientReadOnly

[/]
# Chemin DANS le conteneur (correspondant au volume ./data:/data)
/data
admin: rwmd
employe1: rwmd
employe2: r

[/uploads-clients]
/data/uploads-clients
admin: rwmd
employe1: rw
client-externe: w
INI

⚠️ Attention : Remplacez immédiatement les mots de passe ci-dessus par des mots de passe forts et uniques. N’utilisez jamais les valeurs d’exemple en production.

Étape 1.3 : Créer le fichier Docker Compose

nano /opt/copyparty/docker-compose.yml
Bash
version: "3.8"

services:
  copyparty:
    image: copyparty/ac:latest
    container_name: copyparty
    restart: unless-stopped
    
    ports:
      - "3923:3923"       # Interface web
      - "3924:3924"       # WebDAV (optionnel)
    
    volumes:
      # Fichiers de données
      - ./data:/data
      # Fichier de configuration
      #- ./config/copyparty.conf:/cfg/copyparty.conf:ro
      - ./copyparty.conf:/cfg/copyparty.conf:ro
          
    environment:
      - TZ=Africa/Lome
    
    # Limites de ressources (adapter selon votre VPS)
    deploy:
      resources:
        limits:
          memory: 512M
        reservations:
          memory: 128M

    # Arguments de démarrage Copyparty
    command: >
      --cfg /cfg/copyparty.conf
      --log-utf8
Bash

Étape 1.4 : Démarrer le conteneur

cd /opt/copyparty

# Télécharger l'image et démarrer
docker compose up -d

# Vérifier que le conteneur tourne
docker compose ps

# Consulter les logs au démarrage
docker compose logs -f copyparty
Bash

Vous devriez voir une sortie similaire à :

copyparty  | Copyparty v1.x.x
copyparty  | listening on http://0.0.0.0:3923/
copyparty  | volumes loaded: 2
copyparty  | accounts loaded: 4
Bash

Testez l’accès local depuis le serveur :

curl -I http://localhost:3923/
# HTTP/1.1 200 OKLangage du code : PHP (php)


Méthode 2 : Déploiement direct en Python

Si vous ne souhaitez pas utiliser Docker, ou si vous déployez Copyparty sur un serveur avec peu de ressources (Raspberry Pi, vieux PC), la méthode Python est plus légère.

Étape 2.1 : Installer Python et les dépendances

# Mise à jour du système
sudo apt update && sudo apt upgrade -y

# Installer Python 3 et pip
sudo apt install -y python3 python3-pip

# Vérifier la version (doit être >= 3.8)
python3 --version
Bash

Étape 2.2 : Télécharger Copyparty

# Créer le répertoire
mkdir -p /opt/copyparty && cd /opt/copyparty

# Télécharger le script standalone
wget https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py
chmod +x copyparty-sfx.py

# Vérifier l'intégrité (optionnel mais recommandé)
python3 copyparty-sfx.py --version
Bash

Étape 2.3 : Lancer Copyparty manuellement (test)

# Lancement de test avec un dossier partagé
python3 /opt/copyparty/copyparty-sfx.py \
  -p 3923 \
  /opt/copyparty/data \
  -a admin:MotDePasseAdmin2024!
Bash

Accédez à http://IP-DU-SERVEUR:3923 depuis votre navigateur pour vérifier que tout fonctionne.

Étape 2.4 : Créer un service systemd pour le démarrage automatique

sudo nano /etc/systemd/system/copyparty.service
Bash
[Unit]
Description=Copyparty File Server
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/copyparty
ExecStart=/usr/bin/python3 /opt/copyparty/copyparty-sfx.py \
    --cfg /opt/copyparty/config/copyparty.conf \
    --log-utf8
Restart=on-failure
RestartSec=10

# Sécurité
NoNewPrivileges=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
Bash
# Recharger systemd et activer le service
sudo systemctl daemon-reload
sudo systemctl enable copyparty
sudo systemctl start copyparty

# Vérifier le statut
sudo systemctl status copyparty
Bash

Configuration des Utilisateurs et Permissions

La gestion des accès dans Copyparty est l’une de ses forces : vous pouvez définir des permissions très granulaires par dossier et par utilisateur.

Comprendre les permissions

CodeSignification
rLecture (téléchargement, liste des fichiers)
wÉcriture (upload de nouveaux fichiers)
mModification (renommer, déplacer)
dSuppression
rwmdContrôle total
*Accès public (sans authentification)

Exemple de configuration multi-rôles pour une PME

[accounts]
# Administrateur IT
admin = MotDePasseAdmin!

# Équipe interne
directeur = PassDir2024!
comptable = PassCompta2024!
commercial1 = PassComm1!

# Clients/partenaires externes (accès limité)
client-acme = PassClientACME!
partenaire-rh = PassPartRH!

[/]
# Racine — admin seulement
/srv/copyparty/data
admin: rwmd

[/entreprise]
# Documents internes — équipe interne en lecture/écriture
/srv/copyparty/data/entreprise
admin: rwmd
directeur: rwmd
comptable: rw
commercial1: r

[/echanges-clients]
# Zone d'échange avec les clients
/srv/copyparty/data/echanges-clients
admin: rwmd
directeur: rw
client-acme: rw
partenaire-rh: r

[/uploads-public]
# Upload public anonyme (avec lien partagé)
/srv/copyparty/data/uploads-public
*: w
admin: rwmd
INI

Bonne Pratique : Créez un dossier séparé pour chaque client ou département. Cela vous permet de révoquer un accès sans impacter les autres utilisateurs, et de faire des sauvegardes sélectives.

Rechargement de la configuration à chaud

Avec Docker, rechargez la configuration sans redémarrage :

# Envoyer le signal de rechargement
docker exec copyparty kill -HUP 1

# Ou redémarrer le conteneur (plus simple)
docker compose restart copyparty
Bash

Exposition via Cloudflare Tunnel

Pour rendre Copyparty accessible depuis internet sans ouvrir de port sur votre routeur ni exposer votre IP publique, Cloudflare Tunnel est la solution idéale et elle est gratuite.

💡 Astuce Locale : Cloudflare Tunnel fonctionne très bien même avec les connexions ADSL/4G instables de Lomé. Le tunnel maintient la connexion et la rétablit automatiquement en cas de coupure réseau momentanée.

Étape 6.1 : Installer cloudflared

# Télécharger cloudflared (architecture amd64)
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

# Vérifier l'installation
cloudflared --version
Bash

Étape 6.2 : Authentifier cloudflared

cloudflared tunnel login
Bash

Un lien s’affiche dans le terminal. Ouvrez-le dans votre navigateur, connectez-vous à votre compte Cloudflare, et sélectionnez votre domaine. Un fichier de certificat est automatiquement téléchargé dans ~/.cloudflared/.

Étape 6.3 : Créer un tunnel nommé

# Créer le tunnel (remplacez "copyparty-itadmin" par le nom de votre choix)
cloudflared tunnel create copyparty-itadmin

# Notez le Tunnel ID affiché, par exemple :
# Created tunnel copyparty-itadmin with id a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Bash

Étape 6.4 : Configurer le tunnel

# Créer le répertoire de configuration si inexistant
mkdir -p ~/.cloudflared

nano ~/.cloudflared/config.yml
Bash
tunnel: a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx  # Votre Tunnel ID
credentials-file: /root/.cloudflared/a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json

ingress:
  # Rediriger files.votre-domaine.tg vers Copyparty
  - hostname: files.votre-domaine.tg
    service: http://localhost:3923
  
  # Route de secours (obligatoire)
  - service: http_status:404
Bash

Étape 6.5 : Créer l’enregistrement DNS

# Créer automatiquement l'enregistrement CNAME dans Cloudflare
cloudflared tunnel route dns copyparty-itadmin files.votre-domaine.tgLangage du code : PHP (php)

Étape 6.6 : Démarrer cloudflared comme service système

# Installer le service systemd
sudo cloudflared service install

# Démarrer et activer
sudo systemctl start cloudflared
sudo systemctl enable cloudflared
sudo systemctl status cloudflared
Bash

Votre Copyparty est maintenant accessible à https://files.votre-domaine.tg avec HTTPS automatique fourni par Cloudflare.

Activer HTTPS et le Domaine Personnalisé

Avec Cloudflare Tunnel, le HTTPS est géré automatiquement par Cloudflare. Cependant, voici quelques réglages supplémentaires recommandés.

Forcer HTTPS dans Cloudflare

Dans le tableau de bord Cloudflare, pour votre domaine :

  1. Allez dans SSL/TLSEdge Certificates
  2. Activez Always Use HTTPS
  3. Activez Automatic HTTPS Rewrites

Configurer les en-têtes de sécurité

Dans Cloudflare → RulesTransform RulesModify Response Header, ajoutez :

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-originLangage du code : HTTP (http)

Restriction d’accès par pays (optionnel)

Si votre Copyparty est destiné uniquement aux utilisateurs en Afrique de l’Ouest, vous pouvez configurer des règles de géolocalisation dans Cloudflare → SecurityWAF pour bloquer les pays non nécessaires et réduire les tentatives de force brute.

Optimisation et Fonctionnalités Avancées

Activer la galerie photo et le lecteur média

Copyparty génère automatiquement des miniatures pour les images si Pillow est installé :

# Dans le conteneur Docker
docker exec copyparty pip install Pillow

# Ou lors du déploiement Python direct
pip3 install Pillow
Bash

Activer la recherche full-text

Pour la recherche dans les documents texte et les fichiers Office :

# Installer les dépendances
pip3 install mutagen    # Métadonnées audio
pip3 install Pillow     # Images
Bash

Ajoutez dans votre copyparty.conf :

[global]
# Activer l'indexation pour la recherche
e2t = yes          # Index plein texte
e2ts = yes         # Index plein texte avec sous-dossiers
INI

Monter Copyparty en WebDAV sous Windows

Cela permet aux utilisateurs de voir Copyparty comme un lecteur réseau dans l’Explorateur Windows, sans installer de logiciel supplémentaire :

  1. Ouvrez l’Explorateur Windows → Ce PCConnecter un lecteur réseau
  2. Entrez l’URL : https://files.votre-domaine.tg/dav/
  3. Saisissez vos identifiants Copyparty

Générer des liens de partage temporaires

Copyparty permet de générer des liens de partage avec expiration, idéal pour envoyer des fichiers volumineux à des clients sans leur créer de compte :

Dans l’interface web → sélectionnez un fichier → Share → définissez la durée d’expiration → copiez le lien.

Configurer les limites d’upload par utilisateur

[accounts]
# Format : nom = mot-de-passe [options]
# ulim = limite en octets (ici 5 Go par utilisateur)
employe1 = PassEmploye1! ulim=5368709120
client-externe = PassClient! ulim=1073741824
INI

Vous avez maintenant un serveur de fichiers Copyparty pleinement opérationnel, sécurisé et accessible depuis internet via Cloudflare Tunnel. Voici ce que vous avez accompli :

  • ✅ Déploiement de Copyparty via Docker Compose avec volumes persistants
  • ✅ Configuration des utilisateurs avec permissions granulaires par dossier
  • ✅ Exposition sécurisée via Cloudflare Tunnel avec HTTPS automatique
  • ✅ Optimisation pour les contraintes réseau et électriques locales
  • ✅ Sauvegarde automatique quotidienne et monitoring Telegram

Copyparty est une solution remarquablement efficace pour les PME togolaises qui cherchent à remplacer les échanges WhatsApp et les clés USB par une plateforme professionnelle, sans les coûts d’un abonnement Dropbox Business (environ 75 000 FCFA/mois pour 5 utilisateurs).

Prochaines étapes suggérées

  • Configurer le montage WebDAV sur les postes de travail Windows pour un accès transparent comme lecteur réseau
  • Intégrer Copyparty dans votre workflow n8n pour des notifications automatiques lors des nouveaux uploads
  • Mettre en place une synchronisation bi-directionnelle avec Immich pour la gestion de vos photos d’entreprise

Partagez votre expérience dans les commentaires : utilisez-vous déjà une solution de partage de fichiers en entreprise ? Quels défis avez-vous rencontrés ?

Documentation officielle

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *