>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
TypeScript

Alle Cloud-Speicher in einem einzigen Web-Desktop vereinen

Drivebase

Ich habe vier Speicher-Tabs auf meinem Arbeitscomputer geöffnet. Einer enthält das geschäftliche Google Drive, der zweite persönliches Dropbox, der dritte die AWS S3-Konsole mit Backups und der vierte MinIO auf meinem Heimserver. Eine Datei von der Unternehmenscloud in einen S3-Bucket zu übertragen wird normalerweise zum Zirkus: Ein Gigabyte auf den Laptop herunterladen, einen weiteren Tab öffnen, wieder hochladen und nicht vergessen, den Downloads-Ordner aufzuräumen.

Kürzlich bin ich auf ein frisches Open-Source-Projekt namens Drivebase gestoßen. Die Entwickler haben diese Routine auf ziemlich originelle Weise gelöst. Sie haben eine selbstgehostete Webanwendung erstellt, die wie ein vollwertiges fensterbasiertes Betriebssystem direkt im Browser aussieht, verschiedene Anbieter verbinden und Dateien dazwischen verschieben kann.

Drivebase UI

Fensterbasierte Oberfläche statt endloser Tabs

Das Hauptmerkmal, das ins Auge fällt, ist die UI. Die Entwickler haben kein typisches Single-Page-Dashboard erstellt. Stattdessen haben sie einen Desktop mit Taskleiste und Fenstern aufgebaut.

Du kannst zwei Dateifenster nebeneinander öffnen: links dein Google Drive, rechts einen S3-Bucket auf Cloudflare R2 oder Backblaze. Dateien werden mit der Maus gezogen oder durch Stapeloperationen kopiert. Fenster können minimiert, in der Größe verändert werden und sich überlappen. Es fühlt sich an, als würdest du in einem nativen Dateimanager wie dem Finder oder Total Commander sitzen, nur innerhalb eines Browser-Tabs.

Derzeit unterstützt das Projekt mehrere Datenquellen:

  • Google Drive
  • AWS S3 und alle S3-kompatiblen Speicher (MinIO, Wasabi, Cloudflare R2, Backblaze B2)
  • Lokales Dateisystem des Servers
  • Dropbox und OneDrive

Die Autoren planen, Box, Azure Blob Storage und reguläres SFTP hinzuzufügen.

Was die Engine unter der Haube leisten kann

Die Oberfläche sieht schick aus, aber die Technik darunter ist weitaus interessanter. Dateiübertragungen zwischen verschiedenen APIs sind normalerweise voller Fallstricke.

Direkter Upload zu S3 ohne Serverbelastung

Wenn du eine 10-GB-Videodatei in einen S3-Bucket hochlädst, macht es keinen Sinn, solchen Datenverkehr durch den Drivebase-Server zu leiten. Das Backend generiert eine vorsignierte Multipart-URL, und der Browser sendet Teile direkt an AWS- oder MinIO-Speicher. Der Server erstickt nicht an Speicher und Netzwerkbandbreite.

Fortsetzbare Uploads

Große Datei-Uploads werden in Chunks aufgeteilt. Wenn der Browser versehentlich geschlossen wurde oder das WLAN flackerte, wird der Prozess dort fortgesetzt, wo er aufgehört hat.

Konfliktanalyse vor dem Kopieren

Bei der Massenübertragung von Ordnern führt das System eine Vorabprüfung durch. Wenn eine Datei mit demselben Namen bereits im Zielordner existiert, zeigt Drivebase eine Warnung und bietet Optionen an: überschreiben, überspringen, umbenennen oder Konflikte manuell lösen.

Echtzeit ohne Polling

Du musst den Status von Hintergrundaufgaben nicht durch ständige AJAX-Anfragen überwachen. Die Architektur nutzt Server-Sent Events (SSE) in Kombination mit GraphQL. Der Dateiübertragungsfortschritt wird auf dem Client instant angezeigt, sobald Events aus der Queue eintreffen.

Ein Blick auf den Tech-Stack

Der Tech-Stack hier ist modern und frei von Legacy-Code.

Das Backend läuft auf der Bun-Runtime. Statt klassischem REST haben die Entwickler eine typisierte GraphQL-API auf Basis von GraphQL Yoga und dem graphql-sse-Paket aufgebaut. Die Datenbank ist PostgreSQL mit Drizzle ORM, Hintergrund-Worker laufen über BullMQ und Redis, und Better Auth übernimmt die Sessions.

Das Frontend ist auf frischem React 19, Vite, TanStack Router und Tailwind CSS 4 aufgebaut.

Die Provider-Architektur basiert auf dem IStorageProvider-Interface. Wenn du einen eigenen Unternehmensspeicher oder spezifisches WebDAV hast, kannst du Unterstützung dafür hinzufügen, indem du ein Interface mit einem grundlegenden Satz von Lese-, Schreib- und Streaming-Methoden implementierst.

So deployst du es für dich selbst

Der schnellste Weg, Drivebase auszuprobieren, ist das offizielle Installationsskript auszuführen, das die Konfigurationsdatei vorbereitet und Docker Compose hochfährt:

curl -fsSL https://drivebase.io/install | bash
cd drivebase
docker compose up -d

Nach dem Start ist die Weboberfläche unter http://localhost:4000 verfügbar.

Wenn du das Projekt für die Entwicklung oder lokale Änderungen mit Bun ausführen möchtest:

git clone https://github.com/drivebase/drivebase.git
cd drivebase
bun install

Kopiere die Beispielkonfiguration:

cp packages/config/config.example.toml config.toml

In der config.toml-Datei musst du PostgreSQL- und Redis-Verbindungsparameter angeben sowie einen Verschlüsselungs-Master-Key und ein Autorisierungsgeheimnis generieren:

[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"]

Wende die Migrations an und starte den Dev-Server:

bun run db:migrate
bun run dev

Das Backend startet auf Port 4000 und der Web-Client auf Port 3000.

Für wen ist das gedacht

Drivebase ist in zwei Hauptszenarien nützlich:

  1. Heimserver oder Homelab. Wenn du einen NAS laufen hast, ein paar Terabyte auf externen Festplatten und kostenlose Cloud-Tiers, bietet Drivebase dir einen einzigen Einstiegspunkt, ohne ein Dutzend Sync-Utilities installieren zu müssen.
  2. Kleine Teams und Freelancer. Es ist praktisch, Quellcode in S3 zu halten, Kundenmaterialien auf Google Drive und Arbeitsergebnisse zwischen ihnen durch den Browser zu übertragen.

Das Projekt hat derzeit etwa 400 Stars auf GitHub, das Repository ist ziemlich frisch, daher könntest du in Randfällen auf raue Kanten stoßen. Die Idee, heterogene APIs unter einer einzigen Desktop-Oberfläche auf Bun und React 19 zu vereinen, sieht jedoch vielversprechend aus. Der Code ist unter der MIT-Lizenz offen, also hält dich nichts davon ab, ihn zu forken und deinen eigenen Storage-Adapter zu schreiben.

Ähnliche Projekte