7.4 KiB
Ultidrive
Équivalent : Google Drive Statut : Partiel (API proxy WebDAV/OCS)
Résumé
Frontend reproduisant à l'identique le comportement et l'interface de Google Drive, potentiellement comme frontend pour Nextcloud ou solution similaire déjà fonctionnelle.
État d'implémentation réel (mai 2026)
Déjà implémenté
- API backend montée sous
/api/v1/drive(si Nextcloud activé). - Endpoints list/upload/download/delete, create folder, move, create share.
- Client Nextcloud WebDAV/OCS intégré côté serveur.
Partiel / incomplet
- Pas d'upload chunked gros fichiers.
- Couverture incomplète des cas drive (copy, corbeille, favoris, récents).
- Gestion quotas/permissions simplifiée non finalisée.
Non commencé
- UX frontend Drive de production branchée backend réel.
- Édition collaborative docs/feuilles/présentations.
- Sync offline-first complète (résolution de conflits).
Approche technique
L'idée est simple : on ne réinvente pas le stockage. On fournit une UX identique à Google Drive mais le backend de stockage est interchangeable :
| Mode de stockage | Description |
|---|---|
| WebDAV | Connecté à un serveur WebDAV (Nextcloud, ownCloud, etc.) |
| S3-compatible | Bucket S3, MinIO, Backblaze, etc. |
| Nextcloud natif | Ultidrive = frontend custom pour Nextcloud (API OCS/WebDAV) |
Contrainte clé : montage local
Peu importe le backend, le stockage doit pouvoir être monté comme un disque local sur l'appareil de l'utilisateur (comme Google Drive ou Dropbox le permettent). Cela implique un client sync desktop (via Tauri ou en exploitant le client Nextcloud existant).
Gestion des permissions
Les permissions doivent être simples à gérer — pas d'ACL complexes. Modèle inspiré de Google Drive :
- Propriétaire / Éditeur / Lecteur
- Partage par lien (public, restreint, expiration)
- Héritage des permissions parent (dossier → contenu)
Option "frontend Nextcloud"
Si c'est plus simple, Ultidrive peut être purement un frontend pour Nextcloud :
- Nextcloud gère le stockage, la sync, les permissions, le versioning
- Ultidrive = interface custom (même codebase/stack que le reste de la suite)
- Avantage : on profite de l'écosystème Nextcloud (apps, clients, WebDAV) sans tout recoder
Points de différenciation vs Google Drive
- Auto-hébergeable, stockage sous contrôle total
- Backend interchangeable (WebDAV / S3 / Nextcloud)
- Montage local natif comme un vrai disque
- Interface identique à Google Drive (migration sans friction)
- Chiffrement côté client optionnel (zero-knowledge)
- Automatisations à l'upload (OCR, classification IA, webhooks)
Fonctionnalités
Core
- Upload / download fichiers et dossiers
- Arborescence, favoris, récents, corbeille
- Recherche full-text (contenu des documents)
- Prévisualisation (images, PDF, vidéos, docs)
- Versioning (historique des versions)
Partage & collaboration
- Partage par lien (public, protégé par mot de passe, expiration)
- Partage avec utilisateurs/groupes (lecture / écriture / admin)
- Édition collaborative temps réel (docs, tableurs, présentations)
- Commentaires sur fichiers
Sync & montage
- Montage local comme disque (type Google Drive / Dropbox)
- Client desktop sync (Tauri ou Nextcloud client natif)
- WebDAV natif
- Sync sélective (dossiers choisis)
- Offline-first avec résolution de conflits
Intégration suite
- Pièces jointes Ultimail sauvegardées dans Drive
- Fichiers joints aux événements Agenda
- Stockage médias Ultiphotos
- Partage dans Ultimeet (présentation)
Intégration Nextcloud — étude technique
APIs disponibles (confirmé)
| Opération | API Nextcloud | Endpoint |
|---|---|---|
| Lister fichiers | WebDAV PROPFIND | /remote.php/dav/files/{user}/ |
| Upload | WebDAV PUT | /remote.php/dav/files/{user}/{path} |
| Upload gros fichiers | Chunked v2 | /remote.php/dav/uploads/{user}/ (chunks 5MB-5GB) |
| Download | WebDAV GET | /remote.php/dav/files/{user}/{path} |
| Créer dossier | WebDAV MKCOL | /remote.php/dav/files/{user}/{path} |
| Déplacer/copier | WebDAV MOVE/COPY | Headers Destination |
| Supprimer | WebDAV DELETE | Standard |
| Créer un partage | OCS POST | /ocs/v2.php/apps/files_sharing/api/v1/shares |
| Modifier partage | OCS PUT | .../shares/{id} |
| Partage public | WebDAV | /public.php/dav (depuis NC 29) |
Permissions — mapping simple confirmé
Nextcloud utilise un système bitwise simple qui mappe directement sur notre modèle :
| Permission | Bit | Mapping Ultidrive |
|---|---|---|
| Read | 1 | Lecteur |
| Update | 2 | Éditeur |
| Create | 4 | Éditeur |
| Delete | 8 | Éditeur |
| Share | 16 | Propriétaire |
| All | 31 | Propriétaire |
Types de partage supportés : user (0), group (1), public link (3), email (4), federated (6).
Options : password, expireDate (YYYY-MM-DD), publicUpload.
Montage local — solution retenue : rclone
| Plateforme | Méthode | Dépendance |
|---|---|---|
| Linux | rclone mount via FUSE |
libfuse3 |
| macOS | rclone mount via macFUSE |
macFUSE |
| Windows | rclone mount via WinFsp |
WinFsp |
Avantages de rclone vs client Nextcloud Desktop :
- Plus stable (le VFS Nextcloud est expérimental sur Linux)
- Supporte WebDAV ET S3 avec la même commande
- VFS caching configurable (mode off/minimal/writes/full)
- Bundlable dans l'app Tauri comme sidecar
Stratégie pour Tauri : rclone embarqué en sidecar, lancé/arrêté par l'app, configuration gérée programmatiquement.
Déploiement Nextcloud headless (API-only)
Nextcloud peut tourner en mode backend pur :
- Image Docker FPM (pas d'interface web servie directement)
- Reverse proxy qui route uniquement
/remote.php/dav,/ocs/,/public.php/dav - L'UI Nextcloud n'est jamais exposée aux utilisateurs — seul Ultidrive est le frontend
┌──────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Ultidrive │────▶│ Reverse Proxy │────▶│ Nextcloud │
│ (frontend) │ │ (nginx) │ │ (PHP-FPM) │
└──────────────┘ └──────────────────┘ └──────────────┘
│ │
│ ┌────┴────┐
Routes exposées : │ Storage │
/remote.php/dav/* │ (S3/local)
/ocs/v2.php/* └─────────┘
/public.php/dav/*
Briques technologiques envisagées
| Besoin | Option retenue | Alternatives |
|---|---|---|
| Backend fichiers | Nextcloud (PHP-FPM headless) | ownCloud Infinite Scale |
| Protocole sync | WebDAV (natif NC) | — |
| Object storage | MinIO / S3-compatible (via NC external storage) | Stockage local |
| Montage local | rclone (sidecar Tauri) | client NC Desktop |
| Édition collaborative | OnlyOffice, Collabora Online | — |
| Recherche contenu | Meilisearch (indexation custom) | NC full-text search app |
| Auth | Partagée via Ulti Suite (OIDC → NC) | — |