Instalación de Mumble: Servidor de Voz con Baja Latencia
Mumble es un sistema de chat de voz de código abierto orientado al gaming y la comunicación en tiempo real, conocido por su extraordinariamente baja latencia (inferior a 30ms), su cifrado de extremo a extremo con TLS y su eficiente uso del ancho de banda gracias al códec Opus. Murmur, el componente servidor de Mumble, es ligero, altamente configurable y soporta miles de usuarios simultáneos en hardware modesto. Esta guía cubre la instalación de Murmur en Linux, la gestión de canales y permisos (ACL), la autenticación por certificado y la optimización de la calidad de audio.
Requisitos Previos
- Ubuntu 20.04/22.04, Debian 11+ o CentOS 8+/Rocky Linux 8+
- 256 MB de RAM mínimo (Murmur es muy ligero)
- Puerto 64738 UDP/TCP (puerto por defecto de Mumble)
- Latencia de red baja hacia los usuarios (importante para la experiencia de voz)
Instalación de Murmur (Servidor Mumble)
Instalación en Ubuntu/Debian
# Instalar Mumble Server (Murmur) desde los repositorios
sudo apt update && sudo apt install -y mumble-server
# El instalador configura automáticamente el servicio systemd
sudo systemctl status mumble-server
Instalación en CentOS/Rocky Linux
# Habilitar EPEL
sudo dnf install -y epel-release
sudo dnf install -y mumble-server
sudo systemctl enable mumble-server --now
Instalación desde el binario oficial (versión más reciente)
# Descargar el paquete del servidor oficial
MURMUR_VERSION=1.5.634
wget "https://github.com/mumble-voip/mumble/releases/download/v${MURMUR_VERSION}/mumble-server_${MURMUR_VERSION}_amd64.deb" -P /tmp
sudo dpkg -i /tmp/mumble-server_${MURMUR_VERSION}_amd64.deb
sudo apt install -f # Resolver dependencias si es necesario
Configuración del Servidor
# El archivo de configuración principal
sudo nano /etc/mumble-server.ini
; /etc/mumble-server.ini
; Dirección y puerto de escucha
host=0.0.0.0
port=64738
; Número máximo de usuarios simultáneos
users=100
; Tamaño máximo del texto de bienvenida
welcometextlength=5000
; Texto de bienvenida mostrado al conectar
welcometext=<br />Bienvenido al servidor de voz de <b>Mi Empresa</b>.<br />Por favor, respeta las normas de comunicación.
; Ancho de banda máximo por usuario (bps)
bandwidth=72000
; Nombre del servidor visible a los clientes
registerName=Servidor de Voz - Mi Empresa
; Contraseña del servidor (dejar vacío para acceso público)
serverpassword=
; Certificado SSL del servidor (si tienes uno propio)
; sslCert=/etc/ssl/certs/mumble-server.crt
; sslKey=/etc/ssl/private/mumble-server.key
; Directorio de base de datos SQLite
database=/var/lib/mumble-server/mumble-server.sqlite
; Directorio de logs
logfile=/var/log/mumble-server/mumble-server.log
logdays=90
; Usuario del sistema para ejecutar el proceso
uname=mumble-server
; Número máximo de caracteres por mensaje de texto
textmessagelength=5000
; Activar/desactivar mensajes de texto (chat)
allowhtml=true
; Intervalo de ping a los clientes (en ms)
timeout=30
; Activar el sistema de registro de acceso de usuarios
; Guarda historial de conexiones y desconexiones
rememberchannel=true
; Calidad del audio para la grabación del servidor
opuslimit=0
; Configuración de la funcionalidad Ice (para gestión remota)
ice=Ice.Default.EncodingVersion=1.0
; Superusuario - password se establece con: murmurd -supw TU_CONTRASEÑA
; (Dejar vacío en el archivo ini, nunca poner la contraseña aquí)
# Establecer la contraseña del SuperUser (administrador root del servidor)
sudo murmurd -supw TU_CONTRASEÑA_ADMIN_SEGURA
# O en sistemas modernos:
sudo mumble-server -supw TU_CONTRASEÑA_ADMIN_SEGURA
# Reiniciar el servicio para aplicar la configuración
sudo systemctl restart mumble-server
# Verificar que el puerto está escuchando
sudo ss -unlp | grep 64738
Configurar el firewall
# Abrir el puerto de Mumble
sudo ufw allow 64738/tcp
sudo ufw allow 64738/udp
sudo ufw reload
Gestión de Canales y Grupos
Los canales y grupos se gestionan principalmente desde el cliente Mumble conectado como SuperUser o administrador. La estructura típica de un servidor de gaming o empresa:
Servidor Raíz
├── Sala de Espera
├── Reuniones Generales
├── Equipos
│ ├── Equipo Backend
│ ├── Equipo Frontend
│ └── Equipo DevOps
├── Gaming
│ ├── Squad 1
│ ├── Squad 2
│ └── Spectators
└── AFK
Para gestionar canales via la CLI de Murmur (si Ice está habilitado) o directamente desde el cliente:
- Conecta con el cliente Mumble usando el usuario SuperUser y la contraseña establecida
- Haz clic derecho en el servidor → Edit para modificar propiedades
- Haz clic derecho en un canal → Add sub-channel para crear subcanales
- Clic derecho en el canal → Edit para configurar nombre, descripción y posición
Sistema de Permisos ACL
Los ACL (Access Control Lists) de Mumble son el sistema de permisos más potente de la plataforma, permitiendo control granular sobre quién puede hablar, escibir, administrar canales, etc.
Los permisos se definen en cascada y se pueden aplicar a:
- Users: usuarios individuales registrados en el servidor
- Groups: grupos de usuarios predefinidos (@all, @auth, @in, etc.)
Grupos especiales incorporados:
@all: todos los usuarios (incluyendo no registrados)@auth: usuarios registrados (con certificado/cuenta)@strong: usuarios autenticados con contraseña fuerte@in: usuarios actualmente en el canal@sub: usuarios en subcanales
Permisos disponibles:
| Permiso | Descripción |
|---|---|
Traverse | Puede ver el canal en el árbol |
Enter | Puede entrar al canal |
Speak | Puede hablar en el canal |
Whisper | Puede susurrar a usuarios específicos |
MuteDeafen | Puede silenciar/ensordecer a otros |
Move | Puede mover usuarios a otros canales |
MakeChannel | Puede crear subcanales |
LinkChannel | Puede enlazar canales |
TextMessage | Puede enviar mensajes de texto |
Kick | Puede expulsar usuarios del servidor |
Ban | Puede banear usuarios |
Register | Puede registrar usuarios en el servidor |
RegisterSelf | Puede registrarse a sí mismo |
Write ACL | Puede modificar los ACL del canal |
Configuración típica de ACL para un servidor empresarial:
Desde el cliente Mumble (clic derecho en el canal → Edit → ACL):
# Canal raíz - Configuración base
Grupo: @all
- Allow: Traverse
- Deny: Enter, Speak
Grupo: @auth (usuarios registrados)
- Allow: Enter, Speak, TextMessage
# Canal privado de un equipo
Grupo: @all
- Deny: Traverse
Grupo: equipo-backend (grupo personalizado)
- Allow: Traverse, Enter, Speak, MakeChannel
Autenticación por Certificado
Mumble usa certificados de cliente para identificar usuarios de forma única y segura:
# Los usuarios generan su certificado desde el cliente Mumble:
# Mumble → Configuration → Certificates → Create new certificate
# O importar un certificado PEM existente
# El servidor puede requerir autenticación por certificado (sin contraseña):
# En mumble-server.ini:
; Forzar autenticación por certificado para ciertos canales via ACL
; Usar el grupo @auth que solo incluye usuarios con certificado registrado
# Para registrar un usuario en el servidor con certificado:
# 1. El usuario conecta al servidor
# 2. Va a Server → Register en el cliente Mumble
# 3. El usuario queda registrado y asociado a su certificado
# Ver usuarios registrados en el servidor (via sqlite3)
sudo sqlite3 /var/lib/mumble-server/mumble-server.sqlite \
"SELECT id, name, lastchannel FROM players ORDER BY lastchannel;"
# Ver baneos activos
sudo sqlite3 /var/lib/mumble-server/mumble-server.sqlite \
"SELECT address, reason, start, duration FROM bans;"
Gestión Remota con Ice
Ice permite gestionar el servidor de forma programática via API. Habilítalo en mumble-server.ini:
; Habilitar Ice para gestión remota
ice="tcp -h 127.0.0.1 -p 6502"
icesecretread=password_readonly
icesecretwrite=password_readwrite
# Instalar el framework Ice
sudo apt install -y python3-zeroc-ice
# Script Python básico para gestión via Ice
python3 <<'EOF'
import Ice
import sys
Ice.loadSlice('/usr/share/mumble-server/Murmur.ice')
import Murmur
props = Ice.createProperties(sys.argv)
props.setProperty("Ice.ImplicitContext", "Shared")
idd = Ice.InitializationData()
idd.properties = props
ic = Ice.initialize(idd)
ic.getImplicitContext().put("secret", "password_readwrite")
base = ic.stringToProxy("Meta:tcp -h 127.0.0.1 -p 6502")
meta = Murmur.MetaPrx.checkedCast(base)
# Obtener todos los servidores virtuales
servidores = meta.getAllServers()
for srv in servidores:
print(f"Servidor ID: {srv.id()}, Usuarios: {len(srv.getUsers())}")
# Listar canales
canales = srv.getChannels()
for id_canal, canal in canales.items():
print(f" Canal: {canal.name}")
ic.destroy()
EOF
Calidad de Audio y Optimización
; Parámetros de calidad de audio en mumble-server.ini
; Ancho de banda máximo por usuario
; 72000 = 72 kbps (buena calidad, poco ancho de banda)
; 320000 = 320 kbps (calidad máxima)
bandwidth=72000
; El codec Opus se usa automáticamente en Mumble 1.2.4+
; Es superior a CELT y Speex en todos los aspectos
; Para servidores gaming donde la latencia es crítica:
; Configurar en el cliente Mumble los siguientes valores:
; Audio Input → Quality: Low (reduce latencia)
; Audio Input → Frames per packet: 2 (mínima latencia)
; Audio Output → Jitter buffer: Minimum
# Optimizaciones del sistema operativo para baja latencia de red
# Aumentar el tamaño del buffer de red
echo "net.core.rmem_max = 26214400" | sudo tee -a /etc/sysctl.conf
echo "net.core.wmem_max = 26214400" | sudo tee -a /etc/sysctl.conf
echo "net.core.rmem_default = 1048576" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# Configurar QoS para priorizar el tráfico UDP de Mumble
sudo iptables -t mangle -A OUTPUT -p udp --dport 64738 -j DSCP --set-dscp-class EF
Configuración recomendada en el cliente para gaming
- Configuration → Audio Wizard: ejecutar el asistente
- Input → Transmission: activar Push-to-Talk para gaming
- Input → Quality: High o Very High
- Network → Maximum bandwidth: ajustar según la conexión
- Audio Output → Jitter buffer: mínimo posible
Solución de Problemas
Murmur no arranca:
# Ver logs detallados
sudo journalctl -u mumble-server -f
sudo tail -50 /var/log/mumble-server/mumble-server.log
# Problemas comunes: puerto ocupado
sudo ss -tlnp | grep 64738
# Verificar permisos del directorio de datos
ls -la /var/lib/mumble-server/
sudo chown -R mumble-server:mumble-server /var/lib/mumble-server/
Los usuarios no pueden conectar:
# Verificar que el puerto UDP está abierto (crucial para Mumble)
sudo ufw status | grep 64738
# Probar la conectividad UDP desde un cliente externo
# En el cliente Mumble: Server → Connect → probar la conexión
# Ver los logs del servidor mientras se intenta la conexión
sudo tail -f /var/log/mumble-server/mumble-server.log
Mala calidad de audio (cortes, eco, ruido):
# El problema de cortes suele ser de latencia de red, no del servidor
# Verificar el jitter de la conexión del usuario:
ping -c 100 ip-del-usuario | tail -5
# Suprimir eco y ruido en el cliente (no en el servidor):
# Configuration → Audio Output → Activate echo cancellation
# Configuration → Audio Processing → Enable noise suppression
El SuperUser no puede autenticarse:
# Restablecer la contraseña del SuperUser
sudo systemctl stop mumble-server
sudo murmurd -supw NUEVA_CONTRASEÑA
sudo systemctl start mumble-server
Conclusión
Mumble/Murmur es la solución ideal para comunicación de voz en tiempo real cuando la latencia y la privacidad son prioritarias, siendo especialmente popular en entornos de gaming competitivo y equipos remotos que necesitan comunicación fluida sin depender de servicios en la nube. El sistema ACL granular permite construir jerarquías de permisos complejas que se adaptan perfectamente a estructuras organizativas con múltiples equipos y niveles de acceso. Con los ajustes de audio correctos en cliente y servidor, Mumble supera consistentemente a soluciones como Discord o TeamSpeak en latencia y calidad de voz.


