--- 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](https://mydrive.nicholas.guru/) | | **GitHub** | [subnub/myDrive](https://github.com/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Ă©) ```yaml # 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) ```bash 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 - [[app-nextcloud]] — La suite complĂšte - [[app-cloudreve]] — Go, plus rapide et complet - [[app-owncloud]] — PHP, plus ancien - [[app-seafile]] — C, performances de sync - [[app-opencloud]] — Go, fork OCIS - [[app-oxicloud]] — Rust, moderne - [[app-sync-in]] — Node.js, autre alternative lĂ©gĂšre - [[app-kinto]] — JSON storage, pas fichiers - **FileBrowser** — UI web minimaliste sur Go - **Plex/Jellyfin** — Si l'usage est plutĂŽt mĂ©dia ### 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 - [Site officiel](https://mydrive.nicholas.guru/) - [GitHub subnub/myDrive](https://github.com/subnub/myDrive) - [Wiki](https://github.com/subnub/myDrive/wiki) - [DĂ©mo en ligne](https://demo.mydrive.nicholas.guru/) ## Pages LiĂ©es - [[cat-cloud-storage]] — CatĂ©gorie Cloud Storage - [[recettes-docker-compose]] — Templates Docker - [[app-nextcloud]] — Plus complet - [[app-cloudreve]] — Plus moderne - [[securisation-home-lab]] — SĂ©curitĂ© - [[Catalogue-Self-Hosted]] — Hub