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.
- 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.
- Node.js 18 o superior.
- Acceso de lectura/escritura a las carpetas que se van a administrar.
- Para modo SMB:
smbclientinstalado en el servidor donde corre Haze Vault. - Un archivo
.envlocal basado en.env.example.
cp .env.example .env
mkdir -p data/public data/private
npm startAbre:
http://127.0.0.1:8080
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=localSTORAGE_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/documentsPara generar VAULT_PASS_SHA256:
printf '%s' 'usa-una-contrasena-larga' | shasum -a 256Si VAULT_PASS_SHA256 esta definido, la app lo usa en lugar de VAULT_PASS.
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=WORKGROUPEn 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.
- No subas el archivo
.enval repo. - Cambia
VAULT_PASSantes de usarlo en una red real o usaVAULT_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.
npm startInicia el servidor configurado por .env.
npm run devAlias de desarrollo para iniciar el mismo servidor.
npm testLevanta una instancia temporal y valida login, proteccion contra ../,
auto-renombre, papelera/restauracion y streaming por rangos.
Antes de subir:
node --check server.js
node --check public/app.js
npm test
git status --short