Roles, cuentas y auditoría de makerspace
PrintStash cubre el control de acceso del makerspace: cuenta por miembro, roles por colección, permisos por impresora, OIDC y rastro con secretos censurados.
Una biblioteca de impresión autoalojada puede asumir todo el trabajo de control de acceso de un makerspace cuando tiene cinco cosas: una cuenta por miembro, roles que separen ver de editar en la biblioteca, permisos que se aten a cada impresora, inicio de sesión único opcional y un historial de cambios que registre quién hizo qué. PrintStash tiene las cinco, funcionando en tu propio servidor bajo licencia AGPL. Lo que deja fuera es igual de deliberado: la facturación de las cuotas y el acceso a la puerta pertenecen a herramientas como Fabman, y funcionan bien a su lado.
La mayoría de los espacios resuelven el acceso a la impresión con una herramienta de consola construida alrededor de las impresoras, o con una plataforma en la nube que se vende por puesto. Los dos enfoques funcionan, y los dos ponen las decisiones de acceso en algún sitio que no son los archivos. Esta página es la lista de comprobación que hay detrás de la afirmación de arriba: qué significa cada requisito en la práctica, cómo lo cumple PrintStash, qué versión lo trajo y dónde están los límites.
Lo que un makerspace necesita del control de acceso
Un taller compartido es un problema de acceso más difícil que un laboratorio en casa, y las diferencias son las que marcan la lista.
Los miembros entran y salen cada cuatrimestre o cada trimestre. Unas pocas personas deberían poder subir, reorganizar y borrar; la mayoría solo debería navegar y enviar trabajos. Algunas máquinas concentran el riesgo, así que la estación de resina y la Bambu con filamento cargado deberían limitarse a los miembros que pasaron la formación, mientras la flota de Prusa sigue abierta. Y cuando un modelo desaparece o alguien cancela media cola, la pregunta “quién ha hecho esto” necesita una respuesta de verdad. Una contraseña compartida falla las cuatro pruebas a la vez, porque vuelve anónima cada acción y convierte cada baja en un cambio de cerradura.
Así que la lista de trabajo queda así:
- Cuentas individuales, una por miembro, para que las acciones tengan dueño.
- Roles a nivel de biblioteca que separen ver, editar y administrar.
- Permisos por impresora, para que las restricciones de máquina no dependan de trucos con carpetas.
- Inicio de sesión único cuando el espacio ya tiene un proveedor de identidad.
- Un historial de cambios con el autor y el origen anotados.
Cómo cubre PrintStash la lista
Cada miembro tiene su propia cuenta. El soporte multiusuario con administración por usuario existe desde la 0.3.0, y cada cuenta es dueña de sus claves de API, sus vistas guardadas y sus favoritos. Cuando un miembro se va, desactivas o borras una cuenta; nadie rota una contraseña compartida y nadie reconfigura un puesto de trabajo con el nombre de otra persona. Las claves de API por usuario también significan que la automatización del puesto de laminado es atribuible a ese puesto, algo que importa en cuanto hay más de uno. La guía de montaje de una biblioteca para makerspace recorre la disposición de las cuentas en detalle.
Los roles viven en las colecciones. A cada usuario se le puede conceder view, edit o admin en cada colección de forma independiente, y las descargas, las previsualizaciones y las miniaturas respetan esas concesiones porque la entrega autenticada de archivos llegó junto al modelo de roles. Una forma de partida que funciona es una biblioteca aprobada que todo el mundo puede ver, una colección de subidas de miembros donde quien aporta puede editar, y una colección crítica del taller cerrada a los responsables de mantenimiento.
Cada impresora lleva su propia escala de acceso. Desde la 0.11.1, un superusuario puede conceder view, print, control o admin en cualquier impresora de forma independiente, y la comprobación corre en el servidor en cada llamada REST y en el flujo WebSocket en vivo, así que una petición fabricada a mano no consigue nada que no consiga la interfaz. Las claves de API heredan las concesiones de impresora de su dueño, y la impresión va un paso más allá: exige además acceso de edición a la colección del modelo de origen, que es la razón de que un miembro con solo lectura no pueda lanzar trabajos en una impresora que simplemente ve. Este es el mecanismo detrás de “la estación de resina solo para miembros formados”: concede la impresora, no la estructura de carpetas.
El inicio de sesión único es opcional y genérico. Desde la 0.11.0, PrintStash habla OpenID Connect estándar: lee el documento de descubrimiento del proveedor, autentica a los miembros con código de autorización y PKCE, valida el token de ID y crea las cuentas en el primer inicio de sesión. La pertenencia a un grupo que tú designas convierte a un miembro en administrador, y el inicio de sesión con contraseña local sigue funcionando como respaldo cuando el proveedor no está disponible. El proyecto apunta explícitamente a Authentik y Authelia, aunque cualquier cosa que publique un endpoint de descubrimiento se comporta igual. Si tu espacio ya usa SSO para las cortadoras láser, las impresoras entran en el mismo flujo. La guía de configuración de SSO cubre los ajustes y la naturaleza de un solo bit del mapeo de grupos.
Todo lo que cambia datos escribe una fila de auditoría. Las creaciones, las actualizaciones, los borrados recuperables, las restauraciones y los borrados definitivos se registran con el usuario que actúa y la IP de origen, capturados por hooks de seguimiento de cambios en la base de datos y no por llamadas de log repartidas por el código, así que el rastro no depende de que cada desarrollador se acuerde de anotar. Los campos secretos, incluidas las claves de API de impresora, los códigos de acceso, los hashes de contraseña y las credenciales de almacenamiento, se guardan en el rastro como [redacted].
Qué anota de verdad el registro de auditoría
Cada fila lleva la acción, el tipo y el id del recurso, un diff de antes y después de los campos cambiados, el id del autor y la IP de origen. Merece la pena entender la censura si eres tú quien opera el servidor, porque no siempre estuvo ahí: antes de la 0.8.5 los diffs escribían los valores de antes y después sin censurar, lo que significaba que las claves de API de impresora y los hashes de contraseña se podían leer a través del endpoint de auditoría. La versión 0.8.5 lo arregló por nombre de campo, migró para eliminar las filas ya capturadas y cerró el último hueco de cobertura registrando también los eventos de copia de seguridad y restauración. Un refinamiento posterior importa para el uso solo desde el navegador: desde la 0.11.4, las mutaciones hechas con sesiones de cookie conservan bien su autor, así que una acción tomada en la interfaz se atribuye a la persona que hizo clic en lugar de quedar anotada como anónima.
Leer el rastro hoy es cosa de superusuarios: el endpoint GET /api/v1/admin/audit devuelve las filas de más nueva a más antigua, filtrables por tipo de recurso o por el id de un recurso concreto. En la versión actual no hay una pantalla de panel dedicada ni reenvío a un SIEM, así que si tu espacio manda los logs a un sistema central, tendrías que sondear ese endpoint con un script. Un detalle operativo relacionado: cuando PrintStash corre detrás de un proxy inverso, pon FORWARDED_ALLOW_IPS para que el registro de auditoría anote los puestos de los miembros y no la dirección del proxy, según el docs/known-limitations.md del repositorio.
Dónde se detiene PrintStash
Los roles se atan en dos niveles, colecciones e impresoras, no por archivo. Si un modelo de verdad tiene que estar oculto para la mayoría de los miembros, su sitio es una colección restringida propia; no hay una ACL por archivo a la que recurrir.
El rastro de auditoría se puede consultar, pero es escueto. Entre el endpoint solo para superusuarios y la ausencia de herramientas de exportación, trátalo como una herramienta de investigación de incidentes y no como un canal de cumplimiento normativo, salvo que estés dispuesto a escribir el script pequeño que lo vacía. La contención tiene un motivo: un log que nadie lee es un pasivo, y este rastro existe para responder “quién ha hecho esto” después de un incidente.
PrintStash da por hecha una red de confianza. No está diseñado para estar directamente en la internet pública; pon TLS y un proxy inverso endurecido delante, o mantenlo solo por VPN. El artículo sobre el modelo de seguridad explica esa postura y su razonamiento.
No hay facturación de cuotas, ni acceso a la puerta, ni reserva de cursos. Fabman y los sistemas de gestión de socios parecidos se ocupan de ese terreno, y PrintStash no intenta absorberlo.
Cuándo necesitas SaaS de verdad
Las plataformas en la nube se ganan su sitio en situaciones concretas, así que vale la pena nombrarlas en lugar de fingir que la vía autoalojada siempre gana. 3DPrinterOS y SimplyPrint venden flotas gestionadas: paneles que abarcan varias sedes, disponibilidad gestionada por el proveedor y puestos que se dan de alta sin tocar un servidor. Si tu espacio no tiene a nadie que quiera estar de guardia y ninguna restricción sobre que los archivos vivan en la infraestructura de otro, esa es una elección coherente y no un fallo de criterio.
Fabman resuelve las partes que PrintStash rechaza: cuotas de socios, facturación y hardware de acceso a la puerta. En la práctica las dos categorías se combinan bien, con Fabman decidiendo quién puede entrar en la sala y PrintStash decidiendo quién puede tocar qué archivos y qué máquinas una vez dentro.
Esbozo del montaje
La lista completa cabe en una sesión corta:
- Despliega la pila con Docker Compose y termina la configuración inicial, que crea el primer superusuario.
- Crea una cuenta por miembro, o apunta OpenID Connect a tu proveedor de identidad y deja que las cuentas se creen solas.
- Diseña el árbol de colecciones antes de conceder nada: biblioteca aprobada, subidas de miembros, materiales restringidos.
- Concede roles de colección de forma amplia para ver y restringida para editar.
- Concede roles de impresora máquina por máquina, reservando print o control en las máquinas de riesgo para los miembros formados.
- Fija una ventana de retención de papelera con la que puedas vivir y haz una copia de seguridad, restaurada en algún sitio que no sea producción.
Los pasos 1 y 6 tienen sus propias guías; el recorrido de montaje de la biblioteca cubre la secuencia para un espacio típico, y la documentación de instalación cubre las variantes de despliegue.
Preguntas que surgen
¿Puede cada miembro tener su propia cuenta en una biblioteca de impresión 3D compartida?
Sí. PrintStash es multiusuario desde la 0.3.0: un administrador crea una cuenta por miembro, y cada cuenta lleva sus propias claves de API, vistas guardadas y favoritos. Desactivar a un miembro afecta solo a ese miembro, que es la propiedad que una contraseña compartida nunca te va a dar. Las cuentas también pueden crearse solas a través de OpenID Connect en el primer inicio de sesión.
¿Tiene PrintStash registro de auditoría?
Sí. Las creaciones, las actualizaciones, los borrados recuperables, las restauraciones y los borrados definitivos se registran con el usuario que actúa, la IP de origen y un diff de antes y después de los campos. Los campos que llevan credenciales se guardan censurados, un arreglo que llegó en la 0.8.5 junto con una limpieza de las filas ya capturadas. Los superusuarios leen el rastro por el endpoint /api/v1/admin/audit; en la versión actual no hay una pantalla dedicada ni exportación externa.
¿Puedo limitar quién usa una impresora concreta?
Sí. Desde la 0.11.1 cada impresora acepta sus propias concesiones de view, print, control y admin, aplicadas en el servidor en cada petición REST y en la conexión WebSocket en vivo. Las claves de API actúan con las concesiones de su dueño, e iniciar una impresión exige además acceso de edición a la colección del modelo. Restringir la estación de resina a los miembros formados es exactamente este mecanismo.
¿Se integra PrintStash con nuestro inicio de sesión único?
Cualquier proveedor de OpenID Connect funciona, y el proyecto nombra a Authentik y Authelia como los objetivos probados. El flujo usa descubrimiento, código de autorización con PKCE y tokens de ID validados, y un grupo configurado controla la condición de administrador. El inicio de sesión local sigue disponible como respaldo, así que una caída del proveedor de identidad no deja a la sala fuera de la biblioteca.
¿Qué no cubre PrintStash para un makerspace?
La facturación de las cuotas, el acceso a la puerta y la reserva de cursos quedan completamente fuera de su alcance; para eso combínalo con un sistema de gestión de socios como Fabman. Los roles se atan a colecciones e impresoras y no a archivos individuales, así que ocultar un modelo significa darle su propia colección. Y el registro de auditoría se puede leer pero es escueto: un endpoint solo para superusuarios, sin pantalla de panel y sin envío a un SIEM de serie.
Fuentes
- Código de PrintStash leído en la etiqueta
v0.12.1(commitafbe54dd430d, con el checkout verificado por hash contra la etiqueta upstream), comprobado el 22 de agosto de 2026: el hook de auditoría y la lista de campos censurados enbackend/app/services/audit.py, los enums de rol y las tablas de permisos enbackend/app/db/models.py, la aplicación por impresora enbackend/app/services/printer_rbac.pymás la puerta del WebSocket enbackend/app/api/v1/printers.py, el endpoint de auditoría para superusuarios enbackend/app/api/v1/admin.py, y el servicio de OIDC enbackend/app/services/oidc.py. - Las secciones del
CHANGELOG.mddel repositorio para la 0.3.0 (multiusuario y RBAC de colecciones), la 0.8.5 (censura en la auditoría, eventos de copia de seguridad y restauración), la 0.11.0 (SSO por OIDC), la 0.11.1 (control de acceso por impresora) y la 0.11.4 (conservación del autor con sesiones de cookie), leídas el 22 de agosto de 2026. Notas de versión en este blog: v0.8.5, v0.11.0, v0.11.1. docs/known-limitations.mden el repositorio para la postura de red de confianza y el comportamiento deFORWARDED_ALLOW_IPS. Comprobado el 22 de agosto de 2026.- Las páginas principales de Fabman, 3DPrinterOS y SimplyPrint, consultadas por las categorías que sirven (gestión de socios y hardware de acceso, plataformas de flota gestionada). Consultadas el 22 de agosto de 2026.