Files
wiki/Catalogue-Self-Hosted/apps/app-mydrive.md
T
2026-06-09 18:40:21 +02:00

5.9 KiB


title: myDrive created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, cloud-storage, nodejs, file-sharing, mongo, simple] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Self-hosted+Cloud, https://github.com/subnub/myDrive]

💾 myDrive

Un clone simplifié de Google Drive écrit en Node.js : une application modulaire qui mise sur la simplicité, avec une interface web élégante, un client de synchronisation natif et la prise en charge multi-utilisateurs, idéale pour les petits déploiements perso ou de famille.

📋 Informations Générales

Métadonnée Valeur
Site web mydrive.nicholas.guru
GitHub subnub/myDrive
License MIT
Langage TypeScript / Node.js (Express + React)
Étoiles 4 800
Dernière MAJ 2026-04-18
Catégorie cat-cloud-storage

📝 Description

myDrive est un projet éducatif et fonctionnel d'un développeur solo (Subnub / Nicholas Van Oudtshoorn) qui vise à recréer l'expérience de Google Drive avec une stack moderne 100 % JavaScript : Express pour l'API REST, MongoDB pour la persistance, React pour l'interface web, et un client de synchronisation écrit en Node.js capable de tourner en daemon sur Windows/macOS/Linux.

L'ambition n'est pas de rivaliser avec app-nextcloud en termes de fonctionnalités (pas d'agenda, pas de contacts, pas d'édition collaborative), mais de proposer une base saine et lisible pour quiconque souhaite comprendre comment construire un cloud storage. Le code est structuré en monorepo avec un backend, un frontend et un client de sync séparés. La sécurité inclut chiffrement AES-256-CBC côté serveur, hash Argon2 pour les mots de passe, JWT pour les sessions et WebSocket pour les notifications temps réel.

L'UI web est fluide et propose les classiques : upload drag-and-drop avec barre de progression, prévisualisation d'images / vidéos / PDF, partage par lien, gestion de dossiers, recherche, partage multi-utilisateurs. Le client desktop synchronise en arrière-plan avec déduplication par hash. Pour un usage en production familiale de 2-5 personnes, c'est largement suffisant ; pour de l'entreprise, mieux vaut se tourner vers app-seafile ou app-owncloud.

⚠️ Note : la cadence de développement a ralenti depuis 2023 ; le projet est néanmoins fonctionnel et reste un excellent terrain d'apprentissage.

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
version: '3.8'

services:
  mongo:
    image: mongo:7
    container_name: mydrive-mongo
    restart: unless-stopped
    volumes:
      - mongo_data:/data/db

  backend:
    image: ghcr.io/subnub/mydrive-backend:latest
    container_name: mydrive-backend
    restart: unless-stopped
    depends_on:
      - mongo
    environment:
      MONGO_URL: mongodb://mongo:27017/mydrive
      JWT_SECRET: ${JWT_SECRET}
      ENCRYPTION_SECRET: ${ENCRYPTION_SECRET}
      NODE_ENV: production
      WEB_PORT: 3000

  frontend:
    image: ghcr.io/subnub/mydrive-frontend:latest
    container_name: mydrive-frontend
    restart: unless-stopped
    ports:
      - "8080:3000"
    depends_on:
      - backend
    volumes:
      - mydrive_files:/files

volumes:
  mongo_data:
  mydrive_files:

Option 2 : Monorepo local (dev)

git clone https://github.com/subnub/myDrive.git
cd myDrive
# Backend
cd backend && npm install && npm start
# Frontend (autre terminal)
cd ../frontend && npm install && npm start

⚙️ Configuration

  • Variables d'environnement : MONGO_URL, JWT_SECRET, ENCRYPTION_SECRET (à externaliser dans un .env).
  • Premier compte : à créer via l'UI, le premier utilisateur est admin par défaut.
  • Stockage : dossier /files mappé sur l'hôte via volume.
  • Reverse-proxy : laissez app-traefik gérer le TLS et l'auth de base supplémentaire si exposé publiquement.
  • Sync client : téléchargeable depuis la page releases GitHub pour Windows/macOS/Linux.

🔄 Alternatives

Open Source

Propriétaires (ce que cette app remplace)

  • Google Drive — partage, prévisualisation
  • Microsoft OneDrive — sur Windows
  • iCloud Drive — sur Apple
  • Dropbox Basic — cloud perso

🔐 Sécurité

  • Authentification : JWT, hash Argon2 des mots de passe.
  • Chiffrement at-rest : AES-256-CBC appliqué aux fichiers uploadés, clé dans ENCRYPTION_SECRET (à sauvegarder séparément, sinon données irrécupérables).
  • HTTPS : obligatoire en prod, à terminaison sur le reverse-proxy.
  • Sessions : expiration configurable, refresh token possible.
  • Logs : Winston, exportables vers votre stack cat-monitoring.
  • Mises à jour : la cadence a ralenti ; avant d'exposer publiquement, auditer le code et limiter à un usage privé.
  • MFA : non intégrée nativement, à compenser par un reverse-proxy auth (ex. app-authelia).

📚 Ressources

Pages Liées