Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Haze Vault

Haze Vault es una app web local para administrar archivos de un NAS desde el navegador. Puede trabajar directo contra carpetas locales configuradas por el administrador o conectarse a un servidor SMB/Samba usando las credenciales de cada usuario.

Vista previa de Haze Vault

Funciones

  • Papelera por almacenamiento en .haze-trash, con restaurar y borrar definitivo.
  • Busqueda, filtros por tipo y orden por nombre, fecha, tamano o tipo.
  • Seleccion masiva para copiar o enviar varios elementos a papelera.
  • Copiar y pegar archivos o carpetas sin usar servicios externos.
  • Miniaturas de imagen y vista previa para imagenes o videos compatibles.
  • Streaming por rangos para que los videos grandes no tengan que cargarse completos.
  • Panel de detalles con ruta, tamano, tipo, fecha, permiso y copiar ruta.
  • Subida multiple con progreso por archivo, progreso total y cancelacion.
  • Auto-renombre cuando ya existe un archivo o carpeta con el mismo nombre.
  • Sesion con expiracion configurable y limite de intentos de login.
  • Estado por almacenamiento: conectado, escribible, solo lectura y espacio libre.

Requisitos

  • Node.js 18 o superior.
  • Acceso de lectura/escritura a las carpetas que se van a administrar.
  • Para modo SMB: smbclient instalado en el servidor donde corre Haze Vault.
  • Un archivo .env local basado en .env.example.

Desarrollo local

cp .env.example .env
mkdir -p data/public data/private
npm start

Abre:

http://127.0.0.1:8080

Configuracion

Variables principales:

PORT=8080
HOST=127.0.0.1
NAS_NAME=nas.local
VAULT_USER=usuario
VAULT_PASS=change-this-password
VAULT_PASS_SHA256=
SESSION_TTL_HOURS=8
LOGIN_MAX_ATTEMPTS=8
TEXT_LIMIT_BYTES=1048576
STORAGE_ROOTS=public:./data/public,private:./data/private
BACKEND_MODE=local

STORAGE_ROOTS define los espacios que aparecen en la app. El formato es:

nombre_visible:/ruta/fisica,nombre_visible_2:/otra/ruta

Ejemplo generico para un NAS Linux:

HOST=0.0.0.0
NAS_NAME=nas.local
VAULT_USER=usuario
VAULT_PASS_SHA256=hash-sha256-de-tu-contrasena
STORAGE_ROOTS=media:/srv/storage/media,documents:/srv/storage/documents

Para generar VAULT_PASS_SHA256:

printf '%s' 'usa-una-contrasena-larga' | shasum -a 256

Si VAULT_PASS_SHA256 esta definido, la app lo usa en lugar de VAULT_PASS.

Modo SMB/Samba

Para usar Haze Vault como gestor de un NAS SMB, instala smbclient en la maquina donde corre la app y configura:

BACKEND_MODE=smb
HOST=0.0.0.0
PORT=8080
NAS_NAME=haze
SMB_HOST=192.168.0.3
SMB_WORKGROUP=WORKGROUP

En este modo el login de la app usa usuario y contrasena SMB. El backend lista los recursos con smbclient -L //SMB_HOST y opera contra rutas //SMB_HOST/share. Los permisos no los inventa la app: Samba/OpenMediaVault decide si el usuario puede listar, crear, subir, descargar, renombrar o borrar.

Funciones soportadas inicialmente en SMB:

  • Login contra SMB.
  • Listado de shares visibles para el usuario.
  • Navegacion por carpetas y listado de archivos.
  • Crear carpeta y archivo TXT.
  • Subir, descargar, vista previa y editar texto.
  • Renombrar y borrar archivos/carpetas vacias.

La papelera, copiar/mover entre shares y borrado recursivo de carpetas SMB no estan soportados aun.

Seguridad

  • No subas el archivo .env al repo.
  • Cambia VAULT_PASS antes de usarlo en una red real o usa VAULT_PASS_SHA256.
  • Ejecuta la app con un usuario Linux sin privilegios de root.
  • Da permisos solo a las carpetas configuradas en STORAGE_ROOTS.
  • En modo SMB, usa HTTPS/VPN si vas a entrar desde fuera de la LAN; las contrasenas SMB viven solo en memoria de sesion, pero viajan al backend al iniciar sesion.
  • No expongas esta app directamente a internet sin HTTPS, proxy seguro y control de acceso adicional.

Scripts

npm start

Inicia el servidor configurado por .env.

npm run dev

Alias de desarrollo para iniciar el mismo servidor.

npm test

Levanta una instancia temporal y valida login, proteccion contra ../, auto-renombre, papelera/restauracion y streaming por rangos.

Preparacion para git

Antes de subir:

node --check server.js
node --check public/app.js
npm test
git status --short

About

Web-based NAS management console for OpenMediaVault and homelab environments.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages