Comment unifier tous les stockages cloud dans un seul bureau web
J'ai quatre onglets de stockage ouverts sur mon ordinateur de travail. Le premier contient le Google Drive professionnel, le deuxième mon Dropbox personnel, le troisième la console AWS S3 avec les sauvegardes, et le quatrième MinIO sur mon serveur domestique. Transférer un fichier du cloud d'entreprise vers un bucket S3 se transforme généralement en cirque : télécharger un gigaoctet sur votre ordinateur portable, ouvrir un autre onglet, le renvoyer, et ne pas oublier de nettoyer le dossier Téléchargements.
Récemment, je suis tombé sur un nouveau projet open source appelé Drivebase. Les développeurs ont résolu cette corvée de manière assez originale. Ils ont créé une application web auto-hébergée qui ressemble à un système d'exploitation complet avec fenêtres directement dans le navigateur, capable de se connecter à différents fournisseurs et de déplacer des fichiers entre eux.
Une interface fenêtrée au lieu d'onglets sans fin
La principale caractéristique qui attire l'attention est l'interface utilisateur. Les créateurs n'ont pas fait un tableau de bord classique sur une seule page. À la place, ils ont construit un bureau avec une barre des tâches et des fenêtres.
Vous pouvez ouvrir deux fenêtres de fichiers côte à côte : à gauche votre Google Drive, à droite un bucket S3 sur Cloudflare R2 ou Backblaze. Les fichiers se glissent à la souris ou se copient via des opérations par lots. Les fenêtres peuvent être réduites, redimensionnées et se chevaucher. On a l'impression d'être assis devant un gestionnaire de fichiers natif comme Finder ou Total Commander, mais dans un onglet de navigateur.
Actuellement, le projet prend en charge plusieurs sources de données :
- Google Drive
- AWS S3 et tout stockage compatible S3 (MinIO, Wasabi, Cloudflare R2, Backblaze B2)
- Système de fichiers local du serveur
- Dropbox et OneDrive
Les auteurs prévoient d'ajouter Box, Azure Blob Storage et un SFTP classique.
Ce que le moteur sous le capot peut faire
L'interface est belle, mais l'ingénierie en coulisses est bien plus intéressante. Les transferts de fichiers entre différentes API sont généralement remplis d'embûches.
Téléchargement direct vers S3 sans charge sur le serveur
Si vous téléchargez un fichier vidéo de 10 Go vers un bucket S3, router ce trafic via le serveur Drivebase n'a aucun sens. Le backend génère une URL multipart pré-signée, et le navigateur envoie les parties directement vers le stockage AWS ou MinIO. Le serveur ne s'étouffe pas sur la mémoire et la bande passante réseau.
Téléchargements reprenables
Les gros fichiers sont divisés en morceaux. Si le navigateur se ferme accidentellement ou que le Wi-Fi vacille, le processus reprendra là où il s'était arrêté.
Analyse des conflits avant la copie
Lors du transfert en masse de dossiers, le système effectue une vérification préliminaire. Si un fichier portant le même nom existe déjà dans le dossier cible, Drivebase affichera un avertissement et offrira des options : écraser, ignorer, renommer ou résoudre les conflits manuellement.
Temps réel sans polling
Vous n'avez pas besoin de surveiller l'état des tâches en arrière-plan via des requêtes AJAX constantes. L'architecture utilise les Server-Sent Events (SSE) combinés à GraphQL. La progression du transfert de fichiers s'affiche instantanément sur le client au fur et à mesure que les événements arrivent de la file d'attente.
Un regard sur la pile technologique
La pile technologique ici est moderne et sans code hérité.
Le backend fonctionne sur le runtime Bun. Au lieu d'un REST classique, les développeurs ont construit une API GraphQL typée basée sur GraphQL Yoga et le package graphql-sse. La base de données est PostgreSQL avec Drizzle ORM, les workers d'arrière-plan tournent via BullMQ et Redis, et Better Auth gère les sessions.
Le frontend est construit sur React 19, Vite, TanStack Router et Tailwind CSS 4.
L'architecture des fournisseurs est construite autour de l'interface IStorageProvider. Si vous avez votre propre stockage d'entreprise ou un WebDAV spécifique, vous pouvez ajouter la prise en charge en implémentant une interface avec un ensemble de méthodes de base pour la lecture, l'écriture et le streaming.
Comment le déployer pour vous-même
Le moyen le plus rapide d'essayer Drivebase est d'exécuter le script d'installation officiel, qui prépare le fichier de configuration et lance Docker Compose :
curl -fsSL https://drivebase.io/install | bash
cd drivebase
docker compose up -d
Après le démarrage, l'interface web sera disponible à l'adresse http://localhost:4000.
Si vous souhaitez exécuter le projet pour le développement ou des modifications locales avec Bun :
git clone https://github.com/drivebase/drivebase.git
cd drivebase
bun install
Copiez l'exemple de configuration :
cp packages/config/config.example.toml config.toml
Dans le fichier config.toml, vous devez spécifier les paramètres de connexion PostgreSQL et Redis, ainsi que générer une clé maître de chiffrement et un secret d'autorisation :
[server]
env = "prod"
port = 4000
host = "0.0.0.0"
[db]
url = "postgres://user:password@localhost:5432/drivebase"
[redis]
url = "redis://localhost:6379/0"
[crypto]
# Генерация ключа: openssl rand -base64 32
masterKeyBase64 = "ваш-ключ-32-байта"
[auth]
# Генерация секрета: openssl rand -hex 32
betterAuthSecret = "ваш-рандомный-секрет"
baseUrl = "http://localhost:4000"
trustedOrigins = ["http://localhost:3000"]
Appliquez les migrations et démarrez le serveur de développement :
bun run db:migrate
bun run dev
Le backend démarrera sur le port 4000, et le client web sur le port 3000.
Pour qui est-ce fait
Drivebase sera utile dans deux scénarios principaux :
- Serveur domestique ou homelab. Lorsque vous avez un NAS qui tourne, quelques téraoctets sur des disques externes et des offres cloud gratuites, Drivebase vous offre un point d'entrée unique sans avoir besoin d'installer une douzaine d'utilitaires de synchronisation.
- Petites équipes et freelances. C'est pratique de garder le code source dans S3, les fichiers clients sur Google Drive, et de transférer les résultats de travail entre eux via le navigateur.
Le projet compte actuellement environ 400 étoiles sur GitHub, le dépôt est assez récent, vous pourriez donc rencontrer des imperfections dans les cas limites. Cependant, l'idée d'unifier des API hétérogènes sous une interface de bureau unique sur Bun et React 19 semble prometteuse. Le code est open sous licence MIT, donc rien ne vous empêche de le forker et d'écrire votre propre adaptateur de stockage.
Projets similaires