NODED.CLOUD/Blog/Owncast Server on a VPS: Install, Ports, Bandwidth and Sizing

Owncast Server on a VPS: Install, Ports, Bandwidth and Sizing

03 Nov 2026 · Mario Marin

Self-hosted live streaming with chat: install Owncast on a VPS behind HTTPS, open the right ports, work out viewer bandwidth, decide when to offload video to S3 storage, and pick a plan by CPU and audience.

An Owncast server is a self-hosted alternative to a Twitch channel: one program that takes RTMP from OBS on port 1935, serves a web player with live chat on port 8080, and lets Fediverse accounts follow your stream. On a VPS, two things decide the size: transcoding uses CPU, and every viewer uses bandwidth.

This post covers what Owncast needs, a short install behind HTTPS, the ports to open, the viewer bandwidth arithmetic, when to hand video delivery to S3-compatible object storage, and which Noded plan fits which setup. Details are checked against the Owncast documentation for v0.3.0, the current release.

What does an Owncast server need?

Owncast's own resources page splits the job in two. The CPU converts your stream into the qualities you offer viewers; the network sends those qualities to each viewer. The important consequence: CPU use does not grow with your audience. Zero viewers or a hundred, the encoding work is the same. Bandwidth is what grows.

  • CPU. The docs' rough rule, from measured examples rather than guarantees, is that one core can often handle one transcoded quality at 30 fps, and 60 fps costs about twice as much. Passthrough, which forwards your OBS video untouched, uses very little CPU.
  • Network. Bitrate times concurrent viewers, sustained for the whole stream.
  • Disk. Little. HLS segments are written temporarily and cleaned up as the stream runs. The data/ directory holds the database, its hourly backups, emoji and metrics, and grows slowly.
  • Your upload. Owncast suggests an upload of at least 1.5 times your bitrate: 7.5 Mbps for a 5,000 kbps stream.

Owncast ships with a single output quality by default and its video documentation recommends starting there, testing, and adding a lower quality only when the CPU has headroom. It also rules out hardware encoding on a VPS, since a virtual server has no direct access to a GPU. None of our VPS plans has one anyway, so plan for software encoding.

How to install Owncast on a VPS

On a Debian or Ubuntu image, the quick installer downloads the latest release and a copy of ffmpeg if none is installed. The docs advise against running it as root, so create a normal user first and read the script before you pipe it into a shell:

adduser --disabled-password owncast
su - owncast
curl -s https://owncast.online/install.sh | bash
cd owncast
./owncast --webserverip 127.0.0.1

The --webserverip flag makes the web server listen on localhost only, so port 8080 is not reachable from the internet and a reverse proxy can add HTTPS in front. The setting is saved to Owncast's database. For production, run it as a systemd service, as the docs' system service page shows.

The Docker image works too: owncast/owncast:latest with -p 8080:8080 -p 1935:1935 and the data directory mounted. Docker's own documentation warns that published ports bypass ufw rules, so publish 8080 as 127.0.0.1:8080:8080 if a proxy sits in front.

Caddy is the shortest route to a certificate. Point a DNS name at the VPS and use the Caddyfile from the Owncast proxy docs:

live.example.org {
    encode gzip
    reverse_proxy 127.0.0.1:8080
}

Then log in at https://live.example.org/admin. The admin user is admin, and both the admin password and the stream key default to abc123. They are separate settings, and both need changing before you stream: the password must be 8 to 192 characters with upper and lower case, a digit and a special character, and no dash. In OBS, set the server to rtmp://live.example.org/live and paste the new stream key.

Which ports does Owncast use?

Two ports by default: 8080 for the web player, chat and admin, and 1935 for RTMP ingest. Both can be changed in the admin's Server Setup page or with the --webserverport and --rtmpport flags.

PortProtocolPurposeOpen to
22/tcpSSHAdministrationYour IP only
1935/tcpRTMPIngest from OBS or another encoderYour encoder, or everyone if your IP changes (the stream key is the lock)
80/tcpHTTPCertificate validation, redirect to HTTPSEveryone
443/tcpHTTPSPlayer, chat, admin, Fediverse traffic via the proxyEveryone
8080/tcpHTTPOwncast web serverNobody: bind to 127.0.0.1 behind the proxy
ufw allow from 198.51.100.7 to any port 22 proto tcp
ufw allow 1935/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

A public RTMP port and a public chat both attract trouble. Every Noded VPS includes 100 Gbps of always-on Layer 3/4 DDoS protection, which filters floods upstream; it does nothing about a leaked stream key or a chat raid, which are yours to handle in the admin. Our ingest protection post covers the server side.

How much bandwidth do Owncast viewers use?

The Owncast docs give the formula directly: peak Mbps equals bitrate in kbps times viewers, divided by 1,000. Transfer volume is bitrate times seconds times viewers, divided by 8,000,000 for gigabytes. The table uses a single 4,000 kbps quality as an example, with 20% headroom added for the plan choice.

Concurrent viewersSustained outboundWith 20% headroomTwo-hour stream, total transfer
1040 Mbps48 Mbps36 GB
25100 Mbps120 Mbps90 GB
50200 Mbps240 Mbps180 GB
100400 Mbps480 Mbps360 GB

