NODED.CLOUD/Blog/PeerTube Server on a VPS: Transcoding, Storage and Live Streaming

PeerTube Server on a VPS: Transcoding, Storage and Live Streaming

05 Nov 2026 · Mario Marin

Self-hosted, federated video on a VPS: what PeerTube needs, how heavy transcoding is, how fast the library fills a disk, when to use object storage, live streaming, ports, mail through a relay and plan sizing.

A PeerTube server is a self-hosted, federated video platform: you upload videos, PeerTube transcodes them with ffmpeg into HLS, and people on other PeerTube instances or on Mastodon can follow your channels. On a VPS, transcoding decides the CPU, your video library decides the disk, and concurrent viewers decide the bandwidth.

This post covers PeerTube's requirements, how heavy transcoding is, how fast storage grows and when to move videos to object storage, live streaming, the ports and the mail relay, and plan sizing. Figures come from the PeerTube documentation and the default production.yaml of v8.3.2, released on 26 October 2026 as a security release; if you already run PeerTube, upgrade first.

What does a PeerTube server need?

The PeerTube FAQ gives three tiers:

Tier, per the FAQvCPURAMUpload
Minimum11.5 GB20 Mbit/s
Big instance, 1,000 concurrent viewers44 GB1 Gbit/s
Transcoding on the same machine88 GBnot stated

The FAQ adds that apart from transcoding, PeerTube is not CPU bound: nginx, PeerTube, PostgreSQL and Redis need little, and a basic instance usually takes at most 500 MB of RAM. Disk space and bandwidth are "enough for your videos", which is the honest answer and the reason for the sections below.

The software stack, from the dependencies guide: Node.js LTS from 22.12 and below 25, pnpm, PostgreSQL 14 or newer, Redis 6.2 or newer, ffmpeg 4.3 or newer and Python 3.8 or newer. Debian 11 and Ubuntu 20.04 ship an older PostgreSQL, so start from Debian 12 or 13 or Ubuntu 24.04. PeerTube documents both a native install behind nginx and a Docker setup; either works on a KVM VPS with root.

How much CPU does PeerTube transcoding use?

Every upload is transcoded. The default config says not to disable it, because many uploaded files would not play in a browser otherwise. By default PeerTube produces HLS (fragmented MP4 with adaptive playback), keeps the original resolution, deletes the uploaded original afterwards, and runs one job at a time with one ffmpeg thread. Extra resolutions from 144p to 2160p are each a switch you turn on.

Those defaults are cautious. One thread keeps the instance responsive on a 1 or 2 vCPU VPS, but a long 1080p upload can take a while to become watchable. On a 4 vCPU shape you can raise threads or concurrency, leaving headroom for the web server and database. Each extra resolution is another encode of the whole video, so a full ladder multiplies the work. We have not benchmarked PeerTube on our shapes, so time a typical upload before you settle.

If uploads are frequent, remote runners move transcoding off the web server. You run peertube-runner on another machine, and the instance hands it VOD, studio and live transcoding, transcription and storyboard jobs. The docs warn that a registered runner can alter video content, so only connect machines you control. A second VPS in the same location makes a simple runner you can resize separately.

How fast does PeerTube storage grow?

The FAQ's advice is practical: upload a few typical videos with your chosen resolutions and measure the multiplication factor. Enabling Web Videos as well as HLS doubles storage again. The table below is illustrative only: originals at an average 5 Mbps (2.25 GB per hour), an example factor of 2 for the ladder, and about 250 GB usable on our largest VPS disk of 270 GB.

Video uploaded per monthStored per month (example factor 2)Time to fill about 250 GB
5 hours22.5 GBAbout 11 months
10 hours45 GBAbout 5.5 months
20 hours90 GBAbout 2.8 months
50 hours225 GBAbout 1 month

Video is what fills a VPS. The disk on our plans tops out at 270 GB (120 GB on the largest shape plus 150 GB extra), so a library that keeps growing needs object storage early.

When to move videos to object storage

PeerTube can move transcoded files to any S3-compatible bucket and serve them from there. Per the remote storage docs, the bucket must be public with CORS rules that allow traffic from anywhere, and live streams stay on local disk; replays move after transcoding. Separate buckets or prefixes are set for HLS playlists, web videos, originals, captions and user exports:

object_storage:
  enabled: true
  endpoint: 's3.example-provider.eu'
  region: 'eu-central-1'
  credentials:
    access_key_id: 'KEY'
    secret_access_key: 'SECRET'
  streaming_playlists:
    bucket_name: 'peertube'
    prefix: 'streaming-playlists/'
  web_videos:
    bucket_name: 'peertube'
    prefix: 'web-videos/'

Object storage also moves viewer bandwidth to the provider. If GDPR matters to you, pick a provider and region in the EU, as you did for the VPS.

How does PeerTube live streaming work?

