Cómo crear un servidor Wowza Streaming Engine en VPS Linux
Tutorial técnico para instalar Wowza Streaming Engine en VPS Ubuntu, configurar la aplicación live RTMP, transmuxing HLS y abrir los puertos correctos en el firewall.
Wowza Streaming Engine es un servidor de medios Java que entrega ingesta RTMP, RTSP y SRT, transmuxa hacia HLS/DASH y graba streams en vivo en archivo — todo dentro de un único proceso. Quien está saliendo de un SaaS como Wowza Video, Mux o Vimeo Livestream suele llegar a él buscando previsibilidad de coste: a partir de cien horas de transmisión al mes, mantener infraestructura propia sale drásticamente más barato que pagar por minuto consumido.
Este tutorial es para quien opera una plataforma de streaming, OTT, iglesia con transmisiones regulares o agencia que produce lives para clientes y quiere un origin server propio corriendo en VPS Linux. Vas a salir con Wowza instalado en Ubuntu 24.04, una aplicación live configurada para recibir publicación RTMP desde OBS y entregar HLS a los viewers, con el firewall cerrado en todo lo que no necesita estar abierto.
Tiempo estimado de ejecución: 35 a 50 minutos, contando la descarga del instalador (~280 MB) y el primer arranque del motor.
Prerrequisitos
VPS con Ubuntu Server 24.04 LTS, 4 vCPU, 8 GB de RAM y 60 GB de disco como punto de partida realista. Conexión SSH con usuario sudo activo. Cuenta gratuita registrada en wowza.com con licencia trial de 30 días generada (formato EDU-... o ENG-...). Dominio propio apuntando al IP de la VPS es opcional pero recomendado para HTTPS en la reproducción.
El motor consume RAM proporcional al número de conexiones simultáneas y chunks en buffer. Servidores con menos de 4 GB empiezan a hacer swap cuando la audiencia pasa de 200 viewers HLS, lo que mata la latencia percibida. Disco SSD no es negociable — HDD traba el transmuxer cuando ejecutas grabación simultánea.
1935 1935 (misma) o 80/443 8088 /usr/local/WowzaStreamingEngine Preparar el sistema
Antes de descargar el instalador, deja la VPS en el estado mínimo para correr un servicio Java de larga duración — paquetes actualizados, swap configurado y timezone correcto para los logs.
Actualiza el índice de paquetes y aplica los upgrades pendientes:
sudo apt update && sudo apt upgrade -yLas imágenes base de cloud suelen venir con kernel atrasado. Aplicar el upgrade antes de instalar Wowza evita que tengas que reiniciar el motor poco después.
Instala las utilidades básicas que el tutorial va a usar:
sudo apt install -y curl wget unzip ufw htophtop ayuda a depurar el uso de CPU durante el transcoding; ufw es el firewall que vamos a configurar al final.
Confirma que la VPS tenga al menos 2 GB de swap configurado:
swapon --show
free -hSi no hay swap (salida vacía), crea 4 GB:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabEl swap no es sustituto de RAM, pero evita el OOM kill de la JVM en picos de audiencia.
Descargar e instalar Wowza
El instalador oficial es un shell script auto-extraíble que detecta la distro y crea el usuario de servicio automáticamente. La versión actual estable es 4.9.x; el enlace de descarga se genera dentro de la cuenta Wowza después de que aceptes los términos de licencia.
Inicia sesión en wowza.com, ve a Downloads, copia el enlace directo del .deb o del shell installer para Linux y descárgalo en la VPS:
cd /tmp
wget -O wowza-installer.deb "https://www.wowza.com/downloads/WowzaStreamingEngine-4-9-x/WowzaStreamingEngine-4.9.x-linux-x64-installer.deb"Sustituye la URL por el enlace real generado en tu cuenta — incluyen un token de autenticación en la query string.
Instala el paquete:
sudo dpkg -i wowza-installer.debEl instalador te pide aceptar la EULA, elegir la contraseña de admin del Streaming Manager y pegar la clave de licencia trial. Usa una contraseña fuerte generada — la vas a necesitar para abrir el panel web.
La contraseña del usuario admin del Streaming Manager queda registrada en /usr/local/WowzaStreamingEngine/conf/admin.password en hash, pero el instalador NO la muestra después. Si la pierdes, necesitas ejecutar sudo /usr/local/WowzaStreamingEngine/bin/setpassword.sh para restablecerla.
Habilita e inicia los dos servicios (engine + manager):
sudo systemctl enable --now WowzaStreamingEngine
sudo systemctl enable --now WowzaStreamingEngineManagerEl servicio principal es el motor que procesa streams; el manager es el panel web administrativo en el puerto 8088.
Confirma que ambos arrancaron sin error:
sudo systemctl status WowzaStreamingEngine
sudo systemctl status WowzaStreamingEngineManagerBusca active (running) en verde. Si aparece failed, lee el log en /usr/local/WowzaStreamingEngine/logs/wowzastreamingengine_access.log — casi siempre es licencia inválida o puerto ocupado.
Configurar la aplicación live
Wowza viene con una aplicación llamada live preconfigurada para ingesta RTMP y reproducción HLS. En producción creas aplicaciones separadas para cada caso (live, vod, grabacion) con configuraciones propias. Para empezar, vamos a validar la live por defecto.
Abre el Streaming Manager en el navegador:
http://IP_DE_LA_VPS:8088/enginemanagerInicia sesión con el usuario admin definido en la instalación. Vas a caer en la home con el estado del servidor, uptime y conexiones activas (cero, por ahora).
En el menú lateral, haz clic en Applications y selecciona live. En la pestaña Properties, confirma que:
- Application Type esté en
Live - Streaming Type esté en
Live Single Server - Playback Types tenga HLS, MPEG-DASH y RTMP marcados
Guarda con Save (esquina superior derecha) y haz clic en Restart Application si te lo solicita.
En la pestaña Incoming Security, ajusta el modo a Open (no authentication required) solo para pruebas iniciales. En producción cámbialo a Username/Password required for all publishing y registra publishers en Server > Source Authentication.
Sin autenticación de publishing, cualquier persona que descubra el IP y el nombre de la aplicación puede inyectar stream — esto es un vector clásico de abuso en servidor expuesto.
Un servidor Wowza con publishing abierto en internet pública es una invitación a que el nombre de tu aplicación sea usado por terceros para distribuir contenido pirata. Activa siempre la autenticación antes de publicar el IP fuera de tu equipo.
Liberar los puertos en el firewall
El motor escucha en varios puertos, pero solo necesitas abrir los que se acceden externamente. UFW es la forma más limpia de configurar esto en Ubuntu.
Define las reglas por defecto y libera SSH primero (para no quedarte bloqueado fuera):
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcpLibera el puerto RTMP de ingesta y reproducción:
sudo ufw allow 1935/tcpEl puerto 1935 sirve tanto para publicación RTMP como para reproducción HLS vía HTTP-on-RTMP — Wowza multiplexa ambos en el mismo socket.
Libera el Streaming Manager solo para tu IP de admin (no lo dejes abierto a internet):
sudo ufw allow from TU.IP.AQUI to any port 8088 proto tcpSustituye TU.IP.AQUI por el IP fijo desde donde administras. Para IPs dinámicos, considera usar VPN o un túnel SSH en lugar de abrir el puerto.
Activa el firewall:
sudo ufw enable
sudo ufw status verboseLa confirmación te pide escribir y. Verifica que la salida muestre todas las reglas esperadas antes de cerrar la sesión SSH.
Verificación — publicar un stream de prueba
Para confirmar que todo funciona, usa OBS Studio en tu escritorio para publicar un stream de prueba y abre la reproducción HLS en un player.
En OBS, ve a Settings > Stream y configura:
- Service: Custom
- Server:
rtmp://IP_DE_LA_VPS:1935/live - Stream Key:
miPrueba1
Haz clic en Start Streaming. En el Streaming Manager, en Applications > live > Incoming Streams, deberías ver miPrueba1 aparecer con bitrate y FPS reales en pocos segundos.
Abre la reproducción HLS en VLC o en un player web:
http://IP_DE_LA_VPS:1935/live/miPrueba1/playlist.m3u8La latencia típica queda entre 20 y 40 segundos con chunks de 10s. Para latencia menor, configura LL-HLS en la pestaña Stream Files de la aplicación — exige chunkDurationTarget=2 y cliente compatible.
Resolución de problemas
El stream aparece en el manager pero el player no carga
Casi siempre es firewall u orden de inicialización. Confirma que el puerto 1935 esté abierto tanto para TCP entrada como salida en el host del player. En redes corporativas, RTMP/HLS sobre puerto 1935 a veces es bloqueado — prueba con 3G/4G del móvil para descartar.
CPU al 100% durante la transmisión
Probablemente activaste transcoding adaptativo sin darte cuenta. Ve a Applications > live > Transcoder y desactívalo si no lo necesitas. Si realmente lo necesitas, separa ingesta de transcoding en servidores diferentes.
Error “license expired” después de 30 días
La trial expiró. Compra una licencia Perpetual o Subscription en wowza.com, ve a Server > Licenses en el manager, pega la nueva clave y reinicia el motor con sudo systemctl restart WowzaStreamingEngine.
Próximos pasos
Con el motor en línea, hay varios caminos para evolucionar la operación:
- Configura HTTPS en la reproducción usando Let’s Encrypt delante de Wowza con un proxy reverso, para eliminar el warning de mixed content en sitios HTTPS.
- Habilita la grabación automática de las publicaciones en Applications > live > Stream Recorders, generando MP4s para archivo de VOD.
- Implementa autenticación de publishing con módulo personalizado o vía SecureToken para impedir el uso indebido de tu ingesta.
- Si la audiencia crece más allá de lo que una VPS soporta, separa origin (Wowza) de delivery en CDN — Cloudflare Stream, Bunny.net o AWS CloudFront aceptan HLS como origen.
Si vas a poner esto en producción y necesitas servidor con IP latinoamericano, baja latencia para viewers de la región y ancho de banda dimensionado para streaming sostenido, VPS Hostini entrega tráfico sin cobro por GB y snapshots diarios, que ayudan mucho cuando una configuración nueva rompe un stream en vivo.
Preguntas frecuentes
¿La licencia trial de Wowza sirve para poner en producción?
La trial es válida por 30 días y muestra marca de agua en los streams, además de limitar las conexiones simultáneas. Para producción real necesitas una licencia Perpetual o Subscription emitida por Wowza y registrada en la consola en Server > Licenses. Después del plazo, el motor sigue arrancando pero rechaza publicaciones y reproducción.
¿Cuál es la diferencia entre Wowza Streaming Engine y Wowza Video (Cloud)?
Wowza Video es el SaaS gestionado — pagas por minuto y no tocas el servidor. Streaming Engine es el software autoalojado que instalas en una VPS o baremetal. Engine te da control total (módulos Java personalizados, transmuxing fino, DVR, grabación automática) con coste predecible por servidor; Video te quita el trabajo operativo pero escala caro.
¿Cuántos espectadores simultáneos aguanta una VPS media?
Para transmuxing puro RTMP → HLS sin transcoding, una VPS con 4 vCPU y 8 GB de RAM atiende 800-1500 viewers HLS según el bitrate. Si activas transcoding adaptativo (una entrada 1080p convirtiéndose en 3 renditions), el cuello de botella pasa a la CPU y cada rendition consume 1-2 vCPU sostenidos. Para transcoding a escala, baremetal compensa.
¿Por qué la transmisión se traba aunque sobre ancho de banda?
Tres causas comunes: chunkDurationTarget de HLS demasiado bajo (usa 6-10s, no 2s), bitrate del encoder mayor que el upload real de la fuente y ausencia de keyframe cada N segundos. HLS exige keyframe al inicio de cada segmento — en OBS configura el keyframe interval igual a la duración del chunk.
¿Puedo poner Wowza detrás de Cloudflare?
RTMP en el puerto 1935 no pasa por Cloudflare HTTP — publicas directo al IP del servidor o vía subdominio con proxy desactivado (DNS only). En cambio la reproducción HLS vía HTTPS (puerto 443) sí puede pasar por CDN normalmente. En producción seria, separa el servidor de ingesta (origin) del de delivery (edges CDN) para escalar viewers sin castigar al motor.
¿Wowza necesita Java instalado por separado en Ubuntu?
No. El instalador oficial empaqueta un JRE en /usr/local/WowzaStreamingEngine/java e ignora cualquier Java del sistema. Si ya tienes OpenJDK por otro motivo, déjalo en paz — apuntar Wowza a otro Java sin probar suele romper módulos nativos.