BroadPanel Documentation
Your guide to installing, configuring, and managing your OvenMediaEngine with BroadPanel.
Welcome to the BroadPanel documentation. This guide provides the necessary steps to get your streaming server up and running quickly using our simplified installer and management panel.
Prerequisites
Before starting the installation, please ensure your server meets the following requirements:
System Requirements
- Operating System: Ubuntu 22.04 LTS (or newer) is recommended.
- CPU: 4 cores or more is recommended for transcoding workloads.
- RAM: A minimum of 4GB of RAM is recommended. More may be required depending on the number of concurrent streams and viewers.
- Storage (SSD Recommended): At least 20GB of free space. SSDs are highly recommended for better performance.
- Network: A public IP address is required for your server to be accessible from the internet.
Firewall Port Configuration
You must open the following ports on your server's firewall to allow traffic:
- TCP 1935: For RTMP streaming ingest.
- TCP 80, 443: For HTTP-based streaming (HLS, LLHLS, WebRTC).
- TCP/UDP 10000-10009: For WebRTC media transport over UDP (and TCP fallback).
- TCP 9099: For the BroadPanel Management Panel.
Installation Steps
Follow these steps to install BroadPanel and OvenMediaEngine on your server.
1. Access Your Server
Log in to the command line of your server as the `root` user.
ssh root@your_server_ip
2. Run the Installer
Execute the following commands in your server's terminal. This will download the installer, make it executable, and start the installation process.
curl https://account.broadpanel.com/software/broadpanel_0.1.0.run -o broadpanel_0.1.0.run
chmod +x broadpanel_0.1.0.run
sudo ./broadpanel_0.1.0.run
3. Follow On-Screen Instructions
The installer will guide you through the remaining steps. Follow the on-screen prompts to complete the setup.
Initial Login & Configuration
Once the installation is complete, you can access the BroadPanel management interface.
1. Accessing the Panel
Open your web browser and navigate to your server's IP address on port 9099.
Example: http://your_server_ip:9099
2. Login Credentials
You will be directed to the login page. Use the default credentials to log in for the first time:
- User: `admin`
- Password: `123456789`
Important: It is highly recommended that you change your password immediately after your first login for security reasons.
3. Beta Test & Free Subdomain
You can obtain a **free 60-day beta test** for BroadPanel by visiting https://account.broadpanel.com or https://zilladns.com. No credit card or financial information is required for registration.
Free Subdomain
When applying for your trial license, you can also create or request a **free subdomain** under `zilladns.com`. The number of subdomains available will correspond to your license tier. This subdomain can then be used within the system to obtain a **free SSL Certificate from Let's Encrypt** directly in the "Certificate" section of the BroadPanel interface.
Example subdomain you might receive: uuid_key.zilladns.com
Live Source Configuration
This section details how to configure your broadcasting software (e.g., OBS Studio) to send streams to your OvenMediaEngine server through BroadPanel.
RTMP
Use the following format for RTMP ingest:
URL: rtmp://<OvenMediaEngine IP>[:<RTMP Listen Port>]/<App Name>
Stream Key: <Stream Name>
Example:
URL: rtmp://video.example.com:1935/app
Stream Key: mylivestream
If you have configured a **Webhook for admission control**, your Stream Key might include a key parameter:
URL: rtmp://video.example.com:1935/app
Stream Key: mylivestream?key=Allowed_Keys
WebRTC
Use the following format for WebRTC ingest:
URL: ws[s]://<host>[:signaling port]/<app name>/<stream name>?direction=send
Example:
wss://video.example/app/mylivestream?direction=send
If you have configured a **Webhook for admission control**, your URL might include a key parameter:
wss://video.example/app/mylivestream?key=Allowed_Keys&direction=send
---
Player Path (Stream Playback)
Once your stream is ingested, viewers can access it using the following playback URLs:
HLS (HTTP Live Streaming)
HLS provides broad compatibility across various devices and browsers.
URL Format: https://<host>/<app name>/<stream name>/ts:playlist.m3u8
Example:
https://video.example.com/app/mylivestream/ts:playlist.m3u8
LL-HLS (Low Latency HLS)
LL-HLS offers reduced latency compared to traditional HLS, making it suitable for more interactive scenarios.
URL Format: https://<host>/<app name>/<stream name>/llhls.m3u8
Example:
https://video.example.com/app/mylivestream/llhls.m3u8
ABR Multibitrate
ABR (Adaptive Bitrate) streaming allows players to automatically switch between different quality levels of your stream based on the viewer's network conditions, providing a smoother experience.
URL Format: https://<host>/<app name>/<stream name>/abr.m3u8
Example:
https://video.example.com/app/mylivestream/abr.m3u8
WebRTC
WebRTC provides the lowest latency streaming, ideal for real-time communication.
URL Format: wss://<host>/<app name>/<stream name>
Example:
wss://video.example.com/app/mylivestream
---
Stream Management
This section will detail how to manage active streams, view stream details (input, output, statistics), and control streams using the BroadPanel interface.
Creating a New Application (App)
In OvenMediaEngine, an "application" or "app" is a logical grouping for your streams. You can configure various settings (like recording, webhooks, security) at the app level, and all streams within that app will inherit these settings. This allows for organized management of different streaming scenarios.
To create a new application in BroadPanel:
- Log in to your BroadPanel management interface.
- In the left-hand navigation menu, click on Application > Create App.
- Basic Information:
- Application Name: Enter a unique name for your application (e.g., `live_events`, `webinars`). Use alphanumeric characters, hyphens, and underscores only.
- Application Type: Select the type (e.g., `Live` for live streaming). **Note: Currently, only `Live` is available.**
- Output Profile Configuration:
- Profile Mode: Choose how video/audio is processed. `Bypass (Passthrough Video, Default Audio)` is common for direct relay.
- Audio Encodes: If not bypassing, configure audio encoding (Opus Audio, AAC Audio).
- Bypass Mode: Video Settings: If `Bypass` is selected, specify the video encoder. `Passthrough (Bypass True)` is typically used.
- Application Recording:
- Check the `Enable Recording` checkbox if you want streams within this application to be automatically recorded. Note that default recording settings are managed on the "Record" configuration page.
- Providers (Inputs):
- Select the input protocols you wish to allow for this application (e.g., `RTMP`, `WebRTC Ingest`).
- Publishers (Outputs):
- Select the output playback protocols you want to enable for streams in this application (e.g., `WebRTC Playback`, `LLHLS`, `HLS`).
- For `LLHLS` and `HLS`, you can further configure:
- Segment Count: Number of segments in the playlist.
- Chunk Duration (sec): Duration of each media chunk.
- Segment Duration (sec): Duration of each segment.
- Click the Create Application button to save.
Once created, you will use this app name in your ingest and playback URLs.
Setting up Stream Recording
BroadPanel allows you to easily enable and configure recording for your live streams, enabling automatic video capture. This ensures you can efficiently store all your live content and never miss any valuable data from your sessions.
To configure recording for an application:
- Log in to BroadPanel and go to Application > Record in the left-hand menu.
- Select Application with Recording Enabled: Choose the specific application you want to configure from the dropdown list. Click `Load Config`.
- Configure Recording for [app name]:
- Record: Toggle this to `true` to enable recording for the selected application.
- Stream Name Pattern: Define which streams within the app should be recorded (e.g., `live_*` for streams starting with "live_", or `*` for all streams).
- Recording FilePath Pattern: This defines the path and naming convention for your recorded video files. You can use placeholders like `$VirtualHost`, `$Application`, `$Stream`, `$StartTime`, `$Sequence`. Example: `$VirtualHost/$Application/$Stream/$StreamName_YYYYMMDDhhmmss($Sequence).mp4`
- Metadata InfoPath Pattern: Defines the path and naming convention for associated metadata files (e.g., XML files). Example: `$VirtualHost/$Application/$Stream/$Stream_info($Sequence).xml`
- Segment Interval: How often a new recording file/segment is created (e.g., 30 minutes, 60 minutes).
- Segment Rule: Defines when a new segment should start (e.g., `discontinuity (Timestamp restarts)`).
- Click the Save Recording Configuration button.
After enabling, any stream matching the pattern published to this application will automatically be recorded to the specified location on your server.
Configuring Admission Webhooks
Admission Webhooks provide a powerful way to implement custom authentication and authorization for your streams. You can control which streams are allowed to publish and from which sources, as well as define specific stream keys.
To set up Admission Webhooks for an application:
- Log in to BroadPanel and go to Application > AdmissionWebhooks in the left-hand menu.
- Select Application: Choose the specific application you want to manage from the dropdown list. Click `Refresh` if needed.
- Editing: [app name]
- Description: (Optional) Add a description for this webhook rule.
- Authentication Required: Check this box to enable authentication for streams in this application.
- Allowed Protocols: Select the ingest protocols that require authentication (e.g., `RTMP`, `SRT`, `WebRTC`, `LLHLS`).
- IP Whitelist (one IP/CIDR per line): Enter IP addresses or CIDR blocks that are allowed to publish/access streams without further key validation. `0.0.0.0/0` means all IPs are allowed unless specific keys are enforced. **Note: Currently, only `0.0.0.0/0` is supported for IP Whitelist configuration.**
- Allowed Streams (one stream name per line, * for all): Specify which stream names are permitted (e.g., `live`, `my_webinar`). **Note: If specific stream names are listed, the `*` (wildcard) will not be effective.**
- Allowed Keys:
- Add `Key` (your desired stream key, e.g., `123`).
- You can optionally add an expiration date `dd/mm/yyyy, --:--` for each key.
- Use the `Add Key` button to add more.
- Use the `Delete` button to remove a key.
- Click Save Changes to apply the webhook rules. You can also click `Delete this Application's Config` to remove all settings for this app.
When `Authentication Required` is enabled and keys are defined, a publisher will need to include the `key` parameter in their stream URL (e.g., `rtmp://video.example.com:1935/app/mylivestream?key=Allowed_Keys`).
Basic Troubleshooting
[Provide solutions or guidance for common issues users might encounter. This could include interpreting logs, common error messages, and steps to resolve them.]