An open-source platform for self-hosted live video streaming with viewer interaction (chat).
Owncast is an open-source, self-hosted platform for live video streaming. It allows creators to broadcast content directly to their audience. It features built-in chat and customization options. Everything in a form of a sleek web interface.



Alternative to: Twitch, YouTube
✅ Decentralized archiecture
✅ No reliance on a central company
✅ No restrictive nor opaque content policies
✅ No extensive data collection
✅ Robust streaming solution
✅ Easy setup and maintenance
✅ Official Docker container available
❌Limited audience reach for now
❌Lacks advanced analytics
❌High bandwidth required for larger events
http://<server_address>:8080/hls/0/stream.m3u8.| Server OS Compatibility | Linux, Windows, MacOS (Docker supported) |
|---|---|
| Client Compatibility | Modern web browsers |
| Programming Language | Go |
| Database | SQLite (embedded) |
| Web Server | Built-in HTTP server; administrators are encouraged to use a reverse proxy server to provide HTTPS |
| Dependencies | ffmpeg |
| License | MIT License |
| Configuration | AJAX-based Web Interface |
| Community & Support | Active community; good documentation; install script and official Docker container available |
Begin with a fresh installation of Debian 12 (netinstall). First, install some essential packages:
apt -y install curl unzip sudo
Next, create a directory for Owncast and navigate to it:
mkdir /usr/local/bin/owncast
cd /usr/local/bin/owncast
Create a dedicated user for running Owncast with no login shell and blocked account for security purposes:
useradd -m -d /usr/local/bin/owncast -s /usr/sbin/nologin -p owncast owncast
passwd -l owncast
Download and install Owncast as the newly created user:
sudo -u owncast sh -c 'curl -s https://owncast.online/install.sh | bash'
Set up the systemd service to manage Owncast:
cd /etc/systemd/system
curl -s "https://raw.githubusercontent.com/owncast/owncast/refs/heads/develop/contrib/owncast-sample.service" >owncast-instance1.service
Modify the service file to specify the correct paths and user:
sed -i 's/\[path to owncast directory\]/\/usr\/local\/bin\/owncast\/owncast/g' /etc/systemd/system/owncast-instance1.service
sed -i 's/\[user to run owncast as\]/owncast/g' /etc/systemd/system/owncast-instance1.service
sed -i 's/\[group to run owncast as\]/owncast/g' /etc/systemd/system/owncast-instance1.service
Before starting the server, change the admin password:
sed -i 's/ExecStart\=.*/ExecStart=\/usr\/local\/bin\/owncast\/owncast\/owncast -adminpassword <your_new_password>/g' /etc/systemd/system/owncast-instance1.service
Reload the systemd daemon to apply the changes, then enable and start the Owncast service:
systemctl daemon-reload
systemctl enable owncast-instance1
systemctl start owncast-instance1
After starting the server, make sure to change the default streaming key immediately. This and other settings made in the web interface will persist after server restarts. Navigate to http://
To stream to Owncast without re-encoding, use the following FFmpeg command (only if the source stream is in an appropriate format):
ffmpeg -i -codec copy -f flv "rtmp://<your_server_address>/live/<streaming_key>"
For streaming with re-encoding (CPU intensive), use:
ffmpeg -i -vcodec libx264 -preset veryfast -acodec aac -f flv "rtmp://<your_server_address>/live/<streaming_key>"
After starting your stream, wait at least 30 seconds to ensure the stream has started properly and is visible on the web frontend.
If you want to save CPU resources on the Owncast server, you can disable server-side transcoding. Ensure your source is in the correct format, playable by the web interface. Proceed at your own risk and revert changes if streaming fails.
To disable server-side transcoding:
Go to Configuration -> Video -> Stream Output -> Edit the selected profile -> Advanced -> Video Passthrough -> enable Use video passthrough.
For additional details, please refer to the following resources:
Developer: Gabe Kangas, Owncast, community