How to Set Up Wowza Streaming Engine on a Linux VPS

Technical walkthrough to install Wowza Streaming Engine on an Ubuntu VPS, configure the live RTMP application, enable HLS transmuxing, and open the right firewall ports.

Wowza Streaming Engine is a Java media server that handles RTMP, RTSP, and SRT ingest, transmuxes to HLS/DASH, and records live streams to file — all inside a single process. Teams leaving a SaaS like Wowza Video, Mux, or Vimeo Livestream usually end up here for predictable cost: past roughly one hundred broadcast hours per month, running your own infrastructure becomes drastically cheaper than paying per minute consumed.

This tutorial is for anyone running a streaming platform, OTT service, church with regular broadcasts, or an agency producing client live streams who wants their own origin server on a Linux VPS. You will finish with Wowza installed on Ubuntu 24.04, a live application configured to receive RTMP from OBS and deliver HLS to viewers, with the firewall closed on everything that does not need to be open.

Estimated execution time: 35 to 50 minutes, including the installer download (~280 MB) and the first engine boot.

Prerequisites

What you need before starting

A VPS with Ubuntu Server 24.04 LTS, 4 vCPUs, 8 GB of RAM, and 60 GB of disk as a realistic starting point. SSH access with a sudo-capable user. A free wowza.com account with a 30-day trial license generated (format EDU-... or ENG-...). Your own domain pointing to the VPS IP is optional but recommended for playback over HTTPS.

The engine consumes RAM in proportion to concurrent connections and buffered chunks. Servers with less than 4 GB start swapping when the audience crosses 200 HLS viewers, which kills perceived latency. SSD storage is non-negotiable — spinning disks stall the transmuxer when you also enable recording.

RTMP ingest port 1935
HTTP playback port 1935 (same) or 80/443
Admin manager port 8088
Install directory /usr/local/WowzaStreamingEngine

Prepare the system

Before downloading the installer, bring the VPS to the minimum state for running a long-lived Java service — packages up to date, swap in place, and the timezone set correctly for logs.

01

Refresh the package index and apply pending upgrades:

sudo apt update && sudo apt upgrade -y

Cloud base images usually ship with an outdated kernel. Applying the upgrade before installing Wowza avoids having to restart the engine right after.

02

Install the utilities this tutorial will use:

sudo apt install -y curl wget unzip ufw htop

htop helps debug CPU usage during transcoding; ufw is the firewall we will configure at the end.

03

Confirm the VPS has at least 2 GB of swap configured:

swapon --show
free -h

If there is no swap (empty output), create 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/fstab

Swap is not a substitute for RAM, but it prevents the JVM from being OOM-killed during audience peaks.

Download and install Wowza

The official installer is a self-extracting shell script that detects the distro and creates the service user automatically. The current stable line is 4.9.x; the download link is generated inside your Wowza account after you accept the license terms.

04

Log in to wowza.com, go to Downloads, copy the direct link for the .deb or the Linux shell installer, and pull it on the 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"

Replace the URL with the real link generated in your account — they include an authentication token in the query string.

05

Install the package:

sudo dpkg -i wowza-installer.deb

The installer asks you to accept the EULA, choose the Streaming Manager admin password, and paste the trial license key. Use a strong generated password — you will need it to log into the web panel.

Save the admin password

The Streaming Manager admin password is stored hashed at /usr/local/WowzaStreamingEngine/conf/admin.password, but the installer does NOT show it again. If you lose it, run sudo /usr/local/WowzaStreamingEngine/bin/setpassword.sh to reset it.

06

Enable and start both services (engine + manager):

sudo systemctl enable --now WowzaStreamingEngine
sudo systemctl enable --now WowzaStreamingEngineManager

The main service is the engine that processes streams; the manager is the administrative web panel on port 8088.

07

Confirm that both came up without errors:

sudo systemctl status WowzaStreamingEngine
sudo systemctl status WowzaStreamingEngineManager

Look for active (running) in green. If it shows failed, read the log at /usr/local/WowzaStreamingEngine/logs/wowzastreamingengine_access.log — it is almost always an invalid license or a port already in use.

Configure the live application

Wowza ships with an application named live pre-configured for RTMP ingest and HLS playback. In production you create separate applications per use case (live, vod, recording) with their own settings. To get started, we will validate the default live.

08

Open Streaming Manager in the browser:

http://VPS_IP:8088/enginemanager

Log in with the admin user you defined during installation. You will land on the home page with server status, uptime, and active connections (zero for now).

09

In the side menu, click Applications and pick live. On the Properties tab, confirm that:

  • Application Type is set to Live
  • Streaming Type is set to Live Single Server
  • Playback Types has HLS, MPEG-DASH, and RTMP checked

Hit Save (top-right corner) and click Restart Application if prompted.

10

On the Incoming Security tab, set the mode to Open (no authentication required) only for initial testing. In production switch to Username/Password required for all publishing and register publishers under Server > Source Authentication.

Without publishing authentication, anyone who discovers the IP and application name can inject streams — that is a classic abuse vector on an exposed server.

Do not leave ingest open in production

A Wowza server with publishing open on the public internet is an invitation for your application name to be used by third parties to distribute pirated content. Always enable authentication before sharing the IP outside your team.

Open the firewall ports

The engine listens on several ports, but you only need to open the ones accessed externally. UFW is the cleanest way to configure this on Ubuntu.

