# SocialLive **Open-source, self-hosted, cross-platform live streaming control platform.** > **[AxionAura](https://github.com/AxionAura)** ยท Open source by default. Free for everyone. [![CI](https://github.com/AxionAura/social-live/actions/workflows/ci.yml/badge.svg)](https://github.com/AxionAura/social-live/actions/workflows/ci.yml) ## ๐Ÿ“ธ Screenshots | | | |---|---| | ![Dashboard](docs/screenshots/dashboard-dark.png) | ![Live stream monitoring](docs/screenshots/stream-detail-dark.png) | | ![Multi-platform destinations](docs/screenshots/destinations-dark.png) | ![Video library](docs/screenshots/videos-dark.png) | **Dashboard** ยท live stream monitoring ยท multi-platform destinations (YouTube, Facebook, Twitch, Kick) ยท video library โ€” light mode included, see [`docs/screenshots/`](docs/screenshots). Broadcast recorded videos to **YouTube Live**, **Facebook Live**, **Twitch**, and **Kick** from a browser-based dashboard โ€” while keeping your data, credentials, videos, and streaming infrastructure under your own control. No mandatory cloud services. No external SaaS accounts. Runs on Linux, Windows, macOS, Android/Termux, Docker, VPS, or your laptop. --- ## โœจ Features | Feature | Status | |---------|--------| | ๐ŸŽฌ **Recorded video streaming** | โœ… MP4 / MOV / MKV | | ๐ŸŒ **YouTube Live** | โœ… RTMPS (stream key) | | ๐ŸŒ **Facebook Live** | โœ… RTMPS (stream key) | | ๐ŸŸฃ **Twitch** | โœ… RTMPS (stream key) | | ๐ŸŸข **Kick** | โœ… RTMPS (stream key) | | ๐Ÿ–ฅ **Browser dashboard** | โœ… Material UI, light/dark, responsive | | ๐Ÿ” **Local auth** | โœ… First-run admin setup, sessions | | ๐Ÿ”’ **Encrypted credentials** | โœ… AES-256-GCM at rest | | ๐Ÿ›ก **SSRF protection** | โœ… Private IP/host blocking | | ๐Ÿ” **Auto-reconnect** | โœ… Exponential backoff | | โฑ **Scheduled streams** | โœ… Background scheduler | | โ™พ **Loop modes** | โœ… None / Nร— / Infinite | | ๐Ÿ“Š **Live metrics** | โœ… FPS, bitrate, duration | | ๐Ÿ“œ **Stream logs** | โœ… Per-destination, redacted | | ๐Ÿ”” **Notifications** | โœ… Telegram (start / stop / fail) | | ๐Ÿ“ **Video library** | โœ… Upload, search, rename, delete | | ๐Ÿฉบ **Diagnostics** | โœ… `social-live doctor` | | ๐Ÿ“ฆ **Docker** | โœ… Official image + compose | | ๐Ÿค– **Termux/Android** | โœ… Supported | --- ## ๐Ÿš€ Quick Start ### Option 1: One-line installer (recommended) **Linux / macOS / Termux:** ```bash curl -fsSL https://raw.githubusercontent.com/AxionAura/social-live/main/install.sh | bash ``` **Windows 10/11 (PowerShell):** ```powershell irm https://raw.githubusercontent.com/AxionAura/social-live/main/install.ps1 | iex ``` The installer provisions Node.js and FFmpeg if they're missing (user-local runtime โ€” no admin rights needed on Windows), downloads and builds SocialLive into `~/.social-live` (Windows: `%USERPROFILE%\.social-live`), registers a background service (systemd user unit / launchd / Scheduled Task), and opens the dashboard in your browser. Later: `social-live update` to upgrade, `social-live doctor` to diagnose, `--uninstall` / `-Uninstall` to remove. Review the script before running โ€” it's part of the repo. ### Option 2: Docker (recommended for VPS) ```bash # 1. Clone and configure git clone https://github.com/AxionAura/social-live.git cd social-live cp .env.example .env # Edit .env (SESSION_SECRET, ENCRYPTION_KEY, etc.) # 2. Build and start docker compose -f docker/docker-compose.yml up -d # 3. Open http://your-server:3000 # First run โ†’ create admin account โ†’ add YouTube/Facebook โ†’ upload video โ†’ Go live! ``` ### Option 3: Native (manual โ€” Linux / macOS / Windows) ```bash # Prerequisites: Node.js 22.13+, FFmpeg git clone https://github.com/AxionAura/social-live.git cd social-live npm ci npm run build # First run: interactive setup npm run cli setup # Or run server directly: npm start # Open http://localhost:3000 ``` ### Option 4: Termux (Android โ€” or use the one-line installer) ```bash pkg install nodejs ffmpeg git git clone https://github.com/AxionAura/social-live.git cd social-live npm ci npm run build npm run cli setup npm start # Open http://localhost:3000 in your phone browser ``` --- ## โš™๏ธ Configuration Copy `.env.example` to `.env` and adjust: | Variable | Default | Description | |----------|---------|-------------| | `APP_HOST` | `0.0.0.0` | Bind address | | `APP_PORT` | `3000` | HTTP port | | `DATA_DIR` | `./data` | Root for DB, videos, logs, keys | | `DATABASE_URL` | `sqlite:./data/database/app.db` | SQLite path (or `postgresql://...` โ€” future) | | `FFMPEG_PATH` | `ffmpeg` (PATH) | Override FFmpeg binary | | `FFPROBE_PATH` | `ffprobe` (PATH) | Override FFprobe binary | | `SESSION_SECRET` | *auto-generated* | Cookie signing secret | | `ENCRYPTION_KEY` | *auto-generated* | **Back this up!** Credentials unrecoverable without it | | `MAX_UPLOAD_SIZE` | `5GB` | Max video upload size (bytes) | | `MAX_CONCURRENT_STREAMS` | `4` | Simultaneous streams limit | | `VIDEO_BITRATE_KBPS` | `4500` | Encoding video bitrate | | `AUDIO_BITRATE_KBPS` | `128` | Encoding audio bitrate | | `FFMPEG_PRESET` | `veryfast` | x264 preset (use `superfast` on weak devices) | | `VIDEO_FPS` | `30` | Output frame rate โ€” Kick requires 30/60 | | `TELEGRAM_BOT_TOKEN` | *(empty)* | Optional: Telegram bot token for stream notifications | | `TELEGRAM_CHAT_ID` | *(empty)* | Optional: chat ID to receive the notifications | | `ALLOW_PRIVATE_RTMP_TARGETS` | `false` | **Dev only** โ€” allows `rtmp://127.0.0.1/...` | | `LOG_LEVEL` | `info` | `debug` / `info` / `warn` / `error` | --- ## ๐Ÿ”‘ Platform Setup ### YouTube Live 1. Open **YouTube Studio โ†’ Create โ†’ Go live** 2. Choose **Streaming software** (not webcam) 3. Copy **Stream key** 4. In SocialLive: **Destinations โ†’ Add โ†’ YouTube** โ†’ paste key ### Facebook Live 1. Open **Live Producer** (facebook.com/live/production) 2. Choose **Streaming software** 3. Copy **Stream key** 4. In SocialLive: **Destinations โ†’ Add โ†’ Facebook** โ†’ paste key ### Twitch 1. Open the [Twitch Creator Dashboard](https://dashboard.twitch.tv) โ†’ **Settings โ†’ Stream** 2. Copy the **Primary Stream Key** (2FA required on your Twitch account) 3. In SocialLive: **Destinations โ†’ Add โ†’ Twitch** โ†’ paste key ### Kick 1. Open [creator.kick.com](https://creator.kick.com) โ†’ **Settings โ†’ Stream Key** 2. Copy the **Stream Key** 3. In SocialLive: **Destinations โ†’ Add โ†’ Kick** โ†’ paste key > **Note:** Stream keys are encrypted on your server and never logged or exposed to the browser. --- ## ๐Ÿ–ฅ Dashboard Overview | Page | Purpose | |------|---------| | **Dashboard** | Stats + active streams (manage/stop) | | **Streams** | List, filter, create, view details | | **New Stream** | 5-step wizard (video โ†’ destinations โ†’ config โ†’ review โ†’ start) | | **Videos** | Upload, search, rename, delete, thumbnails | | **Destinations** | Add/remove YouTube/Facebook, test connectivity | | **History** | Completed/failed streams with filters | | **Settings** | Password, system info, diagnostics, audit log | --- ## ๐Ÿ“– Documentation | Guide | Link | |-------|------| | Installation (Linux / Windows / macOS / Termux / Docker / VPS) | `docs/installation.md` | | Configuration reference | `docs/configuration.md` | | YouTube setup walkthrough | `docs/platform-youtube.md` | | Twitch setup walkthrough | `docs/platform-twitch.md` | | Kick setup walkthrough | `docs/platform-kick.md` | | Facebook setup walkthrough | `docs/platform-facebook.md` | | Usage: upload โ†’ stream โ†’ schedule โ†’ history | `docs/usage.md` | | Troubleshooting (FFmpeg, ports, permissions, connections) | `docs/troubleshooting.md` | | Security model (encryption, SSRF, hardening) | `docs/security.md` | | Developer guide (architecture, API, contributing) | `docs/developer.md` | --- ## ๐Ÿ›ก Security - **No cloud dependency** โ€” everything runs on your infrastructure - **Credentials encrypted at rest** โ€” AES-256-GCM with a master key you control - **Stream keys masked** โ€” never in logs, browser storage, or API responses - **SSRF protection** โ€” private IPs, loopback, internal hostnames blocked by default - **Command injection safe** โ€” FFmpeg arguments via `spawn` array, never shell - **Rate limiting** โ€” on auth, stream start/stop, destination endpoints - **Secure cookies** โ€” HttpOnly, SameSite, signed, HTTPS in production - **Audit log** โ€” security-relevant events recorded See `docs/security.md` for the full threat model and hardening checklist. --- ## ๐Ÿงช Testing ```bash npm test # Unit + integration tests npm run typecheck # TypeScript strict check ``` --- ## ๐Ÿค Contributing 1. Fork the repo 2. Create a feature branch 3. Write tests for new behavior 4. Ensure `npm test` and `npm run typecheck` pass 5. Open a PR with a clear description See `CONTRIBUTING.md` and `docs/developer.md` for details. --- ## ๐Ÿ“„ License [AGPL-3.0-or-later](LICENSE) โ€” free for everyone to use, study, modify, and self-host. Copyleft, on purpose: if you modify SocialLive and offer it as a hosted service, you must share your modified source code. That keeps every fork as open as the original โ€” no one gets locked out. Regular self-hosting (personal or commercial) requires nothing from you. --- ## ๐Ÿ—บ Roadmap | | | |---------|---------| | โœ… **Shipped** | YouTube ยท Facebook ยท Twitch ยท Kick ยท multi-destination ยท scheduling ยท loop modes ยท one-line installer ยท Telegram notifications | | ๐Ÿ”œ **Next** | Recurring schedules ยท email notifications ยท stream thumbnails in history ยท richer live metrics | | ๐Ÿ”ญ **Later** | TikTok & more platforms ยท OAuth (metadata from dashboard) ยท platform APIs (stream health, chat) | | ๐ŸŒ™ **Future** | Webcam & screen capture ยท scene editor ยท overlays/watermarks ยท audio mixer | | ๐Ÿ—๏ธ **Long-term** | Multi-user ยท RBAC ยท team workspaces ยท distributed streaming | --- ## ๐Ÿ’ฌ Community - Issues & feature requests: GitHub Issues - Discussions: GitHub Discussions - Security reports: `SECURITY.md` --- **Made for streamers who want full control.** ๐ŸŽ™๏ธ๐Ÿš€ ---

AxionAura โ€” Open source by default. Free for everyone.
Blog ยท GitHub ยท Issues