En este podcast hablo de cómo combinar el servidor WebDAV con MQTT Y crear algo parecido a lo que serían los servicios o aplicaciones con multiusuarios.
Hace años que utilizo mi servidor WebDAV como base para todos mis servicios, y ahora tengo un montón de ellos funcionando de modo súper estable en el día a día. Si sacara de los logs el número de veces que me conecto al servidor WebDAV, sería increíble: todo lo hago ahí. Tengo desde mi dashboard, que fue una de las primeras cosas que hice, pasando por la aplicación de música, otra para escuchar la radio por streaming… tengo de todo. Y claro, las notas. También el blog del podcast: cambié el script de publicación y, en lugar de hacerlo con reverse-log, ahora lo hago desde una interfaz web, con todo el blog dentro del servidor WebDAV. Mis notas, las notas del programa, lo tengo todo ahí.
Mezclar servicios es súper interesante, y de eso va el episodio. Una de las ventajas del servidor WebDAV es que puedes crear una aplicación de notas de forma muy sencilla, o generarla con un prompt. Hace casi un año os hablé de Gemini 2.5 Pro —quedó pendiente grabar ese episodio—. Ya está disponible, aunque en modo de pago. Han salido un montón de versiones: ahora estamos por la 3.8 Flash, y las versiones Flash (la 3.7 y la 3.8) son una pasada; ya están al nivel de las versiones Pro de Gemini en desarrollo. Anthropic sigue siendo la reina en este aspecto, pero hoy en día Gemini lo hace todo muy bien, y además te permite hacer páginas muy grandes con mucho código y lo hace bastante bien. Las probabilidades de éxito son casi del 100%, cosa que antes no sucedía: antes había cosas que no funcionaban, o funcionaba una cosa y fallaba otra. Ahora todo lo que vas integrando va funcionando, y cuando quieres optimizar el código también lo optimiza muy bien; ahí se nota la mejora de verdad.
Con las notas, una de las cosas que puedes echar en falta… yo me decía: «qué lástima que esto no se puede hacer». Con el servidor WebDAV puedes abrir tus notas, editarlas, darle a guardar o configurar el autoguardado cada vez que modifiques el texto. Muy sencillo. Pero ¿qué pasa si quieres que dos usuarios editen simultáneamente la misma nota, como en Google Docs? Hay muchos servicios que hacen esto. El servidor WebDAV es lento: se puede hacer más o menos, pero no tiene la inmediatez de Google Docs. Puedes hacer que, al hacer un cambio, se guarde la nota actualizada, pero si hay dos usuarios editando y guardando casi al mismo tiempo, uno chafa la parte del otro. Yo escribo un párrafo, otro usuario escribe otro, y al guardar mi versión sobrescribo el suyo y se pierde. ¿Cómo solucionarlo? Quiero la sensación de Google Docs sin un servicio pesado: a mí me gustan los servicios ligeros. La solución es muy sencilla: MQTT. Sí, señor, por muy sorprendente que parezca.
MQTT permite suscribirse a los topics, que son como un canal. Está pensado principalmente para la domótica: diferentes dispositivos de tu casa suscritos a ese topic, enviando información y ejecutando acciones según lo que reciben. Puedes hacer mil cosas: que si llega una notificación de un detector de movimiento, se encienda una luz. Pues MQTT también sirve para esto: para dibujar el contenido de la página web. Creas la página, utilizas un topic y, como MQTT con muy pocos bytes es extremadamente ligero y rápido, todos los usuarios que editan esa nota se suscriben al topic y, tal cual vas escribiendo, ves dibujarse en tiempo real, de modo instantáneo, en todos los dispositivos. Después, la página puede guardar los cambios pasados unos cinco segundos (o de modo manual, aunque lo suyo es automático) en el servidor WebDAV. Así, WebDAV se encarga del almacenamiento y MQTT da la inmediatez. Lo estoy probando y es una flipada.
Esto en teoría también te quita de en medio las bases de datos. A mí me va el rollo del texto plano: que no haya que gestionar bases de datos ni nada de eso, que sea lo más fácil posible, como editar una nota en texto plano que, a medida que la editas, se va guardando vía MQTT en WebDAV. Al final, es información que recibe la página web y que no queda almacenada en el servidor MQTT, pero sí en el servidor WebDAV. No hay una base de datos donde acceder y ver lo que hiciste. Y ese es el objetivo. Llevo tres o cuatro días probándolo y funciona súper bien.
De las cosas que puedes hacer, lo que se te ocurra. Recuerdo un servicio open source bastante interesante, una especie de Excel open source. Me fui a Gemini 3.8 y le dije: «hazme una página SPA, una Single Page Application, con HTML, CSS y JavaScript, que sea una hoja de cálculo estilo Excel con las operaciones básicas» —luego lo puedes complicar más—. La idea era que, mediante MQTT, hubiera sincronización entre los usuarios para administrar entre varios esa hoja. Y fantástico.
Otra cosa que he hecho, aprovechando la inmediatez, es una aplicación de mensajería muy rudimentaria, pero bastante ingeniosa. Con un prompt de este estilo me dije: «voy a hacer una aplicación de mensajería». Hice una especie de clon del antiguo Twitter, donde podías enviar mensajes a diferentes usuarios y dejárselo a familiares. Ahí accedes, ves un preview de los artículos y, si compartes un vídeo de Twitter, se ve la vista previa; si compartes una URL de YouTube, aparece la viñeta, y demás.
Para los mensajes, ahí es donde cargas un servidor WebDAV. Funciona sin ningún problema, pero lo que hice fue guardar todos los mensajes en un archivo de texto plano en JSON. Al enviar un mensaje, la página web tiene que conectarse constantemente al servidor y mirar el archivo: si no se ha modificado, no pasa nada; si se ha modificado, descarga la versión del JSON. Además creé diferentes estados: cuando un usuario se conecta, el archivo cambia e indica que está en línea, y así con otras cosas. Pero la página está todo el rato conectándose cada cinco segundos, haciendo un GET, descargando y leyendo el archivo para comprobar si ha cambiado; y si alguien escribió un mensaje, hace un PUT y sube el JSON reescrito. Y esto es con un solo usuario, que ya consume ancho de banda y sobrecarga el servidor con peticiones. Imagínate cinco simultáneos en un grupo: muchas peticiones al servidor según el tamaño del archivo. Puedes particionarlo por días o incluso por horas para que no crezca, porque si metes el historial de un mes y el archivo llega a un mega, estarías descargando un mega a todos los usuarios cada cinco segundos. Y si dos usuarios envían un mensaje casi simultáneamente, habría mensajes que no aparecerían (hay métodos ingeniosos para resolverlo; ahora no recuerdo cómo lo hice, pero lo conseguí, y es muy complejo). Por las peticiones al servidor y el ancho de banda, no es interesante.
MQTT lo soluciona de forma ingeniosa. Te creas una página HTML, CSS y JavaScript donde van llegando los mensajes, y todos los usuarios los ven simultáneamente vía MQTT. La primera vez que abres la página, se conecta al servidor WebDAV y descarga el historial de mensajes; después, MQTT es el que va escribiendo los mensajes, no WebDAV, que queda por detrás haciendo copias de los cambios. Es un método muy interesante. No lo he testeado a fondo, pero entiendo que no es una solución para un millón de usuarios. Eso sí: es un proyecto rápido, sencillo, súper simple y privado. Lo puedes complicar un poco más cifrando la conexión, igual que existe HTTPS, puedes utilizar WSS, la conexión cifrada. Si lo pones en tu red local sin cifrar, todo el contenido va sin cifrar; si lo abres a la red exterior, hazlo de esta manera para que todo vaya cifrado y sin problema. Si vas a tener miles de usuarios, mejor una base de datos, pero para esto funciona perfecto.
Otra de las páginas que hice permite dibujar varios usuarios en el mismo dibujo, estilo la aplicación Paint de Windows. Gracias a MQTT, lo que se envía por el topic son las coordenadas con las que estás dibujando, de manera que se ve en tiempo real. La gracia es esa. A veces lo pruebo con el editor: escribo en el PC mirando la pantalla del móvil, y veo en tiempo real lo que estoy escribiendo. Con el dibujo todavía es más llamativo: tal cual dibujas, se muestra en el resto de dispositivos. Es una pasada.
Aquí dejo el podcast. Os lo recomiendo, porque acabará publicado en uno de los artículos del blog de . Aunque grabe poco con poca frecuencia, voy haciendo cosas y algunas las subo al blog, que está realmente vivo: no deja de ser parte de mis notas. Esto lo he anotado porque me parece interesante y quería compartirlo con vosotros; es algo poco frecuente en internet, yo no lo he visto. Es cuestión de darle vueltas a la cabeza y preguntar a la IA cómo hacerlo, y lo vas construyendo. Esa es una de las ventajas de la IA: no vas solo. Antes, para hacer cosas de este tipo, tenías que picar mucha piedra; hoy en día, gracias a la IA, en seguida te lo montas. Por ejemplo, con el servidor MQTT: lo había montado cuatro o cinco veces, pero le dices a la IA que te genere el Docker Compose y todos los archivos de configuración, y en tres minutos lo tienes montado y funcionando perfectamente. Luego, en tu página HTML, pones la dirección de tu servidor (también puedes usar servidores públicos, pero para más privacidad te montas el tuyo propio). Con la IA es un momento: le pasas la URL, le dices «conéctalo con este topic» y listo, funcionando a la primera. Es alucinante.
No me extiendo más. En próximos podcasts os hablaré de cómo he integrado parte de estas aplicaciones en mi dispositivo móvil: apps de Android que he hecho y cómo crear las tuyas propias, y también vía Termux, que es súper interesante. De hecho, me he montado vía Termux la publicación del podcast desde ahí, añadiendo la cuña de inicio, la música de inicio, la del final y demás. Eso me lo guardo para otro podcast. Venga, un saludo a todos y nos vamos a escuchando.
Publicado el lunes, 28 de septiembre de 2026
Powered by wdblog

Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.