Nextcloud: restringir tipos de archivo por grupo (según el contenido real, no la extensión)

Guía práctica de Tipos de archivo permitidos para Nextcloud: nueve tipos de archivos, reglas por grupo y para enlaces públicos, presets, comprobación a nivel de almacenamiento en web, clientes y WebDAV, y rechazos claros.

Si gestionas un Nextcloud para una familia, un club o un equipo pequeño, seguramente ya has vivido esta conversación: alguien deja un archivo en una carpeta compartida y solo más tarde te das cuenta de que no era lo que decía ser. El bloqueo por extensión propio de Nextcloud ayuda un poco, pero la extensión no es más que una etiqueta. Renombra un programa a photo.jpg y la etiqueta miente. La única forma fiable de restringir los tipos de archivo en Nextcloud es fijarse en lo que el archivo contiene de verdad.

Eso es lo que hace Tipos de archivo permitidos. Es un plugin de Nextcloud que te permite decidir, por grupo, qué tipos de archivos se pueden subir, a partir de los bytes del archivo (sus números mágicos) y de su nombre a la vez. Ambos tienen que estar permitidos: un programa renombrado a photo.jpg sigue siendo un programa, y una imagen llamada setup.exe sigue rechazándose. Este tutorial repasa la puesta en marcha, los nueve tipos, las reglas por grupo y para enlaces públicos, y cómo probar antes de desplegar nada.

Requisitos

  • Nextcloud 30 a 34 con PHP 8.1 o superior.
  • Una cuenta de MediaLab Works con una suscripción activa, una licencia de por vida dentro de su ventana de actualizaciones, o la prueba gratuita de 30 días.
  • Acceso por shell al servidor (para los comandos de instalación y el comando de prueba occ).
  • Nada más: la app no necesita herramientas externas.

Paso 1: Instalar y activar la app

Inicia sesión en tu cuenta de MediaLab Works, abre Licenses y descarga el archivo filetypes-x.y.z.tar.gz. Después extráelo en tu carpeta de apps para que te quede apps/filetypes/, con el usuario del servidor web como propietario:

cd /var/www/nextcloud/apps
sudo tar -xzf ~/filetypes-x.y.z.tar.gz
sudo chown -R www-data:www-data filetypes

Actívala desde la línea de comandos o desde la página Apps:

sudo -u www-data php occ app:enable filetypes

Paso 2: Activar la licencia

Abre Administration settings → Allowed file types → License, pega tu clave de licencia y guarda. La app contacta con el servidor de licencias, vincula la clave a esta instancia y muestra la licencia como Active. La licencia se comprueba una vez al día; sin internet, la app sigue funcionando 7 días después de la última comprobación correcta y luego se detiene hasta que pueda comprobar de nuevo. Si la licencia caduca no se borra nada: simplemente se dejan de comprobar las subidas y tus reglas vuelven a aplicarse en cuanto la licencia sea válida.

Paso 3: Conocer los nueve tipos

Antes de marcar casillas conviene saber cómo se clasifican los archivos. La app agrupa todo en nueve tipos:

  • Imágenes
  • Vídeos
  • Audio
  • Documentos — texto plano, texto enriquecido, archivos de oficina, PDF, e-books, correo electrónico y similares
  • Archivos comprimidos
  • Código y páginas web — HTML, JavaScript, scripts, SVG y similares
  • Programas e instaladores — ejecutables de Windows y Linux, APK, deb/rpm/AppImage, JAR y similares
  • Fuentes
  • Cualquier otra cosa

Dos de estos merecen atención. Los archivos SVG cuentan como Código y páginas web, no como imágenes, porque eso es lo que son. Y un script guardado como .txt sigue siendo un script, así que no pasará como documento. Tenlo en cuenta al diseñar tus reglas.

Paso 4: Definir reglas por grupo

Abre Administration settings → Allowed file types. La página muestra una fila por grupo, una casilla por tipo y una opción No restriction por fila. Marca lo que pueden subir los miembros de ese grupo.

Algunos puntos que es fácil pasar por alto:

  • Las reglas se combinan de forma permisiva. Una persona que está en varios grupos puede subir lo que permita cualquiera de sus grupos. Si un usuario restringido sigue pudiendo subirlo todo, busca un segundo grupo con No restriction.
  • Los administradores no son especiales. El grupo admin necesita su propia fila (o No restriction) si no quieres limitar a los administradores.
  • Todos los demás es una fila aparte para quienes no están en ningún grupo con regla. Por defecto no tiene restricción, lo que mantiene el comportamiento anterior para ellos.
  • Enlaces públicos es una fila propia, que cubre las subidas de personas sin cuenta: envío de archivos y comparticiones con subida habilitada.

