Tu granja de impresión 3D, desde el móvil
PrintStash se instala como PWA: la granja en casa o fuera, por WireGuard o Tailscale, avisos por ntfy o Telegram. Sin conexión, la carcasa, no la biblioteca.
Sí, en el sofá y también fuera de casa, aunque lo segundo requiere una decisión de red. PrintStash se instala en el móvil como PWA con la lista de impresoras, la biblioteca y los controles de impresión. Es local-first y no trae ningún relé: fuera de casa te conectas por WireGuard, Tailscale o un proxy inverso endurecido.
Dos cosas determinan hasta dónde llega eso. Instalada no significa sin conexión: el service worker
guarda en caché la carcasa de la aplicación y salta deliberadamente cada petición bajo /api/, así
que con el servidor inaccesible obtienes una ventana y ningún dato. Y la app instalada no tiene web
push ni vista de cámara, así que el móvil que te avisa de que una impresión ha terminado se está
enterando por el servidor a través de ntfy, Telegram, Discord o un webhook.
Instalarla
El requisito con el que la gente tropieza es HTTPS. Los service workers solo se registran en un
contexto seguro, así que un PrintStash accesible en http://10.0.0.20:3000 funcionará bien en un
navegador y nunca se instalará. Ponlo detrás de TLS primero;
PrintStash detrás de un proxy inverso con TLS cubre un montaje que
funciona con un nombre de host privado.
Después es el flujo normal del navegador. En Android, Chrome ofrece un aviso de instalación o una entrada Instalar aplicación en el menú. En iOS, abre el sitio en Safari, luego Compartir y Añadir a pantalla de inicio. En el escritorio, Chrome y Edge muestran un control de instalación en la barra de direcciones. El manifiesto pide una ventana independiente, así que la copia instalada se abre sin pestañas ni barra de direcciones.
Qué funciona de verdad en un móvil
La interfaz tiene superficies móviles reales en lugar de un diseño de escritorio apretujado: una barra de navegación inferior que cubre la bóveda, las importaciones pendientes, las impresoras y, para quien administra, los perfiles.
Las tareas que encajan en un móvil son las que haces al pasar junto a las máquinas. Ver qué está haciendo cada impresora, pausar o cancelar algo que va mal, arrancar una revisión ya verificada, echar un ojo al historial reciente de impresiones. Navegar y buscar en la biblioteca también funciona, ya que los filtros y las vistas guardadas van por URL, así que una vista filtrada se puede guardar como favorita en el móvil igual que en un escritorio.
Lo que va peor en un móvil es el trabajo que necesita píxeles: comparar dos revisiones de G-code una al lado de la otra, leer los ajustes del slicer ya analizados en una tabla ancha y el visor de modelos, que es un lienzo 3D en un aparato que preferiría estar desplazando texto. Subir archivos es posible pero incómodo, porque sacar una malla del almacenamiento de un móvil es peor experiencia que arrastrarla desde una carpeta del escritorio.
Qué significa aquí sin conexión
Aquí conviene ser preciso, porque “PWA con soporte sin conexión” sugiere más de lo que esta entrega.
El service worker precachea la carcasa de la aplicación: el documento raíz, una página sin conexión,
el manifiesto y los iconos. Los recursos estáticos del mismo origen se sirven desde caché y se
refrescan en segundo plano. Las navegaciones prueban primero la red y recurren a la carcasa en caché.
Todo lo que hay bajo /api/ queda excluido de la caché por completo. Eso es una decisión, no un
descuido: un estado de impresora caducado es peor que ningún estado de impresora.
Así que abrir la app instalada con el servidor inaccesible te lleva a la propia página sin conexión de PrintStash, que lo dice igual: las pantallas en caché siguen disponibles, y los cambios en impresoras y biblioteca necesitan conexión. No puedes hojear tu lista de modelos en un avión. Lo que consigues es una app que se vuelve a abrir limpiamente en lugar de mostrar una página de error del navegador, y que revive cuando revive el servidor.
Que te avisen cuando algo termina
Como la app instalada no tiene canal push, las notificaciones salen del servidor hacia algo que sí lo tiene. PrintStash envía eventos de impresión completada, fallida y cancelada, además de impresora desconectada, a webhooks, Discord, Telegram o ntfy. Para un móvil, ntfy es la respuesta directa: instala la app, suscríbete a un tema y el aviso llega esté PrintStash abierto o no.
La entrega es al menos una vez, así que el receptor debería deduplicar por la clave de idempotencia, y los destinos privados, de loopback y de enlace local están bloqueados por la protección contra SSRF. La guía de notificaciones tiene la configuración de cada destino.
Comprobar la granja cuando estás fuera
Un móvil en la misma wifi llega al servidor directamente. Fuera de casa, PrintStash es local-first y no tiene ningún relé propio, así que comprobar la granja significa traerte el servidor hasta donde estés: o una VPN de vuelta a tu red, o un proxy inverso que expusiste a conciencia. Esa decisión es de seguridad antes que de comodidad.
La VPN es la opción por defecto más segura para una granja a la que todavía llegas físicamente. Con WireGuard o Tailscale en el móvil, PrintStash funciona exactamente igual que en casa: la lista de impresoras con temperaturas y progreso, pausar o cancelar un trabajo, arrancar una revisión ya verificada, despachar desde la cola de flota, buscar en la biblioteca y el historial de costes en gramos medidos que devuelve Moonraker.
La alternativa es un proxy inverso endurecido, que encaja con la tableta compartida del taller, la que no debería guardar credenciales de túnel. Exponerlo en público cambia superficie de ataque por comodidad, y el modelo de seguridad de PrintStash da por hecha una red de confianza, así que TLS de verdad, autenticación por delante y una instancia parcheada son el mínimo. PrintStash detrás de un proxy inverso con TLS recorre el montaje, y el modelo de seguridad de red de confianza expone qué da por hecho el software sobre el sitio donde se ejecuta.
Los avisos no cambian fuera de la red. Los eventos de impresión terminada, fallida y cancelada, y de impresora desconectada, salen del servidor hacia ntfy, Telegram, Discord o un webhook, así que el móvil se entera de lo que pasa en la granja esté donde esté; la guía de notificaciones cubre cada destino.
Un límite dicho sin adornos, porque las apps centradas en la monitorización empiezan por el suyo: PrintStash no tiene streams de cámara, ni web push, ni detección de fallos. Si lo que haces desde el sofá es sobre todo mirar impresiones, Obico, OctoEverywhere o Mobileraker hacen eso bien y merece la pena tenerlos al lado. Lo que no llevan es la capa que hay detrás del estado: revisiones con veredicto de verificada, la cola de flota con enrutado a la menos ocupada y controles de liberación, detección de duplicados e historial de coste por impresión. Cuando el recado desde la calle es reiniciar un trabajo atascado o mandar el laminado correcto a una máquina libre, esa es la capa que responde, y cabe en el mismo móvil.
Preguntas frecuentes
¿Es una app de verdad o solo una web con un icono?
Es una web con un manifiesto y un service worker, que es lo que es una aplicación web progresiva. La diferencia práctica con un marcador es que se abre en una ventana independiente sin el marco del navegador, mantiene su propio icono y su entrada en el conmutador de tareas, y vuelve a abrir su carcasa en caché en lugar de una página de error cuando el servidor no responde. La diferencia práctica con una app nativa es que no hay canal de notificaciones push, ni sincronización en segundo plano, ni distribución por tienda de aplicaciones. Para una herramienta autoalojada a la que solo llega tu red, ese intercambio suele ser el correcto, ya que una app nativa seguiría necesitando la misma VPN o el mismo proxy para hablar con tu servidor.
¿Puedo consultar mis impresoras sin conexión al servidor?
No. El estado de las impresoras viene de tu servidor hablando con tus impresoras, y el service worker explícitamente no cachea las respuestas de la API, así que no hay ninguna copia caducada que mostrarte. Sin conexión obtienes la carcasa de la aplicación y una página que dice que la conexión se ha ido. Este es el comportamiento correcto para una herramienta de estado: una temperatura en caché de hace cuarenta minutos es peor que un fallo honesto, porque actuarías sobre ella.
¿Cómo consigo una notificación en el móvil cuando termina una impresión?
Mándala por ntfy, Telegram, Discord o un webhook, configurado en los ajustes de notificación de PrintStash, en lugar de esperar que te avise la app instalada. ntfy es lo que mejor encaja en un móvil porque es una app pequeña de suscribirse a un tema que funciona con un servidor autoalojado. PrintStash emite eventos de impresión completada, impresión fallida, impresión cancelada e impresora desconectada, y la entrega es al menos una vez, así que un receptor que actúe sobre el mensaje debería deduplicar por la clave de idempotencia.
¿Funciona en un iPad o en una tableta de taller?
Sí, y una tableta en la pared es uno de sus mejores usos, ya que el modo de pantalla independiente te da una lista de impresoras a pantalla completa sin el mobiliario del navegador. Se aplican las mismas reglas: HTTPS para que la instalación funcione, y la tableta tiene que llegar al servidor. En una tableta compartida, ten cuidado con qué cuenta se queda con la sesión abierta, porque el control de acceso por impresora decide si quien pasa por delante puede arrancar trabajos o solo mirarlos.
Fuentes
- Los archivos
frontend/public/manifest.webmanifest,frontend/public/sw.js,frontend/public/offline.htmlyfrontend/src/lib/pwa.tsde PrintStash en el repositorio para el comportamiento de instalación, la carcasa en caché y la exclusión de las peticiones a la API de la caché. Comprobado el 19 de agosto de 2026. - Las notas de la versión v0.11.0 para la carcasa instalable sin conexión, y la guía de notificaciones para los destinos de entrega.