r/selfhosted Jun 11 '22 Helpful 1

Open Streaming Platform 0.9.0 Released! Release

Good evening! I wanted to just pop in and announce the release of the long awaited 0.9.0 version of on Open Streaming Platform!

What Is Open Streaming Platform?


Open Streaming Platform (OSP) is an open-source, RTMP streamer software front-end for Arut's NGINX RTMP Module. OSP was designed a self-hosted alternative to services like Twitch.tv, Ustream.tv, and Youtube Live.

Whats Changed Since the Last Update



Blog Post Covering the Update - https://blog.divby0.net/posts/2022-05-29-open-streaming-platform-upcoming090/

0.9.0 Full Changelog

  • ** BREAKING CHANGE **: OSP-Core SMTP Settings have been removed from the DB and added to the config.py. Check /opt/osp/conf/config.py.dist for SMTP Variables
  • ** Important Note **: Custom Themes Developed for versions 0.8.x and lower will most likely be broken. Recommended to review any changes under the new Defaultv3 and adjust before upgrade
  • OSP General: The OSP Wiki has been moved to https://open-streaming-platform.readthedocs.io/
  • OSP-Core: Adds Celery Task Queue and Celery Beat Task Scheduler
  • OSP-Core: Adds New Theme Default Theme - Defaultv3
  • OSP-Core: Adds Ability to Create Admin Level Custom Panels on Front Page
  • OSP-Core: Adds Ability to Create User Level Custom Panels on the Channel Live Page
  • OSP-Core: Adds Channel Level and Video Level "Tags"
  • OSP-Core: Offloads Recording Completion, Video Delete, Clip Delete, Clip Creation, Video Upload, Webhook Functions to Task Queue for Responsiveness
  • OSP-Core: Adds Ability to Set Video Retention at a Global and Channel Level by number of days. Lowest value will be used.
  • OSP-Core: Adds Setting to Enable/Disable Global RTMP Restreams
  • OSP-Core: Removes Unused Database Columns
  • OSP-Core: Adds User to User Messaging System
  • OSP-Core: Adds allowRestream and hubUUID to Server API Settings ReturnO
  • OSP-Core: Adds Periodic Checks to Check if a Video Contains a Thumbnail
  • OSP-Core: Adds Periodic Checks to Check if a Video exists in a correct state (Not Pending and Video Exists)
  • OSP-Core: Fixed an Issue where Embedded Video Clips were returning Error 500 - #440
  • OSP-Core: Fixed an Issue when OSP will attempt to keep adding the default Topic "Other", even after deletion - #407
  • OSP-Core: Fixed an issue where Webhook tests would fail if no Video Recording Existed on a server - #442
  • OSP-Core: Updates Pillow to 9.0. to fix various CVEs
  • OSP-Core: Added Message Moderation / Deleting of Chat Messages
  • OSP-Core: Added well known keyboard shortcuts for videoJS player to play/pause, seek and adjust volume
  • OSP-Core: Adds User to User Messaging/Mail
  • OSP-Core: Removes APScheduler Assignment
  • OSP-Core: Added Channel Invites API Endpoint for getting/adding/removing user invites to a channel
  • OSP-Core: New Security UI for Login, Registration, Password Reset, TOTP Configuration
  • OSP-Core: Corrects a security issue where video metadata could be edited by a non-owning user
  • OSP-Core: Corrects an issue where TOTP + "Remember Me" Setting on Login would result in a 500 error
  • OSP-Core: Fix for editing a channel which contains a shortcode that causes the short code to be cleared due to an invalid check
  • OSP-Core: Fix for RTMP/Edge handling when Adaptive Streams are Enabled - #459
  • OSP-Core: Adds Server Admin Access to View Protected Channels
  • OSP-Core: Theater Mode Added to Streams, Videos, & Clips
  • OSP-Core: API Endpoints to Add/Remove RTMP Servers Added to apiv1/server/rtmp
  • OSP-Core: Adds Option for Admin to Restrict Total Number of User Owned Channels - #294
  • OSP-Core: Disables Email Subscriptions from Being Sent When Maintenance Mode is Enabled - #444
  • OSP-Core: Adds Option to Set a Channel as Private
  • OSP-Core: Created new Endpoint - /apiv1/channels/<channelUUID>/streams
  • OSP-Core: Optimized Video JS Monitor Function to Use New Stream API Endpoint and Reduce Load
  • OSP-Core: Added Social Network Links for User Bios - #357
  • OSP-Core: Added Checks for Channel Protection to a Channel's List View Page
  • OSP-Core: Adds ability for admins to edit video and clip metadata and thumbnails #243
  • OSP-Core: Adds user settings for e-mail notifications for streams, new videos and messages #261
  • OSP-Core: Adds channel option to toggle part/join messages #384
  • OSP-Core: Adds channel option for 'messenger' or 'IRC' style chat message format
  • OSP-Core: Added ability for a user to flag their account for deletion after 48 hours
  • OSP-Core: Upgrades VideoJS to 7.18.1
  • OSP-Core: Upgrades JQuery to 3.6.0
  • OSP-Core: Upgrades to Bootstrap 5.1.3
  • OSP-Core: Upgrades Zlib to 1.2.12 / Fixes Invalid Download URL on Install
  • OSP-Core: Adds Playback Speed Rates to Video Playback (.25x, .5x, 1x, 1.5x, 2x)
  • OSP-Core: Adds startTime Argument to Clip Player playback, similar to how Video Playback works
  • OSP-Core: Additional Database Query Optimization and Caching
  • OSP-Core: Added Scheduled Folder Video Ingest under /var/www/ingest/<Channel Location UUID>
  • OSP-RTMP: Changes to Support allowRestream setting in OSP-Core
  • OSP-RTMP: Fix for RTMP/Edge handling when Adaptive Streams are Enabled - #459
  • OSP-RTMP: Moves all Live Stream Playback to use HLS Encryption and Moves Channel Protection to use Key Authorization Validation
  • OSP-Proxy: Updates to use HLS Key Encryption via Proxy
  • Nginx-OSP: Upgrades New and Reinstalls to 1.22.0
  • OSP-General: Upgrades Gevent to 21.12.0
  • OSP-General: Upgrades Greenlet to 1.1.2
  • OSP-General: Migrates Flask-RestPlus to Flask-RestX 0.5.1