Transfer volume is not the constraint with us: no plan has a transfer quota. The constraint is the sustained rate. Our standard VPS shapes have a symmetric per-VM ceiling of 100 to 300 Mbps on a shared 1 Gbps node port, so at 4 Mbps per viewer VPS I carries about 20 viewers with headroom, VPS II about 29 and VPS IV about 45. Past that, the media server VPS line has no per-VM ceiling at all.

A second, lower quality helps viewers on mobile networks and can lower the total, because those viewers pull fewer bits. It costs CPU, not bandwidth, as the earlier section explains. For more viewer-count scenarios across protocols, see our post on sizing a media server to its audience.

When should you offload Owncast video to S3 object storage?

Owncast can upload its HLS segments to any S3-compatible provider and let viewers fetch them from there. Your server then sends one copy of each quality, whatever the audience: with a 4,000 kbps and a 1,500 kbps quality, that is 5.5 Mbps out, for ten viewers or a thousand. The viewer-facing traffic, and its bill, move to the storage provider.

Setup is in the admin under Server Setup, S3 Object Storage. Per the storage docs, you need the bucket name, access key, secret key, endpoint and region, a bucket that anyone can read, and a CORS policy if your provider requires one; CORS errors in the browser console are the usual sign of a missing policy. Two limits to know:

  • It is not an archive. Owncast keeps only the recent playback window in the bucket and deletes older segments. If you want recordings, record in OBS.
  • CPU does not change. Transcoding still happens on your server; only delivery moves.

For most small channels, offloading is unnecessary: a media server VPS with no per-VM ceiling already removes the bandwidth limit for a single origin. Offloading makes sense when the audience is large or unpredictable, or when the storage provider's delivery network is closer to your viewers than one city in Europe.

Which Noded plan fits an Owncast server?

Prices are monthly, in euros, excluding VAT, from our live catalogue. CPU guidance follows Owncast's one-core-per-30-fps-quality rule of thumb; it is an estimate, not our benchmark, so test your own settings. Viewer figures assume the 4,000 kbps example with 20% headroom.

SetupPlanvCPU / RAM / SSDNetworkBucharestSofia
Passthrough, up to about 20 viewersVPS I1 / 2 GB / 20 GB100 Mbps€4€5.50
One transcoded quality at 30 fps, up to about 29 viewersVPS II2 / 4 GB / 40 GB140 Mbps€6€9
Two qualities, up to about 45 viewersVPS IV4 / 16 GB / 80 GB220 Mbps€16€26
One transcoded quality, larger audienceStreaming II2 / 4 GB / 40 GBNo per-VM ceiling€18.99€23.99
Two qualities or 60 fps, larger audienceStreaming III4 / 8 GB / 60 GBNo per-VM ceiling€34.99€44.99

Streaming I (1 vCPU, €9.99) suits passthrough to a larger audience. As a planning figure from our media server page, 1 Gbps of sustained egress is roughly 130 concurrent 1080p60 viewers straight from the origin; beyond a few hundred viewers, offload to object storage or put a CDN in front. New orders are open in Bucharest, Sofia and Ashburn today; Amsterdam, Frankfurt and Vienna are on preorder with about 14 days' delivery.

Back up data/: it holds the Owncast database with your settings, its hourly backups, custom emoji and metrics. Our VPS plans have no snapshots or backups, so copy it to another machine, for example with restic as our backup target post describes.

Questions people ask

Is Owncast a good self-hosted Twitch alternative?

For a single channel, yes: you get a player page, live chat and Fediverse follows on your own domain, without platform rules or ads. What you do not get is discovery; viewers have to find you, though Owncast offers an optional public directory.

What are Owncast's server requirements?

Enough CPU for the qualities you transcode, roughly one core per 30 fps quality by the docs' rule of thumb, and enough bandwidth for bitrate times viewers. Disk needs are small because live segments are temporary.

Does Owncast support SRT or only RTMP?

Owncast's documented ingest is RTMP on port 1935. If you want SRT from the field, run a relay such as MediaMTX in front, as compared in our self-hosted Restream alternatives post, and forward RTMP to Owncast on the same machine.

Can I run Owncast with Docker?

Yes, with the owncast/owncast image and the data directory mounted. Bind 8080 to localhost if a reverse proxy handles HTTPS, because Docker-published ports skip ufw.

Running Owncast on Noded

Start small and measure: install Owncast on VPS I or VPS II from the VPS hosting page, stream to yourself for an evening, and watch the admin's stream health page and top. If the audience outgrows the shaped rate, move to a media server VPS with the same config. The self-hosted streaming use case page shows how Owncast fits next to a multistream relay.

← All posts

Related services

Run this on NODED.CLOUD.

Keep reading

More from the NOC.

14 Aug 2026·Mario Marin

Archiving Twitch VODs on a Storage VPS

Twitch VODs expire fast: as little as 7 days by default, up to 60 for Partners. Here's how we set up an automated pull-and-archive pipeline onto a storage VPS so your back catalog of streams and clips never disappears.

Read post
06 Aug 2026·Mario Marin

Nextcloud Hosting on a VPS in the EU

Self-hosting Nextcloud on an EU VPS keeps your files under GDPR without the Dropbox or Google Drive data-residency guesswork. Here's how to size the right tier and test it hourly before committing.

Read post

Like the way we run things? Spin up a server in 60 seconds.