>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
TypeScript

Cómo unificar todos los almacenamientos en la nube en un único escritorio web

Drivebase

Tengo cuatro pestañas de almacenamiento abiertas en mi ordenador de trabajo. Una tiene el Google Drive corporativo, la segunda tiene Dropbox personal, la tercera tiene la consola de AWS S3 con copias de seguridad, y la cuarta tiene MinIO en mi servidor doméstico. Transferir un archivo desde la nube corporativa a un bucket S3 suele convertirse en un circus: descarga un gigabyte a tu portátil, abre otra pestaña, súbelo de nuevo, y no olvides limpiar la carpeta de Descargas.

Hace poco me encontré con un nuevo proyecto de código abierto llamado Drivebase. Los desarrolladores resolvieron esta rutina de una manera bastante original. Crearon una aplicación web autohospedada que simula un sistema operativo con ventanas completo directamente en el navegador, puede conectarse a diferentes proveedores y mover archivos entre ellos.

Drivebase UI

Interfaz con ventanas en lugar de pestañas interminables

La característica principal que llama la atención es la interfaz de usuario. Los creadores no hicieron un panel típico de una sola página. En su lugar, construyeron un escritorio con una barra de tareas y ventanas.

Puedes abrir dos ventanas de archivos una al lado de la otra: a la izquierda tu Google Drive, a la derecha un bucket S3 en Cloudflare R2 o Backblaze. Los archivos se arrastran con el ratón o se copian mediante operaciones por lotes. Las ventanas se pueden minimizar, redimensionar y superponer. Es como estar sentado ante un gestor de archivos nativo como Finder o Total Commander, pero dentro de una pestaña del navegador.

Actualmente, el proyecto soporta varias fuentes de datos:

  • Google Drive
  • AWS S3 y cualquier almacenamiento compatible con S3 (MinIO, Wasabi, Cloudflare R2, Backblaze B2)
  • Sistema de archivos local del servidor
  • Dropbox y OneDrive

Los autores planean añadir Box, Azure Blob Storage y SFTP convencional.

Qué puede hacer el motor bajo el capó

La interfaz se ve bien, pero la ingeniería que hay detrás es mucho más interesante. Las transferencias de archivos entre diferentes APIs suelen estar llenas de trampas.

Subida directa a S3 sin carga en el servidor

Si estás subiendo un archivo de vídeo de 10 GB a un bucket S3, no tiene sentido enrutar ese tráfico a través del servidor de Drivebase. El backend genera una URL multipart presignada, y el navegador envía las partes directamente al almacenamiento de AWS o MinIO. El servidor no se ahoga en memoria ni ancho de banda de red.

Subidas reanudables

Las subidas de archivos grandes se dividen en fragmentos. Si el navegador se cierra accidentalmente o el Wi-Fi parpadea, el proceso continuará desde donde lo dejó.

Análisis de conflictos antes de copiar

Al transferir carpetas en masa, el sistema realiza una verificación preliminar. Si ya existe un archivo con el mismo nombre en la carpeta de destino, Drivebase mostrará una advertencia y ofrecerá opciones: sobrescribir, omitir, renombrar o resolver conflictos manualmente.

Tiempo real sin polling

No necesitas monitorizar el estado de las tareas en segundo plano mediante constantes solicitudes AJAX. La arquitectura utiliza Server-Sent Events (SSE) combinado con GraphQL. El progreso de la transferencia de archivos se muestra en el cliente al instante a medida que llegan los eventos desde la cola.

Un vistazo a la pila tecnológica

La pila tecnológica aquí es moderna y libre de código heredado.

El backend se ejecuta en el runtime Bun. En lugar de REST clásico, los desarrolladores construyeron una API GraphQL tipada basada en GraphQL Yoga y el paquete graphql-sse. La base de datos es PostgreSQL con Drizzle ORM, los trabajadores en segundo plano se ejecutan a través de BullMQ y Redis, y Better Auth gestiona las sesiones.

El frontend está construido con React 19, Vite, TanStack Router y Tailwind CSS 4.

La arquitectura de proveedores está construida en torno a la interfaz IStorageProvider. Si tienes tu propio almacenamiento corporativo o un WebDAV específico, puedes añadir soporte para ello implementando una interfaz con un conjunto básico de métodos de lectura, escritura y streaming.

Cómo desplegarlo tú mismo

La forma más rápida de probar Drivebase es ejecutar el script de instalación oficial, que prepara el archivo de configuración y levanta Docker Compose:

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

Después del inicio, la interfaz web estará disponible en http://localhost:4000.

Si quieres ejecutar el proyecto para desarrollo o modificaciones locales usando Bun:

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

Copia la configuración de ejemplo:

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

En el archivo config.toml, necesitas especificar los parámetros de conexión de PostgreSQL y Redis, así como generar una clave maestra de cifrado y un secreto de autorización:

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

Aplica las migraciones e inicia el servidor de desarrollo:

bun run db:migrate
bun run dev

El backend se iniciará en el puerto 4000, y el cliente web en el puerto 3000.

Para quién está hecho

Drivebase será útil en dos escenarios principales:

  1. Servidor doméstico o homelab. Cuando tienes un NAS funcionando, un par de terabytes en discos externos y niveles gratuitos en la nube, Drivebase te da un único punto de entrada sin necesidad de instalar una docena de utilidades de sincronización.
  2. Equipos pequeños y freelancers. Es conveniente mantener el código fuente en S3, los materiales de los clientes en Google Drive, y transferir los resultados del trabajo entre ellos a través del navegador.

El proyecto actualmente tiene alrededor de 400 estrellas en GitHub, el repositorio es bastante reciente, así que puedes encontrarte con bordes ásperos en casos extremos. Sin embargo, la idea de unificar APIs heterogéneas bajo una única interfaz de escritorio en Bun y React 19 parece prometedora. El código es abierto bajo la licencia MIT, así que nada te impide hacer un fork y escribir tu propio adaptador de almacenamiento.

Proyectos relacionados