- JavaScript 71.5%
- Go 28.3%
- Shell 0.2%
| bridge | ||
| deploy | ||
| docs | ||
| public | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| THIRD_PARTY_NOTICES.md | ||
| vite.config.js | ||
MumbWeb
Mumble en el navegador, con canales, chat y voz Opus. Una interfaz familiar, sin instalar nada en el equipo del usuario.
Captura de la demo local. Los nombres y mensajes son ejemplos; no hay conexión ni audio de un servidor público.
El cliente usa JavaScript, AudioWorklet y libopus WASM. El puente Go conecta WebSocket con Mumble por TLS y conserva los paquetes Opus, sin mezclarlos ni transcodificarlos. No hay framework de UI, fuentes externas ni CDN. El códec se carga al conectar.
Qué incluye
- Canales, chat público y privado, movimiento de usuarios con ratón, tacto o selector de canal, según permisos. En móvil, canales con ancho completo y conversación inferior plegable; en escritorio, ancho del chat ajustable.
- PTT sin activaciones accidentales al soltar Espacio, activación por voz con medidor y umbral, RNNoise opcional antes de Opus, volumen por usuario, susurros morados y escucha de canales adicionales.
- Tema automático, claro u oscuro; estadísticas agrupadas de usuario y servidor; imágenes externas mediante el puente, con descarga y memoria acotadas.
- Recepción mono/estéreo a 48 kHz, paquetes de hasta 120 ms y emisión ajustable de 6 a 400 kbps, dentro del presupuesto del servidor.
- Conexiones guardadas y preferencias locales. Las contraseñas y tokens no se guardan.
- Castellano, inglés, catalán y valenciano, elegidos a partir del idioma del navegador.
- Pasarela con catálogo y servidores públicos arbitrarios validados, cuotas configurables, certificado propio por cuenta, favoritos en el servidor y consola administrativa local.
El proyecto está en desarrollo. La matriz de cobertura distingue las funciones verificadas de las pendientes; todavía no tiene la cobertura del cliente oficial de escritorio. El análisis de alternativas explica las decisiones de arquitectura.
Probar en local
Necesitas Node.js 22.12+, npm y Go 1.24+, además de un servidor Mumble.
npm ci
npm run dev
En otra terminal, si Mumble tiene un certificado con CA y hostname válidos:
MUMBLE_HOST=mumble.example.net npm run bridge
Abre http://127.0.0.1:5173. Pulsa Conectar, indica el servidor y tu nombre. La pasarela local se configura automáticamente; puedes cambiarla en Opciones avanzadas. Explorar demo permite ver la interfaz sin servidor.
Para destinos públicos arbitrarios con certificado autofirmado, el diálogo muestra la huella SHA-256 antes de conectar y exige aceptarla explícitamente; una huella cambiada exige una nueva confirmación. Los destinos del catálogo conservan la política TLS del operador. La configuración del puente explica certificados, identidades y destinos autorizados.
Desplegar
La guía de despliegue incluye un servicio systemd, NGINX con HTTPS/WSS, cuotas por IP, restricciones de salida y monitorización con alertas. Los archivos de ejemplo están en deploy/.
La web y la pasarela pueden compartir origen: el usuario sólo ve servidor, nombre y contraseña. Admite invitados y cuentas opcionales con certificado Mumble individual y servidores guardados en el puente. El servidor Mumble conserva su autenticación y sus permisos. La guía de cuentas y consola explica su configuración.
Confía en el operador de la pasarela. El cifrado termina allí y vuelve a establecerse hacia Mumble: el operador puede acceder a voz, chat y credenciales. Utiliza un nombre alternativo y nunca una identidad administrativa compartida.
El modo público admite servidores públicos validados fuera del catálogo; puede cerrarse al catálogo con ALLOW_ARBITRARY_TARGETS=false. Comprobar que un servicio responde como Mumble no da permiso para usarlo ni evita abusos contra él. Las defensas limitan el riesgo; un servicio anónimo sigue necesitando supervisión y acuerdos con los administradores de destino. La guía explica los límites y los criterios para bloquear o retirar un servidor.
Desarrollo y pruebas
npm test
npm run test:bridge
npm run build
Las pruebas de interoperabilidad y navegador necesitan un servidor desechable; algunas crean canales y usan permisos administrativos. Las instrucciones y resultados están en verificación.
El protocolo vive en src/protocol/, el audio en src/audio/, la interfaz en src/ui.js y la pasarela en bridge/. Se conservan las licencias y procedencia del protocolo Mumble y de libopus en THIRD_PARTY_NOTICES.md.
Más detalle: uso y funciones · estadísticas y unidades · audio y límites de red · configuración del puente.
