Owncast on a VPS is a solution for setting up your own live streaming server, giving you complete control over broadcasts, audience, and content, providing an independent alternative to centralized platforms.
In an era dominated by large streaming platforms like Twitch and YouTube, many content creators and communities are seeking alternatives that offer more freedom, privacy, and control. Owncast is a powerful, open-source, and self-hosted live streaming solution that allows anyone to launch their own broadcast server. By hosting Owncast on a Virtual Private Server (VPS), you gain full control over your stream, from choosing codecs to managing your community and integrating with other services.
This article provides a detailed guide to installing, configuring, optimizing, and maintaining Owncast on a VPS. We will cover all stages, from selecting a suitable server to backing up and updating, so you can confidently deploy your own live streaming platform.
What is Owncast and Why Choose Owncast on a VPS?
Owncast is free and open-source software designed to create your own real-time live streaming server. Unlike popular commercial services, Owncast provides full control over your content, user data, and community. You can stream video and audio, interact with your audience through the built-in chat, and integrate it with other services like Mastodon or ActivityPub to create a decentralized network.
Choosing Owncast on a VPS is driven by several key advantages that make it attractive to developers, independent broadcasters, and communities.
Advantages of Self-Hosted Owncast
- Full Control: When you use self-hosted Owncast, you are the sole owner of the data. This means no censorship, no content restrictions (within the laws of your jurisdiction), and the ability to fully customize it to your needs. You set the rules for your community.
- Privacy: Your data and your audience's data are not shared with third-party companies for analysis or monetization. This is especially important for those who value privacy and do not want their content used for targeted advertising.
- Flexibility and Scalability: By hosting Owncast on a server, you can scale resources according to your audience growth. On a VPS, it's easy to increase RAM, CPU cores, or disk space to ensure stable operation even under high load.
- No Subscription Fees or Commissions: Unlike commercial platforms that may charge a percentage of your earnings or require a subscription for advanced features, Owncast is free. Your expenses are limited only to the cost of VPS rental and network traffic.
- Integration: Owncast easily integrates with other open-source services and applications, allowing you to create unique ecosystems for your content and community.
Comparison with Centralized Platforms
To better understand the value of Owncast, let's compare it with popular centralized platforms:
| Characteristic | Owncast (on VPS) | Centralized Platforms (Twitch, YouTube Live) |
|---|---|---|
| Content Control | Full (you set the rules) | Limited (platform dictates rules, possible censorship, blocks) |
| Data Privacy | Full (data remains on your server) | Limited (data collected and analyzed by the platform) |
| Monetization | Full control (any methods without commissions) | Limited (platform commissions, strict rules) |
| Customization | High (from appearance to functionality) | Low (limited by platform capabilities) |
| Scalability | Depends on VPS (easy to increase resources) | Automatic (but without control over infrastructure) |
| Technical Complexity | Requires server administration skills | Low (ready-to-use "out of the box" solution) |
| Cost | VPS rental (from $5-10/month) | Free for the user, but indirect "payments" with data and commissions |
By choosing Owncast on a VPS, you are opting for independence and freedom, which can be critically important for certain projects and communities. If you are interested in other decentralized video platforms, we recommend checking out our article on PeerTube on VPS: Installation, Configuration, and Maintenance.
System Requirements for Owncast on a Server: What You Need to Know?
Successful Owncast installation and stable operation directly depend on adequately selected system resources. Owncast is quite efficient, but live streaming itself is a resource-intensive task, especially when it comes to real-time video transcoding and serving a large number of viewers. Below are recommendations for minimum and recommended configurations.
Minimum Requirements for Owncast Installation
These requirements are suitable for test environments, small personal broadcasts, or streams with a very limited number of viewers (up to 5-10 people) and low bitrate (up to 720p, 2 Mbps).
- Operating System: Ubuntu 20.04+, Debian 11+, CentOS 7+, or any other modern Linux system with Docker support.
- Processor (CPU): 2 vCPU with a clock speed of 2.0 GHz or higher. Owncast heavily uses the CPU for transcoding.
- Random Access Memory (RAM): 2 GB. This is sufficient for Owncast itself and basic system processes. More may be needed with active chat or a large number of simultaneous connections.
- Disk Space: 20 GB NVMe SSD. NVMe drives are significantly faster than standard SSDs or HDDs, which is important for fast writing and reading of streaming data and cache.
- Network Bandwidth: 50-100 Mbps symmetric channel. It's important to have sufficient speed for both incoming streams from the streamer and outgoing streams to viewers.
- Additional: Docker and Docker Compose installed.
Recommended Configurations for Different Loads
For stable Owncast operation with a growing audience and higher stream quality, more powerful configurations are recommended:
- Small Audience (10-30 viewers, 720p-1080p, 3-5 Mbps):
- CPU: 4 vCPU, 2.5 GHz+
- RAM: 4-8 GB
- Disk: 50-100 GB NVMe SSD (more if you plan to store VOD)
- Network: 100-200 Mbps
- Medium Audience (30-100 viewers, 1080p, 5-8 Mbps):
- CPU: 6-8 vCPU, 2.8 GHz+
- RAM: 8-16 GB
- Disk: 100-200 GB NVMe SSD
- Network: 200-500 Mbps
- Large Audience (100+ viewers, 1080p+, 8-12 Mbps):
- CPU: 8+ vCPU, 3.0 GHz+ (possibly a dedicated server)
- RAM: 16-32 GB
- Disk: 200+ GB NVMe SSD (with expansion capability)
- Network: 500 Mbps - 1 Gbps
Important Notes:
- Transcoding: If you plan to accept one incoming stream (e.g., 1080p) and transcode it into multiple resolutions (720p, 480p, 360p) for adaptive streaming, this will significantly increase CPU load. Owncast supports hardware acceleration (NVENC/VAAPI), but its use will require a special VPS configuration with a GPU or hardware acceleration support in a virtualized environment. Most standard VPS do not provide a GPU.
- Bitrate: The higher the incoming stream bitrate and the number of transcoded versions, the more CPU and network bandwidth will be required.
- VOD Storage: If you plan to save recordings of your broadcasts (Video On Demand), ensure you have sufficient disk space. Recordings can take up a significant amount of volume.
Careful selection of a VPS according to these requirements will ensure stable and high-quality operation of your Owncast platform.
Looking for a reliable server for your projects?
VPS from $10/month and dedicated servers from $9/month with NVMe, DDoS protection, and 24/7 support.
View Offers →Step-by-Step Owncast Installation on a VPS with Docker and Docker Compose
Installing Owncast using Docker and Docker Compose is the recommended method, as it provides application isolation, simplifies dependency management, and facilitates the update process. Let's look at each step in detail.
Preparing the VPS for Owncast Docker Installation
- Connect to the VPS via SSH:
Use an SSH client to connect to your server. Replace
your_userwith your server's username (usuallyrootoradmin), andyour_vps_ipwith your VPS's IP address.ssh your_user@your_vps_ip - Update the system:
Always start by updating the package manager and installed packages to ensure all components are up-to-date and known vulnerabilities are addressed.
sudo apt update sudo apt upgrade -y - Install Docker:
Docker is a platform for containerizing applications. Owncast will run inside a Docker container. Follow the official instructions to install Docker Engine on your system. For Ubuntu/Debian, this usually looks like this:
sudo apt install ca-certificates curl gnupg lsb-release -y sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -yAdd your user to the
dockergroup so you don't have to usesudofor every Docker command (replaceyour_user):sudo usermod -aG docker your_user newgrp dockerVerify Docker installation:
docker run hello-world - Install Docker Compose:
Docker Compose allows you to define and run multi-container Docker applications. Although Owncast consists of a single container, using Docker Compose simplifies configuration and volume management.
With Docker Engine version 20.10 and later,
docker-composecomes as a plugin, which we installed in the previous step (docker-compose-plugin). It is now available via thedocker composecommand (without a hyphen).Verify Docker Compose installation:
docker compose version - Configure Firewall (UFW):
It's important to configure the firewall to protect your server. Allow SSH (port 22), HTTP (port 80), and HTTPS (port 443). Owncast also uses port 8080 by default for its web interface and port 1935 for the RTMP stream. If you are not using a reverse proxy, these ports will also be required.
sudo ufw allow OpenSSH sudo ufw allow http sudo ufw allow https sudo ufw allow 8080/tcp # For direct access to Owncast without a reverse proxy sudo ufw allow 1935/tcp # For incoming RTMP stream sudo ufw enable sudo ufw status
Deploying Owncast with Docker Compose
Now that the VPS is prepared, you can proceed with deploying Owncast using Docker Compose.
- Create a directory for Owncast:
Create a separate directory for all Owncast files. This will help maintain order and simplify backups.
mkdir ~/owncast cd ~/owncast - Create the
docker-compose.ymlfile:Inside the
~/owncastdirectory, create a file nameddocker-compose.ymland add the following content. This file defines how Owncast will be launched in Docker.nano docker-compose.ymlPaste the following code:
version: '3.8' services: owncast: image: owncast/owncast:latest container_name: owncast restart: unless-stopped ports: - "8080:8080" # Owncast web interface - "1935:1935" # RTMP for incoming stream volumes: - ./data:/app/data # Owncast data storage (configuration, video files, logs) environment: # Owncast settings (can be configured via admin panel after launch) # - OWNCAST_WEB_PORT=8080 # Web interface port (default 8080) # - OWNCAST_RTMP_PORT=1935 # RTMP port (default 1935) # - OWNCAST_DATABASE_FILE=/app/data/owncast.db # Path to database file # - OWNCAST_STREAM_KEY=your_secure_stream_key # Set your stream key # - OWNCAST_PRIVATE_INSTANCE=true # Make instance private (do not display in Owncast directory) # - OWNCAST_FEDIVERSE_ENABLED=true # Enable Fediverse integration # - OWNCAST_SERVER_URL=https://yourdomain.com # Your server URL for correct Fediverse and link operation logging: driver: "json-file" options: max-size: "10m" max-file: "5"Explanations for
docker-compose.yml:image: owncast/owncast:latest: Specifies Docker to download the latest version of the Owncast image.container_name: owncast: Assigns an easily recognizable name to the container.restart: unless-stopped: The container will automatically restart if it stops for any reason (e.g., after a VPS reboot), unless you manually stopped it.ports:: Port mapping.8080:8080means that port 8080 on your VPS will be forwarded to port 8080 inside the container. Similarly for RTMP port 1935.volumes:: This is a critical part../data:/app/datamounts the localdatadirectory (which will be created in~/owncast/data) to the/app/datadirectory inside the container. Here, Owncast will store its configuration, database, cache, and potentially video recordings. This ensures your data persists even if the container is deleted or updated.environment:: Here you can set Owncast environment variables. Some of them, likeOWNCAST_STREAM_KEYorOWNCAST_SERVER_URL, are best set here so they persist when the container is recreated. Most settings can be changed via the web admin panel after the first launch.
Save the file (Ctrl+X, Y, Enter).
- Start Owncast:
Now, start Owncast using Docker Compose. The
-dcommand runs the container in the background (detached mode).docker compose up -dThe process may take some time as Docker will download the Owncast image. Once complete, you can check the container status:
docker compose psYou should see that the
owncastcontainer is in the "Up" status. - First Access to Owncast:
Open a web browser and go to
http://your_vps_ip:8080. You should see the Owncast welcome page. At this stage, you can configure the administrator, set the channel name, and other basic parameters. In the admin panel, you will find your Stream Key, which will be needed to configure OBS or other streaming software.Congratulations, Owncast installation is complete! Now let's move on to configuring a reverse proxy and HTTPS.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Configuring Reverse Proxy and HTTPS for Owncast: Nginx and Caddy
Direct access to Owncast via an IP address and port 8080 is not an optimal solution for a production environment. Using a reverse proxy, such as Nginx or Caddy, allows you to:
- Bind Owncast to a domain name (e.g.,
stream.yourdomain.com). - Provide a secure connection using HTTPS (SSL/TLS certificates).
- Run multiple web services on a single VPS on standard ports 80/443.
- Hide internal application ports from the outside world.
You will need a domain name pointing to your VPS's IP address.
Configuring Nginx as a Reverse Proxy
Nginx is a high-performance web server often used as a reverse proxy. If you don't have Nginx installed yet, install it:
sudo apt install nginx -y
Next, create a configuration file for your domain. Replace yourdomain.com with your actual domain.
sudo nano /etc/nginx/sites-available/owncast.conf
Paste the following content:
server {
listen 80;
listen [::]:80;
server_name stream.yourdomain.com; # Replace with your domain
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name stream.yourdomain.com; # Replace with your domain
# SSL settings (will be updated by Certbot)
ssl_certificate /etc/letsencrypt/live/stream.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/stream.yourdomain.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
# Maximum request body size (for uploading files, avatars, etc.)
client_max_body_size 100M;
location / {
proxy_pass http://localhost:8080; # Owncast port inside the container
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; # Important for streaming
proxy_cache off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s; # Increase timeout for long connections
}
# Special location for RTMP (if you want to proxy RTMP through Nginx)
# This would require installing Nginx with the rtmp module and additional configuration
# For Owncast, it's simpler to proxy only HTTP/HTTPS and direct RTMP directly to port 1935
# If you want to proxy RTMP through port 443, more complex configuration is required.
# In this example, the RTMP stream will go directly to port 1935.
}
Save the file. Then create a symbolic link to sites-enabled and test the Nginx configuration:
sudo ln -s /etc/nginx/sites-available/owncast.conf /etc/nginx/sites-enabled/
sudo nginx -t
If there are no errors, restart Nginx:
sudo systemctl restart nginx
Now install Certbot to get free Let's Encrypt SSL certificates:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d stream.yourdomain.com
Certbot will automatically configure Nginx to use HTTPS. After that, restart Nginx again:
sudo systemctl restart nginx
Now your Owncast will be accessible at https://stream.yourdomain.com.
Configuring Caddy as a Reverse Proxy
Caddy is a modern web server known for its ease of configuration and automatic HTTPS certificate issuance. If you prefer Caddy, first install it. Follow the official instructions; for Debian/Ubuntu this is usually:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Create the Caddyfile:
sudo nano /etc/caddy/Caddyfile
Remove existing content and paste the following:
stream.yourdomain.com { # Replace with your domain
reverse_proxy localhost:8080 {
header_up Host {host}
header_up X-Real-IP {remote_ip}
header_up X-Forwarded-For {remote_ip}
header_up X-Forwarded-Proto {scheme}
# Increase timeout for streaming
transport http {
read_timeout 86400s
write_timeout 86400s
idle_timeout 86400s
}
}
# Increase upload file size limit, if necessary
# max_upload 100MB
# Incoming RTMP stream (if you want Caddy to proxy RTMP)
# For Owncast, it's simpler to leave RTMP directly on 1935.
# If you want to proxy RTMP through Caddy, a plugin is required.
# In this example, the RTMP stream will go directly to port 1935.
}
Caddy will automatically obtain and renew SSL certificates for stream.yourdomain.com. Save the file and restart Caddy:
sudo systemctl reload caddy
Now your Owncast will be accessible at https://stream.yourdomain.com. Make sure ports 80 and 443 are open in your firewall (we already did this during the preparation phase).
Owncast Maintenance: Backups, Updates, and Monitoring
Regular maintenance is key to the stable and secure operation of any self-hosted service. For Owncast, this includes backup strategies, update procedures, and performance monitoring.
Owncast Backup Strategies
Backups are your insurance policy. In the case of Owncast, the most important data are the database (owncast.db), configuration files, and possibly uploaded media files or broadcast recordings.
- What to back up:
- The
~/owncast/datadirectory: It contains all critical Owncast data, including the SQLite database (owncast.db), configuration files, uploaded avatars, logos, and, if you use built-in storage, recordings of your broadcasts (VODs).
- The
- Stop Owncast before backup (recommended):
To ensure data integrity, especially for the SQLite database, it is recommended to stop the Owncast container before creating a backup.
cd ~/owncast docker compose stop - Create a data archive:
After stopping the container, you can create a compressed archive of the
datadirectory:tar -czvf owncast_backup_$(date +%Y%m%d%H%M%S).tar.gz ~/owncast/dataThis command will create an
owncast_backup_YYYYMMDDHHMMSS.tar.gzfile in your home directory. - Restart Owncast:
After creating the archive, Owncast can be started again:
docker compose start - Automate backups:
For regular backups, it is recommended to use
cron. Create a script namedbackup_owncast.sh:nano ~/backup_owncast.shScript content:
#!/bin/bash OWNCAST_DIR="/root/owncast" # Specify the path to your Owncast directory BACKUP_DIR="/var/backups/owncast" # Directory for storing backups mkdir -p $BACKUP_DIR echo "Stopping Owncast..." docker compose -f $OWNCAST_DIR/docker-compose.yml stop echo "Creating backup..." tar -czvf $BACKUP_DIR/owncast_data_$(date +%Y%m%d%H%M%S).tar.gz $OWNCAST_DIR/data echo "Starting Owncast..." docker compose -f $OWNCAST_DIR/docker-compose.yml start echo "Backup complete."Make the script executable:
chmod +x ~/backup_owncast.shAdd a job to
crontab(for example, for a daily backup at 3 AM):crontab -eAdd the line:
0 3 * * * /bin/bash /root/backup_owncast.sh >> /var/log/owncast_backup.log 2>&1 - External backup storage:
It is crucial to store backups not only on the same VPS but also on external storage (S3-compatible storage, Google Drive, Dropbox, or another server). For this, you can use tools like Restic on VPS, which provides deduplicated and encrypted backups.
Owncast Docker Update Process
Updating Owncast is very simple thanks to Docker Compose:
- Navigate to the Owncast directory:
cd ~/owncast - Stop the current container:
docker compose stop - Download the new image version:
docker compose pullThis command will download the latest version of the
owncast/owncast:latestimage. - Start Owncast with the new image:
docker compose up -dDocker Compose will recreate the container with the new image, while preserving all your data thanks to the mounted
./datavolume. - Check logs:
After the update, check the logs to ensure everything started without errors:
docker compose logs -f
Performance Monitoring
Monitoring your VPS resources will help you identify problems in a timely manner and optimize settings.
- Using system utilities:
htop: Shows current CPU, RAM usage, and running processes.iftop: Monitors network activity (useful for tracking streaming traffic).df -h: Checks disk space usage.docker stats: Shows resource usage (CPU, RAM, network, disk) for all running Docker containers.
docker stats owncast - Monitoring systems:
For more advanced monitoring, consider installing specialized systems such as Netdata on VPS. Netdata provides detailed real-time graphs for all aspects of system performance, which is critical for high-load applications like live streaming.
- Owncast logs:
Regularly review Owncast logs to identify errors or warnings:
docker compose logs owncastTo view logs in real-time, use the
-fflag:docker compose logs -f owncast
Choosing the Optimal VPS for Owncast Under Real Load
Selecting the right VPS configuration for Owncast is a key factor in ensuring stable and high-quality live streaming. Server load heavily depends on the number of concurrent viewers, stream quality (resolution, bitrate), and the use of transcoding.
Resource Estimation for Various Use Cases
When determining the necessary VPS configuration for Owncast, consider the following factors:
- Number of viewers: The more viewers, the more outgoing network traffic and CPU resources (for serving HTTP requests and chat).
- Bitrate and resolution: High-quality video (1080p, 4K) with high bitrate requires more network bandwidth and significant CPU resources for transcoding.
- Transcoding: If you plan to accept one high-quality stream and automatically create multiple versions with lower resolution and bitrate (e.g., 1080p, 720p, 480p) for adaptive streaming, this will significantly increase CPU load. Without hardware acceleration, transcoding is one of the most resource-intensive processes.
- VOD storage: If you save broadcast recordings (Video On Demand), you will need a significant amount of disk space.
- Broadcast frequency: Constant or infrequent broadcasts? Constant broadcasts require a more stable and powerful configuration.
Below are recommendations for Owncast VPS configurations based on different load scenarios. Prices are approximate and may vary depending on the provider and region.
Comparison Table of VPS Configurations for Owncast
| Load Scenario | Processor (vCPU) | RAM (GB) | Disk (NVMe SSD) | Network (Mbps) | Approximate Cost (per month) | Notes |
|---|---|---|---|---|---|---|
| Test / Personal (up to 10 viewers, 720p, 2-3 Mbps) | 2 | 2-4 GB | 25-50 GB | 100-200 | $5 - $15 | Basic Owncast installation. No transcoding or minimal. |
| Small Channel (10-30 viewers, 1080p, 3-5 Mbps) | 4 | 4-8 GB | 50-100 GB | 200-500 | $15 - $30 | Good option for beginner streamers. Ability to transcode to 1-2 qualities. |
| Medium Channel (30-100 viewers, 1080p+, 5-8 Mbps) | 6-8 | 8-16 GB | 100-200 GB | 500-1000 | $30 - $60 | Optimal for active communities. Efficient transcoding to 2-3 qualities. |
| Large Channel (100+ viewers, 1080p+, 8-12 Mbps) | 8-12+ | 16-32 GB | 200-500 GB+ | 1000+ | $60 - $120+ | For professional broadcasts or large communities. Dedicated server or high-performance VPS recommended. |
Additional Considerations:
- Disk Type: NVMe SSD is critically important for Owncast, as it provides high read/write speeds, which is essential for buffering and processing streaming data.
- Network Bandwidth: This is arguably the most important resource for live streaming. Ensure your VPS provider offers sufficiently wide channels and adequate traffic limits. Some providers may charge extra for exceeding limits.
- VPS Location: Choose a VPS located geographically close to your primary audience to minimize latency and ensure the best viewing quality.
- Prices: The prices indicated are approximate and highly depend on the provider, region, and specific promotions. Valebyte.com offers various VPS plans that can be adapted to your Owncast needs.
A thorough analysis of your needs and selection of the appropriate VPS configuration will allow you to create a reliable and high-performance platform for Owncast, capable of handling real loads.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Common Problems and Their Solutions When Operating Owncast on a VPS
Operating Owncast on a VPS, like any other self-hosted application, can encounter various issues. Knowing typical errors and how to resolve them will help quickly restore service operation and ensure stable broadcasting.
Streaming and Performance Errors
- Buffering or lag issues for viewers:
- Cause: Insufficient network bandwidth on the VPS, server CPU overload, too high incoming stream bitrate, network issues for the streamer or viewer.
- Solution:
- Check network channel usage on the VPS with utilities like
iftoporvnstat. If it's close to maximum, consider upgrading your VPS plan to a wider channel. - Check CPU usage with
htopordocker stats owncast. If the CPU is constantly at 90-100% load, this may indicate insufficient CPU cores, especially with active transcoding. Consider a CPU upgrade. - Reduce the outgoing stream bitrate from your streaming software (OBS). Start with 3-5 Mbps for 1080p, 2-3 Mbps for 720p.
- Ensure your stream key is correct and not being used by anyone else.
- Check the stability of the streamer's internet connection.
- Check network channel usage on the VPS with utilities like
- High CPU usage:
- Cause: Active video transcoding (e.g., from 1080p to several lower resolutions), a large number of concurrent viewers, background processes.
- Solution:
- Disable or limit the number of transcoded resolutions in Owncast settings if your VPS cannot handle it.
- Consider upgrading your VPS to a plan with more vCPUs or more powerful cores.
- Check if there are other resource-intensive applications running on your VPS.
- "No Stream Key" or "Stream Offline" in the Owncast admin panel:
- Cause: Your streaming software (e.g., OBS) is not connected or is using the wrong stream key/RTMP URL.
- Solution:
- Ensure that OBS (or other software) specifies the correct RTMP server (
rtmp://your_vps_ip:1935/liveorrtmp://stream.yourdomain.com:1935/live) and your unique stream key from the Owncast admin panel. - Verify that port 1935 is open in the VPS firewall (
sudo ufw status).
- Ensure that OBS (or other software) specifies the correct RTMP server (
Access and HTTPS Issues
- Unable to access Owncast by domain name:
- Cause: Incorrect DNS records, incorrect reverse proxy configuration (Nginx/Caddy), firewall issues.
- Solution:
- Ensure that the A-record for
stream.yourdomain.compoints to your VPS's IP address. Usedig stream.yourdomain.comornslookup stream.yourdomain.comto check. - Check your Nginx or Caddy configuration (
sudo nginx -tfor Nginx,sudo caddy validate --config /etc/caddy/Caddyfilefor Caddy). - Ensure that ports 80 and 443 are open in the firewall (
sudo ufw status). - Check Nginx/Caddy logs for errors:
sudo tail -f /var/log/nginx/error.logorsudo journalctl -u caddy -f.
- Ensure that the A-record for
- HTTPS issues (Let's Encrypt certificates):
- Cause: Expired certificate, issues with Certbot's automatic renewal, errors in Nginx/Caddy configuration.
- Solution:
- Manually try to renew certificates:
sudo certbot renew --force-renewal(for Nginx) or check Caddy logs (it renews automatically). - Ensure Certbot is configured for automatic renewal (this is usually done during the initial installation).
- Verify that Nginx/Caddy is listening on port 80 for Certbot's validation process.
- Manually try to renew certificates:
- Owncast container not starting or stopping:
- Cause: Errors in
docker-compose.yml, insufficient resources (RAM/CPU), corrupted data, port conflicts. - Solution:
- Check container logs:
docker compose logs owncast. This will provide information about the cause of the failure. - Check
docker compose psto ensure the container is not constantly restarting. - Ensure there is enough free RAM on the server (
free -h). - Check if ports 8080 or 1935 are occupied by other processes (
sudo netstat -tulpn | grep 8080).
- Check container logs:
- Cause: Errors in
Regular monitoring and log checking are best practices for timely detection and resolution of problems. For managing configuration files or media content on the server, a tool like Syncthing on VPS can be useful, allowing data synchronization between different devices, ensuring their availability and backup.
Conclusion
Owncast on a VPS provides a powerful and flexible platform for self-hosted live streaming, offering full control over content, data, and community. By following the detailed instructions for installing Owncast via Docker Compose, configuring a reverse proxy with HTTPS, and adhering to recommendations for maintenance and optimal VPS configuration, you can create a reliable and scalable service.
For stable Owncast operation under any load, the choice of a suitable VPS with sufficient CPU, RAM, fast NVMe disk, and a wide network channel is critical. Valebyte.com offers high-performance VPS and dedicated servers, ideally suited for hosting Owncast and ensuring uninterrupted broadcasting for your audience.
Ready to choose a server?
VPS and dedicated servers in 72+ countries with instant activation and full root access.
Start Now →