Live is off by default. When you enable it, PeerTube listens for RTMP on port 1935 (RTMPS on 1936 is available but off by default), and each live gets an RTMP URL and stream key to paste into OBS. Defaults allow 20 simultaneous lives per instance and 3 per user, replays are allowed, viewers can rewind up to an hour, and users can pick a latency mode; small-latency lives cannot use peer-to-peer delivery.

Live transcoding defaults to two ffmpeg threads per live. That is the expensive part: each live with several resolutions is a continuous encode, so cap the number of lives to what the CPU can hold, or send live transcoding to a remote runner. For a single channel with chat but no video library, Owncast is lighter, as our Owncast server guide explains; to push the same live to other platforms too, see our self-hosted Restream alternatives.

Which ports and mail settings does PeerTube need?

PeerTube listens on 127.0.0.1:9000 by default, with nginx in front for HTTPS. Only the proxy and, if you use live, the RTMP port face the internet.

PortProtocolPurposeOpen to
22/tcpSSHAdministrationYour IP only
80/tcpHTTPLet's Encrypt, redirect to HTTPSEveryone
443/tcpHTTPSWeb interface, video files, ActivityPub federationEveryone
1935/tcpRTMPLive ingestEveryone, only if live is enabled
1936/tcpRTMPSEncrypted live ingestOnly if you enable RTMPS
9000/tcpHTTPPeerTube itselfNever: localhost behind nginx

PeerTube needs working email for sign-up verification, password resets and notifications. Outbound SMTP on TCP 25 is blocked on every Noded VPS, so send through a relay or transactional mail provider on its submission port. The default config uses 465 with TLS; for 587 with STARTTLS, set tls: false:

smtp:
  transport: smtp
  hostname: 'smtp.relay-provider.example'
  port: 587
  username: 'peertube@example.org'
  password: 'RELAY-PASSWORD'
  tls: false
  disable_starttls: false
  from_address: 'peertube@example.org'

Before opening registrations, decide on moderation: whether sign-ups need approval, default upload quotas, and which instances you follow. Following other instances is how federation brings in content, and their redundancy feature can mirror your popular videos to spread viewer load. Our self-hosted email post explains the relay setup in more detail.

Which Noded plan fits a PeerTube server?

Prices are monthly, in euros, excluding VAT, for Bucharest from our live catalogue, shown with and without the largest extra-storage option (+150 GB for €12).

InstancePlanvCPU / RAM / SSDNetworkMax disk€/month (with +150 GB)
Small channel, few uploadsVPS III2 / 8 GB / 60 GB180 Mbps210 GB€10 (€22)
Regular uploads, local transcodingVPS IV4 / 16 GB / 80 GB220 Mbps230 GB€16 (€28)
The FAQ's transcoding-on-the-same-machine specVPS VI8 / 32 GB / 120 GB300 Mbps270 GB€58 (€70)
Bigger audience or several livesStreaming III4 / 8 GB / 60 GBNo per-VM ceiling210 GB€34.99 (€46.99)
Same, more transcoding headroomStreaming IV6 / 16 GB / 80 GBNo per-VM ceiling230 GB€59.99 (€71.99)

Bandwidth follows the FAQ's arithmetic: divide the outbound rate by the bitrate per viewer. At 5 Mbps per 1080p viewer, VPS IV's 220 Mbps ceiling carries about 44 viewers without headroom; the media server VPS line has no per-VM ceiling, and object storage takes the load off entirely. In Sofia, VPS IV is €26 and Streaming III €44.99.

Back up the PostgreSQL database and the config directory to another machine, plus local videos if they are not in object storage. Our VPS plans have no snapshots or backups; our PostgreSQL sizing post covers the database side.

Questions people ask

Is PeerTube a good self-hosted YouTube alternative?

For a channel or community library, yes: uploads, channels, playlists, live streams and federation with Mastodon and other instances. It does not bring an audience with it, and storage and transcoding are your costs to plan.

How much RAM does PeerTube need?

The FAQ's minimum is 1.5 GB and its transcoding spec 8 GB. PeerTube itself usually stays under 500 MB; the rest goes to PostgreSQL, Redis and ffmpeg.

Can PeerTube run without transcoding?

The default config says not to disable it, since many uploads would not play in browsers. To keep the web server light, send transcoding to a remote runner instead of turning it off.

Does PeerTube need object storage?

Not to start. It becomes worth it when the library approaches the disk you can attach, or when viewer traffic outgrows the VPS.

Running PeerTube on Noded

Order VPS IV with extra storage from the VPS hosting page to test, upload a handful of typical videos, and measure the storage factor and transcoding time before you invite users. Every VPS includes 100 Gbps of always-on Layer 3/4 DDoS protection. New orders are open in Bucharest, Sofia and Ashburn today.

← All posts

Related services

Run this on NODED.CLOUD.

Keep reading

More from the NOC.

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.