Paso 5: Partir de un preset

No tienes que marcar cada casilla a mano. Tres presets te dan un punto de partida razonable:

  • media only
  • media + documents
  • everything but code and programs

Elige uno, ajusta las filas de tus grupos y pulsa Save. Las reglas se aplican desde la siguiente subida.

Paso 6: Saber dónde se ejecuta la comprobación

La comprobación se ejecuta a nivel de almacenamiento, así que no está atada a una interfaz concreta. Cubre la interfaz web, los clientes de escritorio y móvil, WebDAV, las subidas por enlace público y los archivos guardados por otras apps (Text, Office y similares). Eso importa en la práctica: una regla que solo protegiera el formulario de subida web se podría saltar sin más con un cliente de sincronización o una petición curl por WebDAV. Aquí, la misma regla acompaña al archivo allá donde llegue.

Hay una excepción deliberada: los archivos escritos por comandos occ y por tareas en segundo plano no se comprueban, porque no son una persona subiendo algo.

Paso 7: Ver lo que ven los usuarios

Cuando se rechaza un archivo, se elimina al momento y se le explica el motivo a la persona, en el cliente o en la página web. El mensaje indica el archivo, el tipo con el que se ha detectado y qué está permitido, por ejemplo:

"setup.exe" is not accepted: it is Programs and installers, and you may only upload Images, Videos, Documents.

Ese tipo de mensaje te ahorra un ticket de soporte. El usuario sabe al instante si se ha equivocado de archivo o si la regla es simplemente más estricta de lo que suponía.

Paso 8: Probar antes de desplegar

Hay dos formas de comprobar un archivo sin tocar tus reglas activas.

Try it en la página de ajustes: elige un archivo de tu ordenador y verás con qué tipo cuenta (por sus bytes y por su nombre) y qué grupos pueden subirlo. Solo se envían sus primeros 64 KB y no se guarda nada.

Desde un terminal, para un archivo que ya está en el servidor:

sudo -u www-data php occ filetypes:test <file> [name]

Esto te dice con qué tipo cuenta el archivo local y quién puede subirlo. Ejecútalo con algunos de los archivos que manejan de verdad tus usuarios —una exportación de oficina, un PDF escaneado, un logo SVG— antes de endurecer las reglas de un grupo.

Consejos y resolución de problemas

Se rechaza un archivo aunque su extensión esté permitida. Sus bytes dicen otra cosa. Un script guardado como .txt, o un SVG, se clasificarán como Código y páginas web. Compruébalo con Try it o occ filetypes:test.

Los archivos que ya estaban en la nube siguen ahí. Es intencionado. Las reglas se aplican a nuevas subidas, movimientos y copias; los archivos existentes no se tocan. Si necesitas una base limpia, revisa el contenido antiguo por separado.

Un usuario de un grupo restringido sigue pudiendo subirlo todo. También está en otro grupo con No restriction, y gana el grupo más permisivo. Revisa primero la pertenencia a grupos y después las reglas.

Los enlaces públicos siguen abiertos. Recuerda que Enlaces públicos tiene su propia fila. Endurecer las reglas de los grupos no sirve de nada para el envío anónimo de archivos hasta que edites también esa fila.

Privacidad. Solo se leen los primeros 64 KB de un archivo para saber qué es, y la app no guarda nada sobre el archivo.

Conclusión

El bloqueo por extensión es un cartel en la puerta; las reglas basadas en el contenido son la cerradura. Tipos de archivo permitidos te da nueve tipos comprensibles, reglas por grupo, una fila aparte para todos los demás y otra para los enlaces públicos, y la aplicación a nivel de almacenamiento en web, clientes y WebDAV, con mensajes de rechazo que se explican por sí mismos. Empieza por un preset, prueba unos cuantos archivos reales con Try it o occ filetypes:test y endurece un grupo cada vez.

Para el recorrido completo, consulta la guía de usuario; para las notas de versión, el changelog. Hay más material de self-hosting en nuestra base de conocimiento, y si algo se comporta de forma inesperada, revisa las FAQ o contacta con nosotros.

Esta publicación se redactó con ayuda de IA a partir de la documentación de nuestros productos o de las fuentes indicadas y se revisó automáticamente antes de publicarse.

Sigue leyendo

¿Usas Emby, Jellyfin o Nextcloud?

Nuestros plugins y apps añaden TV en directo, subtítulos, registro de usuarios y seguridad a tu propio servidor, con prueba gratuita.