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 doctordiagnostic 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