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
/filesmappé 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
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