Self-hosted Live Video Streaming Website + Backend
Reference website: https://boltstream.me
This is the result of a series of blog posts that I made here
Join us on Libera.Chat! #boltstream
- Live stream via RTMP with a stream key to your RTMP ingest server
- Any number of simultaneous live streams
- Playback via standard HLS
- Restrict playback with HLS segment encryption (AES-128)
- Pay-per-minute 🙂
- Capture VODs (recordings) of live streams
- Live-clipping of VODs via nginx-vod-module
- Timed metadata via WebVTT
- Synchronized chat room messages
- Synchronized play-by-play live sports events
- Web application
- Web server
- RTMP ingest
- Actually, we use a fork that adds a number of features that we use. The original nginx-rtmp hasn’t been updated in years.
- HLS VODs
- Live clipping
- Various video encoding/packaging
- Realtime sports play-by-play data synchronized to your live streams
- Audio content recognition (Shazaam for your live streams)
Clone this repo!
ansible/site.yml and update all the variables like
You will also need to modify some variables in
terraform/terraform.tfvars, and then from within the
terraform directory, just run:
$ make apply
At the end of the Terraform deployment (might take 10-15 minutes), you will have a full self-hosted live video streaming platform with your own RTMP ingest and playback endpoints.
If you’re interested in running the Django app locallly, then you can do:
# Set up Python virtualenv $ make venv $ source venv/bin/activate # Install Python dependencies $ make deps # Apply database migrations (db.sqlite3) and load the initial data $ make cleandb # Run the Django development server $ make run
You can log in with the default user at:
I put this stack together about a year ago and haven’t been able to push much further on it.
Ideally it could be deployed in Docker (I don’t know anything about Docker or Kubernetes). The nginx and Django stuff seems like it could be pretty easy to containerize.
Help me package this up! We need more federated live-streaming platforms! It can’t just always be Twitch.tv, YouTube, and Facebook!