Owncast
Self-hosted live streaming and chat server
Owncast is a self-hosted live video streaming server with built-in chat, offering an independent alternative to commercial streaming platforms. It targets creators who want to own their live stream. It is deployed via Docker or a single binary.
Key features
- Self-hosted live streaming
- Built-in chat and emoji
- Standard RTMP ingest
- Customizable web page
Pros & cons
Strengths
- Own your live stream
- Simple single-binary deploy
- Built-in chat
Trade-offs
- No multi-streamer support
- Bandwidth is on you
Owncast replaces
Last reviewed Aug 26, 2026 · 780 words
Every viewer of an Owncast stream costs you their full bitrate in upload bandwidth, and that arithmetic decides whether Owncast works for you before any other feature does. A 1080p stream at 4,500 kbps with 20 concurrent viewers is 90 Mbps of sustained upload from wherever Owncast runs; on a typical home connection with 20 to 40 Mbps up, that is 5 to 8 viewers before the stream stutters for everyone. The server itself is trivial: a single Go binary, 256 MB of RAM, MIT licence, 11,473 stars. The bandwidth is the product, and the catalogue's "bandwidth is on you" con is the whole story in four words.
Run it in Docker, point OBS at it
services:
owncast:
image: owncast/owncast:latest
ports:
- "8080:8080"
- "1935:1935"
volumes:
- ./data:/app/data
restart: unless-stopped
Port 8080 is the web page and the admin panel at /admin; port 1935 is RTMP ingest. Log into the admin panel before your first stream, set a strong admin password, and create your own stream key under the stream keys section. In OBS the server is rtmp://your-host:1935/live and the stream key is whatever you set. Start streaming, refresh the page, and video appears after 15 to 30 seconds of HLS segment buffering. That latency is inherent to HLS; Owncast lets you trade it against buffering stability in the video settings, with the low-latency setting landing at a handful of seconds.
Put Caddy in front of 8080 for HTTPS. Leave 1935 as plain RTMP to OBS, which is normal, and firewall it to your own IP if the host is a VPS.
Transcoding is where the CPU goes
Owncast uses ffmpeg to produce HLS, and by default it re-encodes your stream into one or more quality variants. Each 1080p variant costs roughly a full modern core; a 4-core VPS handles one 1080p and one 720p variant with headroom, and a cheap 2-core box does not. Two settings change that. Video passthrough skips re-encoding entirely and forwards your OBS output as-is, cutting CPU to almost nothing at the cost of offering viewers a single quality. Hardware acceleration via VAAPI, NVENC or VideoToolbox is supported when the host has the GPU and the container can see it. For a solo streamer on a home box, passthrough plus a sensible OBS bitrate is the honest default.
Object storage solves the bandwidth problem
The fix for the upload arithmetic in the opening is to not serve video from your own connection. Owncast can write its HLS segments to any S3-compatible bucket and rewrite the playlist so viewers pull from there. Configure it under storage in the admin panel with an endpoint, bucket and keys; Cloudflare R2, Backblaze B2 and a self-hosted MinIO on a well-connected VPS all work. Your box then uploads one copy of the stream to the bucket and the object store's egress serves 200 viewers as easily as 2. At last check R2 charged nothing for egress, which makes it the obvious pairing for anyone who expects an audience beyond friends.
Chat, fediverse and the page
Chat is built in with no third-party account: viewers pick a name, moderators get a panel, custom emoji are uploaded in the admin area, and chat history persists on your disk. Owncast also speaks ActivityPub, so a Mastodon or Misskey user can follow your stream and get a post when you go live, which is the closest thing to a notification system it has. The public page is yours to edit: markdown description, tags, social links, custom CSS, and an optional listing in the public directory at owncast.online.
What it does not do is host several streamers. One instance is one channel with one live stream; a community with 5 streamers wants 5 instances or PeerTube, which added live streaming and handles many channels but is a far heavier stack.
What I'd do
Owncast on a small VPS in Docker, Caddy for TLS, video passthrough on, OBS at 1080p and 4,500 kbps, or 720p at 2,500 kbps if the audience is on phones. HLS segments to R2 or B2 from day one so upload bandwidth is never the ceiling. Back up ./data for chat history and settings. If you need multiple channels or a video-on-demand library, that is PeerTube's job; for a single person who wants to own a live stream and the chat under it, Owncast is the least fuss I have found among media servers, and the whole thing is a 20-minute afternoon.
Compare Owncast
2 head-to-head comparisons.
Similar media servers apps
Jellyfin
Media ServersFree software media system for streaming your library
Replaces Plex, Emby
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify