Hoe alle cloudopslag in één webdesktop samen te brengen
Ik heb vier opslagtabs open staan op mijn werkcomputer. De eerste heeft de werk-Google Drive, de tweede heeft persoonlijke Dropbox, de derde heeft de AWS S3-console met back-ups, en de vierde heeft MinIO op mijn thuisserver. Een bestand overzetten van de bedrijfscloud naar een S3-bucket wordt meestal een circus: download een gigabyte naar je laptop, open een ander tabblad, upload het terug, en vergeet niet de Downloads-map op te ruimen.
Onlangs stuitte ik op een gloednieuw open source-project genaamd Drivebase. De ontwikkelaars hebben deze routine op een tamelijk originele manier opgelost. Ze hebben een zelfgehoste webapplicatie gemaakt die eruitziet als een volwaardig windowed besturingssysteem rechtstreeks in de browser, die verbinding kan maken met verschillende providers en bestanden tussen hen kan verplaatsen.
Windowed interface in plaats van eindeloze tabbladen
Het belangrijkste kenmerk dat in het oog springt is de UI. De makers hebben geen typische single-page dashboard gemaakt. In plaats daarvan hebben ze een desktop gebouwd met een taakbalk en vensters.
Je kunt twee bestandsvensters naast elkaar openen: links je Google Drive, rechts een S3-bucket op Cloudflare R2 of Backblaze. Bestanden worden met de muis gesleept of gekopieerd via batchbewerkingen. Vensters kunnen geminimaliseerd, van grootte veranderd worden en elkaar overlappen. Het voelt alsof je in een native bestandsbeheerder zoals Finder of Total Commander zit, maar dan in een browsertabblad.
Momenteel ondersteunt het project verschillende databronnen:
- Google Drive
- AWS S3 en alle S3-compatibele opslag (MinIO, Wasabi, Cloudflare R2, Backblaze B2)
- Lokaal bestandssysteem van de server
- Dropbox en OneDrive
De auteurs plannen om Box, Azure Blob Storage en reguliere SFTP toe te voegen.
Wat de motor onder de motorkap kan doen
De interface ziet er mooi uit, maar de techniek onder de motorkap is veel interessanter. Bestandsoverdrachten tussen verschillende API's zitten meestal vol valkuilen.
Direct uploaden naar S3 zonder serverbelasting
Als je een videobestand van 10 GB uploadt naar een S3-bucket, heeft het geen zin om zo'n verkeer via de Drivebase-server te routeren. De backend genereert een voorbereikte multipart URL, en de browser stuurt delen rechtstreeks naar AWS- of MinIO-opslag. De server raakt niet verstopt met geheugen en netwerkbandbreedte.
Hernieuwbare uploads
Grote bestand-uploads worden opgesplitst in chunks. Als de browser per ongeluk sluit of de Wi-Fi even wegvalt, gaat het proces verder waar het gebleven was.
Conflictanalyse voor het kopiëren
Bij het bulksgewijs overzetten van mappen voert het systeem een voorlopige controle uit. Als er al een bestand met dezelfde naam in de doelmap bestaat, toont Drivebase een waarschuwing en biedt opties: overschrijven, overslaan, hernoemen of conflicten handmatig oplossen.
Realtime zonder polling
Je hoeft de status van achtergrondtaken niet te monitoren via constante AJAX-verzoeken. De architectuur maakt gebruik van Server-Sent Events (SSE) gecombineerd met GraphQL. De voortgang van bestandsoverdracht wordt onmiddellijk op de client weergegeven zodra events uit de wachtrij binnenkomen.
Een blik op de tech stack
De technische stack hier is modern en vrij van legacy code.
De backend draait op de Bun-runtime. In plaats van klassieke REST hebben de ontwikkelaars een getypte GraphQL API gebouwd op basis van GraphQL Yoga en het graphql-sse-pakket. De database is PostgreSQL met Drizzle ORM, achtergrondwerkers draaien via BullMQ en Redis, en Better Auth regelt de sessies.
De frontend is gebouwd op verse React 19, Vite, TanStack Router en Tailwind CSS 4.
De provider-architectuur is opgebouwd rond de IStorageProvider interface. Als je je eigen bedrijfsopslag of specifieke WebDAV hebt, kun je ondersteuning ervoor toevoegen door één interface te implementeren met een basisset van lees-, schrijf- en streamingmethoden.
Hoe je het zelf kunt deployen
De snelste manier om Drivebase uit te proberen is door het officiële installatiescript uit te voeren, dat het configuratiebestand voorbereidt en Docker Compose opstart:
curl -fsSL https://drivebase.io/install | bash
cd drivebase
docker compose up -d
Na opstarten is de webinterface beschikbaar op http://localhost:4000.
Als je het project wilt draaien voor ontwikkeling of lokale modificaties met Bun:
git clone https://github.com/drivebase/drivebase.git
cd drivebase
bun install
Kopieer de voorbeeldconfiguratie:
cp packages/config/config.example.toml config.toml
In het config.toml bestand moet je PostgreSQL- en Redis-verbindingsparameters opgeven, evenals een encryptie-master key en autorisatiegeheim genereren:
[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"]
Pas migraties toe en start de dev-server:
bun run db:migrate
bun run dev
De backend start op poort 4000, en de webclient op poort 3000.
Voor wie is dit gemaakt
Drivebase is nuttig in twee hoofdscenario's:
- Thuisserver of homelab. Wanneer je een NAS draait, een paar terabyte op externe schijven hebt en gratis cloud-tier, geeft Drivebase je één toegangspunt zonder een dozijn sync-hulpprogramma's te hoeven installeren.
- Kleine teams en freelancers. Het is handig om broncode in S3 te bewaren, klantmateriaal op Google Drive, en werkresultaten ertussen via de browser over te zetten.
Het project heeft momenteel ongeveer 400 sterren op GitHub, de repository is vrij vers, dus je kunt ruwe randjes tegenkomen in edge cases. Echter, het idee om heterogene API's te verenigen onder één desktop-interface op Bun en React 19 ziet er veelbelovend uit. De code is open onder de MIT-licentie, dus niets houdt je tegen om het te forken en je eigen storage-adapter te schrijven.
Gerelateerde projecten