Skip to content
/ deadsfu Public

Dead-simple WebRTC broadcasting. From the browser, or your application. Cloud-native and scalable.

License

Notifications You must be signed in to change notification settings

x186k/deadsfu

Repository files navigation

Dead-simple Scalable WebRTC Broadcasting

DeadSFU: dead-simple broadcasting and video transmission.

HTML tutorial

Quick Links

Feature List

  • Dead-Simple Usage: Meticulously crafted for ease-of-use, scalability, and performance.
  • Large Scale WebRTC Broadcasting: SFUs can be easily cascaded to create clusters of hundreds of servers.
  • Cloud Native Docker: Ready to go Docker images for cloud-native broadcasting clusters.
  • Auto Scaling Compatible: HTTP signalling is compatible with most cluster-autoscaling methods.
  • OBS Broadcasting: Send from OBS to DeadSFU for doing WebRTC broadcasting.
  • Browser Viewer: Browser viewer enables watching broadcasts.
  • Simple Ingress HTTPS Signalling: WHIP compatible: Send an Offer-SDP, get an Answer-SDP, and you're publishing!
  • Simple Egress HTTPS Signalling: WHIP-like: Send an Offer-SDP, get an Answer-SDP, and you're receiving!
  • Designed For Fault Tolerance: Single-peer-ingress design for practical large-scale fault-tolerant containerized broadcasting.
  • Kubernetes/Docker capable: Designed for Kubernetes or Swarm broadcasting clusters.
  • HTTP load balancer compatible: Designed standard HTTP load balancer compatibility on egress.
  • Dead-simple Install: Use a one-liner curl & untar command to prepare to broadcast.
  • No Runtime Dependencies: DeadSFU is a single binary that you can run locally or in production with a single command.

Don't see a feature on this list? Check the issue track to see if your feature is there, if not open a new issue. We need your input to make our roadmap, and we'd love to hear from you.

Quick Install

Linux Intel/AMD64

curl -sL https://github.com/x186k/deadsfu/releases/latest/download/deadsfu-linux-amd64.tar.gz | tar xvz

Linux ARM64

curl -sL https://github.com/x186k/deadsfu/releases/latest/download/deadsfu-linux-arm64.tar.gz | tar xvz

macOS Intel CPU

curl -sL https://github.com/x186k/deadsfu/releases/latest/download/deadsfu-darwin-amd64.tar.gz | tar xvz

macOS Apple CPU

curl -sL https://github.com/x186k/deadsfu/releases/latest/download/deadsfu-darwin-arm64.tar.gz | tar xvz

Docker Pull

docker pull x186k/deadsfu

Windows

curl  https://github.com/x186k/deadsfu/releases/latest/download/deadsfu-windows-amd64.zip -sLo tmp && tar -xvf tmp && del tmp

Quick Start: OBS / FTL ingress

Remove the --ftl-key args if you are not using OBS/FTL.

Linux/macOS

./deadsfu --http :8080 --html internal --ftl-key 123-abc

Windows

.\\deadsfu --http :8080 --html internal --ftl-key 123-abc

Docker Host Networking (recommended) Only Works on Linux

docker run --name deadsfu --pull always --network host x186k/deadsfu --http :8080 --html internal --ftl-key 123-abc

Host networking can ease WebRTC connecting in difficult environments. The SFU can share the true host IP addresses.

Docker Forwarded Ports (Mac,Win,Linux)

docker run --name deadsfu --pull always -p 8080:8080 -p 8084:8084/udp -p 8084:8084/tcp x186k/deadsfu --http :8080 --html internal --ftl-key 123-abc

Quick Start: Browser Ingress

Not Yet, file an issue for help

Getting Support

Author's email is cameron@cameronelliott.com

Slack link: Slack Invite Link

Email Newsletter

Get the email newletter.

Contributing

If you have an idea to share, please post it on the Github discussions board.
If you have found a bug, please file an issue on Github issues If you have suggestions or ideas, please submit an issue or create a discussion. Your ideas are wanted!

Getting Latest Updates

You can update by simply re-running the curl and tar commands again as in the install directions.

For Docker, simply re-pull the latest image.

Compile From Source

The deadsfu repo includes git submodules.

So, use the --recursive flag when checking out. Git submodules.

You need a version of Go greater than 1.16, we recommend 1.17 or later.

Clone the main repo:

git clone --recursive https://github.com/x186k/deadsfu

Change dir:

cd deadsfu

Build with Go:

go build .

DeadSFU Thanks