11

Set the default policies and allow SSH first (so you do not lock yourself out):

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
12

Open the RTMP port for ingest and playback:

sudo ufw allow 1935/tcp

Port 1935 serves both RTMP publishing and HLS playback over HTTP-on-RTMP — Wowza multiplexes both on the same socket.

13

Open Streaming Manager only to your admin IP (do not leave it exposed to the internet):

sudo ufw allow from YOUR.IP.HERE to any port 8088 proto tcp

Replace YOUR.IP.HERE with the fixed IP you administer from. For dynamic IPs, consider a VPN or an SSH tunnel instead of opening the port.

14

Enable the firewall:

sudo ufw enable
sudo ufw status verbose

The confirmation prompt asks you to type y. Check that the output lists every expected rule before closing the SSH session.

Verification — publish a test stream

To confirm everything works, use OBS Studio on your desktop to publish a test stream and open the HLS playback in a player.

15

In OBS, go to Settings > Stream and configure:

  • Service: Custom
  • Server: rtmp://VPS_IP:1935/live
  • Stream Key: myTest1

Click Start Streaming. In Streaming Manager, under Applications > live > Incoming Streams, you should see myTest1 appear with real bitrate and FPS within seconds.

16

Open the HLS playback in VLC or a web player:

http://VPS_IP:1935/live/myTest1/playlist.m3u8

Typical latency lands between 20 and 40 seconds with 10s chunks. For lower latency, configure LL-HLS on the Stream Files tab of the application — it requires chunkDurationTarget=2 and a compatible client.

Troubleshooting

The stream shows up in the manager but the player does not load

It is almost always the firewall or boot order. Confirm that port 1935 is open for TCP in both directions on the host running the player. On corporate networks, RTMP/HLS over port 1935 is sometimes blocked — test from 3G/4G on a phone to rule that out.

CPU at 100% during the broadcast

You probably enabled adaptive transcoding without noticing. Go to Applications > live > Transcoder and disable it if you do not need it. If you do need transcoding, separate ingest from transcoding on different servers.

”License expired” error after 30 days

The trial has ended. Buy a Perpetual or Subscription license on wowza.com, go to Server > Licenses in the manager, paste the new key, and restart the engine with sudo systemctl restart WowzaStreamingEngine.

Next steps

With the engine on air, there are several ways to evolve the operation:

  • Set up HTTPS for playback using Let’s Encrypt in front of Wowza with a reverse proxy, to eliminate mixed-content warnings on HTTPS sites.
  • Enable automatic recording of publications under Applications > live > Stream Recorders, generating MP4s for a VOD archive.
  • Implement publishing authentication with a custom module or SecureToken to prevent misuse of your ingest.
  • If your audience grows beyond what a single VPS can serve, separate the origin (Wowza) from delivery on a CDN — Cloudflare Stream, Bunny.net, or AWS CloudFront all accept HLS as a source.

If you are putting this in production and need a server with a Brazilian IP, low latency for in-country viewers, and bandwidth sized for sustained streaming, a Hostini VPS delivers traffic without per-GB billing and daily snapshots, which save the day when a fresh configuration breaks a live broadcast.

Frequently asked questions

Is the Wowza trial license usable in production?

The trial is valid for 30 days, watermarks every stream, and caps concurrent connections. For real production you need a Perpetual or Subscription license issued by Wowza and registered in the console under Server > Licenses. After the trial expires, the engine still boots but rejects publishing and playback.

What is the difference between Wowza Streaming Engine and Wowza Video (Cloud)?

Wowza Video is the managed SaaS — you pay per minute and never touch a server. Streaming Engine is the self-hosted software you install on a VPS or bare metal. Engine gives you full control (custom Java modules, fine-grained transmuxing, DVR, automatic recording) with predictable per-server cost; Video removes the operations work but scales expensive.

How many concurrent viewers can a mid-range VPS handle?

For pure RTMP-to-HLS transmuxing without transcoding, a VPS with 4 vCPUs and 8 GB RAM serves 800-1500 HLS viewers depending on bitrate. If you enable adaptive transcoding (one 1080p input into 3 renditions), CPU becomes the bottleneck and each rendition burns 1-2 sustained vCPUs. For transcoding at scale, bare metal pays off.

Why does the live stream stutter even when bandwidth is fine?

Three common causes: HLS chunkDurationTarget too low (use 6-10s, not 2s), encoder bitrate higher than the actual upload of the source, and missing keyframes every N seconds. HLS requires a keyframe at the start of every segment — in OBS, set the keyframe interval to match the chunk duration.

Can I put Wowza behind Cloudflare?

RTMP on port 1935 does not pass through Cloudflare HTTP — you publish straight to the server IP or via a DNS-only subdomain with the proxy disabled. HLS playback over HTTPS (port 443) can ride a CDN normally. In serious production, separate the ingest server (origin) from the delivery edges (CDN) to scale viewers without overloading the engine.

Does Wowza need Java installed separately on Ubuntu?

No. The official installer bundles a JRE under /usr/local/WowzaStreamingEngine/java and ignores any system Java. If you already have OpenJDK for other reasons, leave it alone — pointing Wowza at a different Java without testing usually breaks native modules.

Topics:
Next steps Infrastructure optimized for live streaming, recording and VOD.Set up your streaming server on Hostini →
Was this tutorial helpful?
Chat on WhatsApp