Upgrading from Red5 Pro v14 to v15
Upgrading Red5 Pro Server from v14 to v15
This guide covers upgrading a stand-alone Red5 Pro Server installation from version 14.x to version 15.0.0. This is a minor version upgrade with no infrastructure changes, making it a straightforward process.
What’s Different in v15
v15 is a feature and stability release built on the same infrastructure as v14:
New Features in v15
- Conference API included in Stream Manager 2.0
- SRT egress support for advanced streaming workflows
- Hyper-V support for virtualization environments
- JWT support in SimpleAuth plugin for token-based authentication
- Mixer image overlays for enhanced video composition
Improvements in v15
- Stream Manager places nodes INSERVICE on ClusterNodeEvents
- Mixer A/V synchronization reliability improvements
- Configurable
group.instance.idvia environment variable - Kafka topic retention periods adjusted for long-term stability
- AutoscalePlugin can reliably recreate Kafka producer
- Open Source core upgraded to 2.0.22
- Upgraded Node version in HTML5 SDK
- Predictable node type targeting in Stream Manager provisions
Bug Fixes in v15
- Datachannel establishment now allows NetStream.Publish.IsAvailable
- Social media push for Facebook now working properly (critical fix)
- WHIP connections no longer momentarily report as WHEP
- S3 uploads for recordings now retry on failures (important for reliability)
No Breaking Changes
✅ Java 21 – Same as v14
✅ Tomcat 11 – Same as v14
✅ SSL Configuration – Same as v14
✅ Configuration Files – Fully compatible
Prerequisites
Before beginning the upgrade, ensure you have:
- Access to your Red5 Pro account at https://account.red5.net/login
- Red5 Pro v15.0.0 server distribution downloaded
- Valid Red5 Pro license key (included in server download)
- Root or sudo access to your server
- Current v14.x installation location (typically
/usr/local/red5pro) - Backup of custom configurations (see Backup section below)
- Maintenance window – Plan for 15-30 minutes of downtime
Quick Compatibility Check
# Verify you're running v14
curl -s http://localhost:5080 | grep -i "14." || cat /usr/local/red5pro/log/red5.log | grep "version" | head -1
# Verify Java 21 is installed
java -version
# Should show: openjdk version "21.x.x"
# Check disk space (need ~2GB)
df -h /usr/local/
Step 1: Backup Your Current Installation
IMPORTANT: Always create a backup before upgrading, even for minor updates.
1.1 Stop the Red5 Pro Service
# Stop the service
sudo systemctl stop red5pro
# Wait for graceful shutdown (30 seconds)
sleep 30
# Verify Red5 Pro is stopped
netstat -an | grep ':5080'
# Should return nothing
1.2 Create Backup
# Create backup directory if it doesn't exist
sudo mkdir -p /opt/red5pro-backups
# Create compressed backup with timestamp
cd /usr/local
sudo tar -czf /opt/red5pro-backups/red5pro-v14-backup-$(date +%Y%m%d-%H%M%S).tar.gz red5pro/
# Verify backup
ls -lh /opt/red5pro-backups/
1.3 Document Current Configuration (Optional)
For reference, snapshot your key settings:
cat > /tmp/red5pro-v14-config.txt <<EOF
Red5 Pro v14 Configuration - $(date)
====================================
Current Version: $(grep -i "version" /usr/local/red5pro/log/red5.log | head -1)
Java Version: $(java -version 2>&1 | head -1)
Red5 Directory: /usr/local/red5pro
Custom Webapps:
$(ls -1 /usr/local/red5pro/webapps/ | grep -v "^live$|^root$|^webrtcexamples$|^streammanager$|^inspector$|^api$")
Service Status:
$(systemctl status red5pro | head -5)
EOF
cat /tmp/red5pro-v14-config.txt
Step 2: Prepare the v15 Installation
2.1 Upload and Extract v15 Distribution
# Upload red5pro-server-15.0.0.zip to /tmp/ via SFTP/SCP
# Verify upload
ls -lh /tmp/red5pro-server-15.0.0.zip
# Extract to /usr/local/ (NOT into the existing red5pro directory)
cd /usr/local
sudo unzip /tmp/red5pro-server-15.0.0.zip
# Verify extraction
ls -la /usr/local/red5pro-server-15.0.0/
2.2 Verify License Key
# Check LICENSE.KEY exists
ls -la /usr/local/red5pro-server-15.0.0/LICENSE.KEY
# If you have an updated license, verify it matches your account
# https://account.red5.net/overview
Step 3: Migrate Configuration Files
Since v14 and v15 share the same infrastructure, configuration migration is straightforward.
RULE: Manually update configuration files. Do NOT copy directly (some defaults may have improved).
3.1 Migrate Core Configuration
red5.properties
# Compare the two files
diff /usr/local/red5pro/conf/red5.properties
/usr/local/red5pro-server-15.0.0/conf/red5.properties
Migrate these common customizations:
# Ports (if customized)
http.port=5080
https.port=443
rtmp.port=1935
rtmps.port=8443
# SSL Configuration (same as v14)
secure.enabled=true
websocket.enabled=true
rtmps.keystorepass=yourpassword
rtmps.keystorefile=/path/to/keystore.jks
rtmps.truststorepass=yourpassword
rtmps.truststorefile=/path/to/truststore.jks
# Performance settings (if customized)
http.max_threads=20
http.acceptor_thread_count=10
http.processor_cache=20
Copy your customizations to the new file:
sudo nano /usr/local/red5pro-server-15.0.0/conf/red5.properties
# Manually apply your settings
3.2 Migrate Plugin Configurations
WebRTC Plugin
# If you customized WebRTC settings
sudo diff /usr/local/red5pro/conf/webrtc-plugin.properties
/usr/local/red5pro-server-15.0.0/conf/webrtc-plugin.properties
# If differences exist, manually apply your customizations
sudo nano /usr/local/red5pro-server-15.0.0/conf/webrtc-plugin.properties
Network Configuration
# If using forced IPs or custom ICE settings
sudo diff /usr/local/red5pro/conf/network.properties
/usr/local/red5pro-server-15.0.0/conf/network.properties
# Manually apply customizations
sudo nano /usr/local/red5pro-server-15.0.0/conf/network.properties
Common network settings:
force.public.ip=your-public-ip
force.local.ip=your-private-ip
check.port.availability=true
SimpleAuth Plugin (NEW: JWT Support in v15!)
# Copy existing auth configuration
sudo cp /usr/local/red5pro/conf/simple-auth-plugin.properties
/usr/local/red5pro-server-15.0.0/conf/simple-auth-plugin.properties
sudo cp /usr/local/red5pro/conf/simple-auth-plugin.credentials
/usr/local/red5pro-server-15.0.0/conf/simple-auth-plugin.credentials
NEW in v15: JWT token support is now available. To enable JWT authentication, add to simple-auth-plugin.properties:
# Enable JWT support (new in v15)
jwt.enabled=true
jwt.secret=your-secret-key-here
jwt.algorithm=HS256
jwt.expiration=3600
See JWT Authentication Guide for details.
Cloud Storage Plugin
# If using cloud storage
sudo cp /usr/local/red5pro/conf/cloudstorage-plugin.properties
/usr/local/red5pro-server-15.0.0/conf/cloudstorage-plugin.properties
Good news: v15 includes automatic retry for S3 upload failures, making your recordings more reliable.
3.3 Migrate Cluster Configuration (if applicable)
# If using static clustering
sudo cp /usr/local/red5pro/conf/cluster.xml
/usr/local/red5pro-server-15.0.0/conf/cluster.xml
3.4 Migrate HLS Configuration (if customized)
# If you customized HLS settings
sudo diff /usr/local/red5pro/conf/hlsconfig.xml
/usr/local/red5pro-server-15.0.0/conf/hlsconfig.xml
# Apply customizations if needed
sudo nano /usr/local/red5pro-server-15.0.0/conf/hlsconfig.xml
3.5 Migrate Restreamer/SRT Configuration (if applicable)
# If using SRT restreamer
sudo cp /usr/local/red5pro/conf/restreamer-plugin.properties
/usr/local/red5pro-server-15.0.0/conf/restreamer-plugin.properties
NEW in v15: SRT egress support is now available for advanced streaming workflows.
3.6 Migrate API Configuration (if applicable)
# If using the Server API
sudo cp /usr/local/red5pro/webapps/api/WEB-INF/red5-web.properties
/usr/local/red5pro-server-15.0.0/webapps/api/WEB-INF/red5-web.properties
sudo cp /usr/local/red5pro/webapps/api/WEB-INF/security/hosts.txt
/usr/local/red5pro-server-15.0.0/webapps/api/WEB-INF/security/hosts.txt
3.7 Copy Custom Webapps
# List your custom webapps (excluding built-in ones)
ls -1 /usr/local/red5pro/webapps/ | grep -v "^live$|^root$|^webrtcexamples$|^streammanager$|^inspector$|^api$"
# Copy each custom webapp
# Example:
sudo cp -r /usr/local/red5pro/webapps/myapp
/usr/local/red5pro-server-15.0.0/webapps/myapp
Step 4: Update Service Configuration
The service file is compatible between v14 and v15, but it’s good practice to use the new one.
4.1 Update red5pro.service
# Copy new service file
sudo cp /usr/local/red5pro-server-15.0.0/red5pro.service /lib/systemd/system/red5pro.service
# Ensure correct permissions
sudo chmod 644 /lib/systemd/system/red5pro.service
# Edit to verify/update paths
sudo nano /lib/systemd/system/red5pro.service
Verify these settings:
[Unit]
Description=Red5 Pro
Wants=network-online.target
After=network.target network-online.target
[Service]
Type=forking
User=root
LimitNOFILE=1000000
# Verify JAVA_HOME is correct for Java 21
# Ubuntu:
Environment=JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
# CentOS:
# Environment=JAVA_HOME=/usr/lib/jvm/jre-21
# Point to NEW v15 directory (temporarily)
Environment=RED5_HOME=/usr/local/red5pro-server-15.0.0
ExecStartPre=-/usr/bin/killall -q CefRenderer
WorkingDirectory=/usr/local/red5pro-server-15.0.0
ExecStart=/usr/local/red5pro-server-15.0.0/red5pro.sh start
ExecStop=/usr/local/red5pro-server-15.0.0/red5pro.sh stop
ExecReload=/usr/local/red5pro-server-15.0.0/red5pro.sh restart
[Install]
WantedBy=multi-user.target
4.2 Reload Systemd
sudo systemctl daemon-reload
Step 5: Test the v15 Installation
Always test before finalizing the upgrade.
5.1 Start Red5 Pro v15
# Start the service
sudo systemctl start red5pro
# Monitor startup
sudo tail -f /usr/local/red5pro-server-15.0.0/log/red5.log
Watch for:
Server startedmessage- No ERROR messages
- Plugins loaded successfully
5.2 Verify Service Status
# Check systemd status
sudo systemctl status red5pro
# Verify port 5080 is listening
netstat -an | grep ':5080'
# Check Java process
ps aux | grep java | grep red5
5.3 Test via Web Browser
- Navigate to
http://your-server-ip:5080 - Verify version shows 15.0.0 in the top-left corner
- Welcome page should load without errors
5.4 Test Core Functionality
Test RTMP Publishing
# Using OBS or ffmpeg
ffmpeg -re -i test.mp4 -c:v copy -c:a copy -f flv rtmp://your-server:1935/live/teststream
Test WebRTC (if using SSL)
- Navigate to
https://your-domain:443/webrtcexamples/ - Test publisher page
- Test subscriber page
- Verify audio/video works
Test API (if configured)
# Test API endpoint
curl http://your-server:5080/api/v1/admin/event/app/live
5.5 Review Logs
# Check for any errors
grep -i "error" /usr/local/red5pro-server-15.0.0/log/red5.log | tail -20
# Verify plugins loaded
grep -i "plugin" /usr/local/red5pro-server-15.0.0/log/red5.log | grep -i "loaded"
# Check for warnings
grep -i "warn" /usr/local/red5pro-server-15.0.0/log/red5.log | tail -20
5.6 Test New v15 Features (Optional)
Test Social Pusher (Fixed in v15)
If you use Facebook streaming:
# Test Facebook push
# This feature had issues in v14 and is now fixed in v15
grep -i "facebook|social" /usr/local/red5pro-server-15.0.0/log/red5.log
Test S3 Recording Reliability (Improved in v15)
If you record to S3:
# Record a test stream and verify upload
# v15 now retries failed uploads automatically
grep -i "s3|cloudstorage" /usr/local/red5pro-server-15.0.0/log/red5.log
Step 6: Finalize the Upgrade
Once testing confirms everything works correctly.
6.1 Stop the Service
sudo systemctl stop red5pro
6.2 Switch Directories
# Rename old v14 directory
sudo mv /usr/local/red5pro /usr/local/red5pro-v14-old
# Rename new v15 directory to standard name
sudo mv /usr/local/red5pro-server-15.0.0 /usr/local/red5pro
6.3 Update Service File Paths
# Edit service file
sudo nano /lib/systemd/system/red5pro.service
Change all paths from /usr/local/red5pro-server-15.0.0 to /usr/local/red5pro:
Environment=RED5_HOME=/usr/local/red5pro
WorkingDirectory=/usr/local/red5pro
ExecStart=/usr/local/red5pro/red5pro.sh start
ExecStop=/usr/local/red5pro/red5pro.sh stop
ExecReload=/usr/local/red5pro/red5pro.sh restart
6.4 Reload and Start
# Reload systemd
sudo systemctl daemon-reload
# Enable service on boot (should already be enabled)
sudo systemctl enable red5pro
# Start the service
sudo systemctl start red5pro
# Verify status
sudo systemctl status red5pro
6.5 Final Verification
# Check version via HTTP
curl -s http://localhost:5080 | grep "15.0" || echo "Check browser"
# Verify in browser
# Navigate to http://your-server-ip:5080
# Version should show 15.0.0
# Test reboot persistence (optional)
sudo reboot
# After reboot:
sudo systemctl status red5pro
Step 7: Explore New v15 Features
Now that you’ve upgraded, take advantage of new features:
7.1 JWT Authentication (SimpleAuth Plugin)
If you want token-based authentication instead of username/password:
- Edit
/usr/local/red5pro/conf/simple-auth-plugin.properties - Add JWT configuration:
jwt.enabled=true jwt.secret=your-secure-secret-key jwt.algorithm=HS256 jwt.expiration=3600 - Restart Red5 Pro
- Generate JWT tokens using your secret key
- Use tokens in publish/subscribe URLs
7.2 Conference API (Stream Manager 2.0)
If you’re using Stream Manager 2.0, v15 includes a new Conference API:
- Multi-party video conferencing support
- Dynamic participant management
- Conference room creation and management
- See Conference API Documentation for details
7.3 SRT Egress Support
v15 adds SRT egress capabilities:
- Stream out to SRT destinations
- Complements existing SRT ingress
- Configure in
restreamer-plugin.properties - See SRT Documentation for details
7.4 Mixer Image Overlays
If you use the Red5 Pro Mixer:
- Add image overlays to mixed streams
- Watermarks, logos, branding
- Dynamic image composition
- See Mixer Documentation for details
7.5 Hyper-V Support
v15 is now certified for Hyper-V virtualization environments:
- Run Red5 Pro in Hyper-V VMs
- Full performance and feature support
- Same configuration as other platforms
Post-Upgrade Tasks
8.1 Monitor Performance
Watch your server for the first 24-48 hours:
# Monitor resource usage
htop
# Watch logs for issues
sudo tail -f /usr/local/red5pro/log/red5.log
# Check systemd journal
sudo journalctl -u red5pro -f
8.2 Update Client Applications
Notify your development team about v15 features:
- JWT authentication available in SimpleAuth
- Conference API if using Stream Manager 2.0
- Improved reliability for Facebook social pusher
- Automatic S3 retry for recordings
8.3 Test Facebook Social Pusher (if applicable)
If you had issues with Facebook streaming in v14:
# Test Facebook push functionality
# This was fixed in v15
grep -i "facebook" /usr/local/red5pro/log/red5.log
8.4 Verify S3 Recording Reliability
If you use S3 for recordings:
# Record several test streams
# v15 now automatically retries failed uploads
grep -i "s3.*retry|s3.*failed|cloudstorage" /usr/local/red5pro/log/red5.log
8.5 Clean Up Old Installation (After 7+ Days)
Once you’ve confirmed v15 is stable:
# Remove old v14 directory
sudo rm -rf /usr/local/red5pro-v14-old
# Keep backup for historical purposes
ls -lh /opt/red5pro-backups/
Rollback Procedure
If you encounter critical issues with v15, you can rollback to v14.
Quick Rollback Steps
# 1. Stop v15
sudo systemctl stop red5pro
# 2. Restore v14 from backup
cd /usr/local
sudo rm -rf red5pro
sudo tar -xzf /opt/red5pro-backups/red5pro-v14-backup-*.tar.gz
# 3. Update service file (if needed)
sudo nano /lib/systemd/system/red5pro.service
# Ensure paths point to /usr/local/red5pro
# 4. Reload and start
sudo systemctl daemon-reload
sudo systemctl start red5pro
# 5. Verify
sudo systemctl status red5pro
curl http://localhost:5080
Troubleshooting
Issue: Service Fails to Start
# Check detailed errors
sudo journalctl -u red5pro -n 50 --no-pager
# Common causes:
# - Configuration syntax error
# - Port already in use
# - Missing dependency
# Verify ports are free
sudo netstat -tulpn | grep ':5080|:1935|:443'
# Check configuration syntax
grep -i "error" /usr/local/red5pro/log/red5.log
Issue: WebRTC Not Working
# Verify SSL configuration
grep -i "secure.enabled|websocket.enabled" /usr/local/red5pro/conf/red5.properties
# Should show both as true
# Check keystore/truststore
ls -la $(grep "keystorefile" /usr/local/red5pro/conf/red5.properties | cut -d= -f2)
# Verify WebRTC plugin loaded
grep -i "webrtc.*loaded" /usr/local/red5pro/log/red5.log
Issue: Cluster Not Connecting
# Check cluster.xml configuration
sudo nano /usr/local/red5pro/conf/cluster.xml
# Verify network connectivity between nodes
ping origin-ip
# Check logs for cluster errors
grep -i "cluster" /usr/local/red5pro/log/red5.log | tail -20
Issue: Social Pusher Still Failing
# Check social pusher configuration
grep -i "social" /usr/local/red5pro/log/red5.log
# Verify credentials are correct
sudo nano /usr/local/red5pro/webapps/live/WEB-INF/red5-web.xml
# Test Facebook API connectivity
curl -I https://graph.facebook.com/
Issue: S3 Uploads Failing
# Check cloud storage configuration
cat /usr/local/red5pro/conf/cloudstorage-plugin.properties
# Verify credentials and bucket access
# Test AWS credentials manually
aws s3 ls s3://your-bucket-name/
# Check logs for retry attempts (new in v15)
grep -i "s3.*retry|cloudstorage.*retry" /usr/local/red5pro/log/red5.log
Performance Comparison: v14 vs v15
You may notice these improvements in v15:
Stability Improvements
- Mixer A/V sync: More reliable audio/video synchronization
- Kafka stability: Better long-term stability for Stream Manager deployments
- AutoscalePlugin: More reliable Kafka producer recreation
Bug Fixes
- Facebook Social Pusher: Now works reliably (was broken in some v14 scenarios)
- S3 Recordings: Automatic retry on failures (was manual in v14)
- WHIP/WHEP reporting: Correct connection type reporting
- Data Channel: Properly triggers NetStream.Publish.IsAvailable
Additional Resources
- Red5 Pro v15.0.0 Release Notes
- JWT Authentication Guide
- Conference API Documentation
- SRT Egress Configuration
- Mixer Documentation
- Server Optimization Guide
Support
If you encounter issues during the upgrade:
- Check Red5 Pro Known Issues
- Review Troubleshooting Guide
- Contact support: support@red5.net
- Include logs:
/usr/local/red5pro/log/red5.log
Summary
Upgrading from v14 to v15 is straightforward because:
✅ Same Java 21 runtime
✅ Same Tomcat 11 container
✅ Same configuration structure
✅ No breaking changes
✅ Focus on features and stability
The upgrade should take 15-30 minutes with minimal risk. Enjoy the new features!