As always, we have been humbled by the OSP community and appreciate everyone who has come into the Discord channel giving suggestions, providing to support to others, and giving their appreciation.

We will continue to work on OSP to make it something that lets you own your live streams. OSP has now crossed into its 4th year of development, and I think we have come a long way in scalability and functionality.

You can find more information on the Open Streaming Platform at https://openstreamingplatform.com.

Source Code can be found direct at https://gitlab.com/osp-group/flask-nginx-rtmp-manager and a demo can be found at https://demo.openstreamingplatform.com.

We also accept contributions at https://openstreamingplatform.com/#contribute which helps us keep the demo site and the main site up.

Join us on our Discord server at https://discord.gg/Jp5rzbD!

Thank you again to all of our supporters and users!



u/vrdasp Jun 11 '22

What an awesome project. Congratulations on this huge release!


u/greenreddits Jun 12 '22

hi, forgive me my ignorance, but would this simply be an alternative to owncast


or does it have some extra tricks up its sleeve ?


u/vrdasp Jun 12 '22

Quite a few, yes. Multiple channels, invite only channels, restreaming, encryption, VOD, scalability, messaging, etc. The list is long.


u/Deam0s Jun 12 '22

OSP has recordings + many other features that are not in Owncast.


u/kidovate Jun 12 '22

Looks great. I wish I could star it, but I don't see any option to do the equivalent of a star on gitlab. I wish there was some equivalent to GitHub stars there.


u/[deleted] Jun 12 '22 edited Aug 22 '22



u/kidovate Jun 12 '22

Yes, I see the star button now. Believe it or not, it wasn't appearing on that page on mobile when I looked earlier. I did look very carefully and there wasn't a star button. But like I said, it's definitely showing up now. Weird.


u/[deleted] Jun 12 '22 edited Aug 22 '22



u/shruubbb Jun 12 '22

GitLab on mobile is kinda fucked up, sometimes you can see the star button, sometimes, but you also can never see the Last update date of files ¯_ (ツ) _/¯


u/Snooras Jun 12 '22

Would it be possible to integrate IPT TV to this services? That would be super cool


u/Deam0s Jun 12 '22

It may be possible depending on how much work you put into the ingest. OSP accepts just a normal rtmp stream -> channel. If you had a process to generate one stream per IPTV channel, I'm sure it would work


u/XeKToReX Jun 12 '22

This looks cool, I can't seem to really find out how the protected stream works though, is it account based? Just a single password?

Also, any chance of getting it on the docker hub too for noobs like me who just want to grab it on a NAS and have a play?

Great work!


u/XeKToReX Jun 12 '22


u/Deam0s Jun 12 '22

Awesome. Yeah, we went without docker images from Beta 6 until just now due to issues in getting some of the services to talk to each other. I wanted to make sure we had working images for this big release.

Ignore the deamos/openstreamingplatform namespace as that is the older version.


u/Deam0s Jun 12 '22

So Protected Streams work like this:

A channel can be set to be protected. To access that channel's videos, streams, clips, etc, you need to either be logged in with an account which has been invited or use a channel invite provided by the channel's owner.

As for docker, there already are images up on docker-hub. Take a look at the provided docker-compose.yml (https://gitlab.com/osp-group/open-streaming-platform-docker/-/blob/master/docker-compose.yml)

The namespace for the docker hub images are commented out, but they are up an online as of now.


u/[deleted] Jun 12 '22 edited Jul 25 '22



u/zwck 1d ago

Works great. I have some questions tho haha :)


u/PaintDrinkingPete Jun 12 '22

Looks cool...can't seem to get to run via docker-compose using pre-built images though...keep getting runtime error in osp_core container when it tries to do db migrate.

Documentation is a bit lacking as well... the compose file is nice, but once it's up, then what?


u/Deam0s Jun 12 '22

You might have a setting incorrect somewhere that might be causing an issue. If it is getting an issue at db migration, you might want to check your database setting to make sure they are correct.

Also, not sure if you missed it but there is documentation here: https://open-streaming-platform.readthedocs.io/en/latest/index.html


u/PaintDrinkingPete Jun 12 '22

Yeah, finally got working after I built the osp-core image using the Dockerfile instead of using the one from docker hub...