I built a free, self-hosted alternative to Restream — meet SocialLive

I built a free, self-hosted alternative to Restream — meet SocialLive

Every multi-streaming platform out there — Restream, StreamYard, Castr — charges you a monthly fee to do one thing: send your video to more than one platform at a time.

I kept asking myself a simple question: why? The actual work is done by FFmpeg, which is free and runs on almost anything. The rest is a queue of RTMP connections.

So I built SocialLive — an open-source, self-hosted live streaming dashboard that broadcasts recorded videos to YouTube, Facebook, Twitch, and Kick simultaneously, from a web page running on your own machine.

  • Repo: https://github.com/AxionAura/social-live
  • License: AGPL-3.0 — free forever, no premium tier

What it does

  • Multi-destination streaming — one video → any combination of platforms, each with its own FFmpeg process, live metrics, and logs
  • Stream recorded videos as live — with infinite loop, repeat-N, or one-shot modes
  • Scheduling — queue a stream for later; the background scheduler starts it even with your browser closed
  • Real-time monitoring — FPS, bitrate, uptime, reconnect count per destination
  • Video library — drag & drop upload, thumbnails, search, rename
  • Your credentials stay yours — stream keys are encrypted with AES-256-GCM at rest, never logged, never sent to any third party

What it deliberately doesn't do

No accounts on our servers. No telemetry. No cloud component at all — the dashboard talks to your machine, your machine talks to YouTube/Twitch/Kick. That's the whole picture. (OAuth-based metadata management is on the roadmap, but the stream-key path works today and keeps the "no vendor" promise intact.)

Under the hood

  • FFmpeg via argument arrays (never a shell) — command-injection safe by design
  • node:sqlite — zero native modules, so it runs on a Raspberry-Pi-class box or Android/Termux
  • React 19 + Material UI dashboard with dark/light themes
  • Hardened by default: SSRF protection on ingest URLs, rate limiting, scrypt password hashing, signed HttpOnly cookies, an audit log, and a social-live doctor diagnostic command

41 → 44 automated tests, including an end-to-end test that pushes a real video through FFmpeg into an RTMP receiver — running on every commit via GitHub Actions.

Getting started

One line (Linux / macOS / Termux — the installer provisions Node.js and FFmpeg, builds everything and registers a background service):

curl -fsSL https://raw.githubusercontent.com/AxionAura/social-live/main/install.sh | bash

Prefer containers on a VPS? Docker:

git clone https://github.com/AxionAura/social-live.git
cd social-live && cp .env.example .env
docker compose -f docker/docker-compose.yml up -d

Open http://localhost:3000, create the admin account, paste your stream keys, upload a video, go live. Native installs (Linux, Windows, macOS, Termux) are documented too.

Why "AxionAura"?

SocialLive is part of AxionAura — my open-source initiative built on one principle: no one should be locked out. Every project is free to use, modify, and distribute.

If you stream — or you've ever paid for multistreaming — try it and tell me what breaks. Issues and PRs are very welcome: https://github.com/AxionAura/social-live/issues

← Back to blog