Initial vault setup
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user