Come unificare tutti gli storage cloud in un unico desktop web
Ho quattro schede di storage aperte sul mio computer di lavoro. Una ha Google Drive aziendale, la seconda ha Dropbox personale, la terza ha la console AWS S3 con i backup, e la quarta ha MinIO sul mio server di casa. Trasferire un file dal cloud aziendale a un bucket S3 di solito diventa un circus: scarica un gigabyte sul tuo laptop, apri un'altra scheda, caricalo di nuovo, e non dimenticare di pulire la cartella Downloads.
Recentemente mi sono imbattuto in un nuovo progetto open source chiamato Drivebase. Gli sviluppatori hanno risolto questa routine in modo piuttosto originale. Hanno creato un'applicazione web auto-ospitata che appare come un sistema operativo completo con finestre direttamente nel browser, può connettersi a diversi provider e spostare file tra di essi.
Interfaccia a finestre invece di schede infinite
La caratteristica principale che colpisce è l'interfaccia utente. Gli autori non hanno realizzato una tipica dashboard single-page. Invece, hanno costruito un desktop con una taskbar e finestre.
Puoi aprire due finestre file fianco a fianco: a sinistra il tuo Google Drive, a destra un bucket S3 su Cloudflare R2 o Backblaze. I file vengono trascinati con il mouse o copiati attraverso operazioni batch. Le finestre possono essere minimizzate, ridimensionate e sovrapporsi l'una all'altra. Sembra di essere seduti in un file manager nativo come Finder o Total Commander, solo che è tutto all'interno di una scheda del browser.
Attualmente, il progetto supporta diverse sorgenti dati:
- Google Drive
- AWS S3 e qualsiasi storage compatibile con S3 (MinIO, Wasabi, Cloudflare R2, Backblaze B2)
- File system locale del server
- Dropbox e OneDrive
Gli autori pianificano di aggiungere Box, Azure Blob Storage e SFTP normale.
Cosa sa fare il motore sotto il cofano
L'interfaccia è bella, ma l'ingegneria sottostante è molto più interessante. I trasferimenti di file tra API diverse sono solitamente pieni di insidie.
Upload diretto su S3 senza carico sul server
Se stai caricando un file video da 10 GB su un bucket S3, instradare quel traffico attraverso il server Drivebase non ha senso. Il backend genera un URL multipart pre-firmato, e il browser invia le parti direttamente allo storage AWS o MinIO. Il server non si soffoca su memoria e larghezza di banda di rete.
Upload ripristinabili
I caricamenti di file di grandi dimensioni vengono suddivisi in chunk. Se il browser si chiude accidentalmente o il Wi-Fi oscilla, il processo continuerà da dove era rimasto.
Analisi dei conflitti prima della copia
Quando si trasferiscono cartelle in blocco, il sistema esegue un controllo preliminare. Se un file con lo stesso nome esiste già nella cartella di destinazione, Drivebase mostrerà un avviso e offrirà opzioni: sovrascrivi, salta, rinomina, o risolvi i conflitti manualmente.
Tempo reale senza polling
Non devi monitorare lo stato dei task in background attraverso costanti richieste AJAX. L'architettura usa Server-Sent Events (SSE) combinati con GraphQL. L'avanzamento del trasferimento file viene visualizzato sul client istantaneamente man mano che gli eventi arrivano dalla coda.
Uno sguardo allo stack tecnologico
Lo stack tecnologico qui è moderno e privo di codice legacy.
Il backend gira sul runtime Bun. Invece del classico REST, gli sviluppatori hanno costruito un'API GraphQL tipizzata basata su GraphQL Yoga e il pacchetto graphql-sse. Il database è PostgreSQL con Drizzle ORM, i worker in background girano attraverso BullMQ e Redis, e Better Auth gestisce le sessioni.
Il frontend è costruito su React 19 fresco, Vite, TanStack Router e Tailwind CSS 4.
L'architettura dei provider è costruita attorno all'interfaccia IStorageProvider. Se hai il tuo storage aziendale o un WebDAV specifico, puoi aggiungere il supporto implementando un'interfaccia con un set base di metodi di lettura, scrittura e streaming.
Come eseguire il deploy per te stesso
Il modo più veloce per provare Drivebase è eseguire lo script di installazione ufficiale, che prepara il file di configurazione e avvia Docker Compose:
curl -fsSL https://drivebase.io/install | bash
cd drivebase
docker compose up -d
Dopo l'avvio, l'interfaccia web sarà disponibile su http://localhost:4000.
Se vuoi eseguire il progetto per sviluppo o modifiche locali usando Bun:
git clone https://github.com/drivebase/drivebase.git
cd drivebase
bun install
Copia la configurazione di esempio:
cp packages/config/config.example.toml config.toml
Nel file config.toml, devi specificare i parametri di connessione PostgreSQL e Redis, oltre a generare una chiave master di crittografia e un segreto di autorizzazione:
[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"]
Applica le migrazioni e avvia il server di sviluppo:
bun run db:migrate
bun run dev
Il backend si avvierà sulla porta 4000, e il client web sulla porta 3000.
Per chi è fatto
Drivebase sarà utile in due scenari principali:
- Server di casa o homelab. Quando hai un NAS in funzione, un paio di terabyte su dischi esterni e tier cloud gratuiti, Drivebase ti dà un unico punto di accesso senza bisogno di installare una dozzina di utility di sincronizzazione.
- Piccoli team e freelancer. È comodo tenere il codice sorgente su S3, i materiali dei clienti su Google Drive, e trasferire i risultati del lavoro tra di essi attraverso il browser.
Il progetto ha attualmente circa 400 stelle su GitHub, il repository è piuttosto fresco, quindi potresti incontrare imperfezioni in casi limite. Tuttavia, l'idea di unificare API eterogenee sotto un'unica interfaccia desktop su Bun e React 19 sembra promettente. Il codice è aperto sotto licenza MIT, quindi nulla ti impedisce di farne un fork e scrivere il tuo adapter di storage.
Progetti correlati