← Todas las utilidades

NSFS

Versión 26.1 (build 263) Prueba 30 días
NSFS
Índice

Qué es NSFS

nsfs (NSFS) es un gestor de ficheros self-hosted en un único binario Go: explora el sistema de ficheros local y servidores remotos por SSH/SFTP desde el navegador, con login JWT, RBAC por grupos→roles→permisos (afinable por conexión y prefijo de ruta), registro de auditoría y licencia nslib con trial de 30 días.

  • Local + remoto: la barra lateral muestra la raíz Local y cada conexión SSH como una raíz más; se navega igual en ambas.
  • Sin build de frontend: Alpine.js + Tailwind por CDN, 6 idiomas (EN fuente de verdad, ES traducida, FR/DE/IT/PT con fallback a EN).
  • Credenciales SSH cifradas en reposo con AES-256-GCM (security.aes_key).

Los nombres de hosts, rutas y usuarios de los ejemplos son ficticios.

Casos de uso

1. Explorar y operar sobre el directorio local permitido

Ver el contenido de /data, crear carpetas, subir/descargar, renombrar y borrar.

nsfs init ./midata
nsfs start --config ./midata
nsfs status

Flujo web: login → conexión Local en la barra lateral → navegar con breadcrumbs → vista lista/cuadrícula → nueva carpeta, subir (arrastrar y soltar), descargar, renombrar, borrar, menú contextual.

2. Añadir un servidor remoto por SSH y navegarlo

Registrar el host prod-ejemplo y comprobar la conexión antes de usarla.

Flujo web: Administración → conexiones → crear (host, puerto 22, usuario, auth password o key con passphrase opcional, root_path) → botón probar conexión → aparece como raíz en la barra lateral (punto verde = conectado, gris = idle, rojo = error) → navegar igual que en local.

3. Dar acceso de solo lectura a un equipo sobre una ruta remota

El grupo operadores solo puede listar /var/log del host prod-ejemplo.

Flujo web: Administración → reglas de acceso → crear regla (connection_id + path_prefix + acciones list|read) para el grupo → comprobar con vista efectiva por usuario → el usuario ve la lista filtrada y recibe 403 al intentar crear carpetas fuera de su jail.

4. Subida masiva, búsqueda y descarga como zip con auditoría

Subir un lote, localizar un fichero por nombre y descargar la selección comprimida.

Flujo web: seleccionar múltiples ficheros → acciones en lote (borrado/movido en lote) → descargar como zip → buscar por nombre (insensible a mayúsculas, paginado con ?page=&limit=) → cada operación queda en audit/YYYY-MM-DD.jsonl y en la vista de auditoría reciente.

Interfaz

Gestor de archivos NSFS

Referencia

Comandos CLI

ComandoDescripción
nsfs init [dir] [--admin-password PASS]Crea el entorno: config.yaml + base SQLite + carpetas. Sin --admin-password genera una clave aleatoria de 6 caracteres
nsfs start [dir] / --config dirArranca el servidor en background (daemon)
nsfs stop [--config dir]Para el daemon
nsfs statusPID, uptime, memoria
nsfs run [--config dir]Primer plano (interno, no documentado en --help)
nsfs --versionVersión y build

Configuración principal (config.yaml)

ClaveDescripción
server.host / server.portEscucha (por defecto 0.0.0.0:3333)
server.tls_cert_file / tls_key_fileTLS opcional
database.pathRuta SQLite (./db/security.db)
security.jwt_secretSecreto JWT (mín. 32 caracteres)
security.token_expiry_hoursValidez del token (24)
security.aes_keyClave de cifrado de credenciales SSH
security.password_reset_code_ttl_minutesValidez del código de reset (10)
fs.local_rootsJail local ([/data, /tmp]; vacío = sin restricción)
fs.max_upload_mbTamaño máximo de subida (500)
fs.hidden_patternsPatrones ocultos
fs.audit_dirDirectorio de auditoría (./audit)
smtp.*SMTP opcional para emails de reset
pagination.page_sizeTamaño de página (100)

Áreas de la web

Explorador (breadcrumbs, lista/cuadrícula, búsqueda, orden por nombre/tamaño/fecha, multiselección, menú contextual, arrastrar y soltar) · vista previa (texto/código, imagen, PDF; límite ~1 MB) y editor inline con guardado · conexiones SSH · favoritos · administración (usuarios, grupos, roles, reglas de acceso, vista efectiva por usuario, mis permisos) · auditoría reciente · editor de configuración · acerca de · temas y selector de idioma.

Ejemplos comentados

# 1. Entorno nuevo y arranque
nsfs init ./midata
nsfs start --config ./midata
nsfs status

# 2. Fijar la clave de admin en el init (para scripting)
nsfs init /opt/nsfs-prod --admin-password "clave-segura"

# 3. Ver versión
nsfs --version

# 4. Parar el daemon
nsfs stop --config ./midata
# Listado paginado vía API (con token JWT)
curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:3333/api/fs/list?connection=local&path=/data&page=1&limit=100"

# Búsqueda por nombre
curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:3333/api/fs/search?connection=local&path=/data&q=informe"

Preguntas frecuentes

¿Dónde creo la clave de admin? En el init: sin --admin-password se genera una aleatoria (se muestra una vez); fíjela con --admin-password para automatizar.

¿Por qué recibo 403 al crear una carpeta? La lista está filtrada por sus permisos (list|read) y la escritura exige regla sobre esa connection_id + path_prefix. Revise la vista efectiva del usuario.

¿Se guardan las contraseñas SSH en claro? No: se cifran con AES-256-GCM usando security.aes_key y nunca se registran en logs.

¿Qué idiomas soporta? EN (fuente), ES (completa), FR/DE/IT/PT (con fallback a EN si falta alguna clave).

También disponible en: en