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 FAQ | vCPU | RAM | Upload |
|---|---|---|---|
| Minimum | 1 | 1.5 GB | 20 Mbit/s |
| Big instance, 1,000 concurrent viewers | 4 | 4 GB | 1 Gbit/s |
| Transcoding on the same machine | 8 | 8 GB | not 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 month | Stored per month (example factor 2) | Time to fill about 250 GB |
|---|---|---|
| 5 hours | 22.5 GB | About 11 months |
| 10 hours | 45 GB | About 5.5 months |
| 20 hours | 90 GB | About 2.8 months |
| 50 hours | 225 GB | About 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.
| Port | Protocol | Purpose | Open to |
|---|---|---|---|
| 22/tcp | SSH | Administration | Your IP only |
| 80/tcp | HTTP | Let's Encrypt, redirect to HTTPS | Everyone |
| 443/tcp | HTTPS | Web interface, video files, ActivityPub federation | Everyone |
| 1935/tcp | RTMP | Live ingest | Everyone, only if live is enabled |
| 1936/tcp | RTMPS | Encrypted live ingest | Only if you enable RTMPS |
| 9000/tcp | HTTP | PeerTube itself | Never: 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).
| Instance | Plan | vCPU / RAM / SSD | Network | Max disk | €/month (with +150 GB) |
|---|---|---|---|---|---|
| Small channel, few uploads | VPS III | 2 / 8 GB / 60 GB | 180 Mbps | 210 GB | €10 (€22) |
| Regular uploads, local transcoding | VPS IV | 4 / 16 GB / 80 GB | 220 Mbps | 230 GB | €16 (€28) |
| The FAQ's transcoding-on-the-same-machine spec | VPS VI | 8 / 32 GB / 120 GB | 300 Mbps | 270 GB | €58 (€70) |
| Bigger audience or several lives | Streaming III | 4 / 8 GB / 60 GB | No per-VM ceiling | 210 GB | €34.99 (€46.99) |
| Same, more transcoding headroom | Streaming IV | 6 / 16 GB / 80 GB | No per-VM ceiling | 230 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.