Lab

nander

Un gestor de archivos para tu propio servidor, desde el navegador.

Pregunta
¿Puede un gestor de archivos autoalojado parecerse a Finder dentro del navegador, incluido arrastrar archivos al escritorio?
Resultado
Casi. Arrastrar dentro y fuera, vistas previas, enlaces para compartir y un espacio aislado por usuario. Arrastrar al escritorio solo funciona en navegadores Chromium. Es un límite del navegador y la documentación lo explica.

Qué hace

nander es un gestor de archivos que instalas en tu propio servidor y usas desde cualquier navegador. Le indicas una carpeta, creas usuarios y cada uno ve solo su parte.

  • Arrastrar en los dos sentidos. Suelta archivos o carpetas enteras desde el escritorio para subirlos, con su estructura de carpetas. Arrastra un archivo del navegador al escritorio para descargarlo.
  • Vistas previas de imágenes (con visor a pantalla completa), vídeo y audio en los que se puede avanzar, PDF, Markdown renderizado y código fuente con resaltado de sintaxis, que se puede editar y guardar ahí mismo.
  • Comprimir y descomprimir desde la interfaz. Extrae .zip, .tar y .tar.gz.
  • Enlaces para compartir un archivo, con contraseña y fecha de caducidad opcionales. Quien lo recibe no necesita cuenta.
  • Papelera, para poder deshacer un borrado.
  • Usuarios y permisos: cada usuario queda encerrado en una carpeta, con permisos separados para subir, borrar y compartir. Los administradores lo gestionan todo desde la misma interfaz.
  • Búsqueda, vista de cuadrícula y de lista, selección múltiple, cortar, copiar y pegar, y atajos de teclado.

Disponibilidad

El código todavía no es público. Funciona como contenedor de Docker, con una cuenta de administrador que se crea al primer arranque. Si quieres probarlo, escribe a [email protected].

Cómo está hecho

  • Un único binario estático de Go, con SQLite escrito en Go, en una imagen de Docker de unos 20 MB que no se ejecuta como root.
  • Todas las rutas que reciben una ruta de archivo la resuelven componente a componente y vuelven a comprobar cada enlace simbólico contra la carpeta del usuario. Un .. o un enlace que apunte fuera se rechaza en el servidor, envíe lo que envíe el navegador.
  • Al descomprimir, se comprueba cada entrada antes de escribir nada («zip slip»).
  • Las contraseñas pasan por SHA-256 y después por bcrypt, para que las frases largas no se corten sin avisar a los 72 bytes.
  • Los enlaces para compartir usan un token aleatorio de 128 bits, y el servidor comprueba la caducidad en cada acceso.

Límites conocidos

  • Arrastrar archivos al escritorio solo funciona en Chrome, Edge y Brave. Firefox y Safari no lo permiten, así que ahí aparece un botón de descarga.
  • No genera miniaturas de vídeo. Haría falta ffmpeg, y lo dejamos fuera para que la imagen siga siendo pequeña. Los vídeos se reproducen igualmente.
  • Los enlaces para compartir sirven para archivos sueltos, no para carpetas.
  • El espacio en disco solo se muestra en Linux.