PeerTube

Decentralized federated video hosting with P2P streaming

Media Servers ★ 15.3k stars Hard setup AGPL-3.0

PeerTube is a free, decentralized video hosting platform built on ActivityPub and WebTorrent. Instances can federate with each other, and peer-to-peer streaming reduces bandwidth load on the server.

Key features

  • ActivityPub federation
  • P2P WebTorrent streaming
  • Live streaming support
  • Plugin system

Pros & cons

Strengths

  • Reduces bandwidth via P2P
  • Federates with the Fediverse

Trade-offs

  • Complex installation
  • Requires significant resources

PeerTube replaces

Last reviewed Aug 26, 2026 · 761 words

A single 10-minute 1080p upload to PeerTube turns into 5 or 6 files after transcoding, occupies roughly 1.5 to 2 times the original's disk space, and keeps one CPU core busy for somewhere between 10 and 40 minutes depending on the machine (my estimates from a 4-core VPS; a GPU changes everything). Multiply by your channel and you have the real requirements of this project. The 2 GB of RAM in the listing is honest for the Node.js app, PostgreSQL and Redis; it is not what makes PeerTube hard. Transcoding and storage are, and both can be moved off the main server, which is the design decision that separates an instance that lasts from one that gets abandoned at 300 GB.

Transcoding is the requirement, not RAM

PeerTube transcodes every upload into a ladder of resolutions so viewers on slow connections get 360p while others get 1080p, and it does so with ffmpeg on the CPU by default. On a 2-core VPS a 1-hour talk can take most of a day. Three options, in order of sanity: reduce the ladder in the admin panel to 2 or 3 resolutions; enable hardware acceleration if the host has a GPU that ffmpeg can use; or run remote runners, a separate peertube-runner process on any machine with spare CPU, which pulls transcoding jobs from the instance over HTTPS and pushes results back. The runner is the answer for people whose server is a small VPS but whose desk has a desktop with 16 cores idling overnight.

Storage grows faster than uploads

Because every video is stored at several resolutions, disk use runs ahead of what you uploaded, and the web-compatible originals are kept alongside. PeerTube supports S3-compatible object storage for the video files, which means MinIO on a machine with big cheap disks, or a commercial bucket at a few dollars per terabyte-month. Move video storage there on day one; migrating 500 GB later is possible but tedious. Keep PostgreSQL and the instance's own files on fast local disk, and back the database up separately, because the metadata, comments and federation state live there and cannot be regenerated from the video files.

P2P helps only when viewers overlap

The peer-to-peer delivery that gives the project its name shares segments between browsers watching the same video at the same time, which slashes server bandwidth for a live event or a video that goes briefly popular. For a channel where 3 people watch a video in a week, they never overlap and the server delivers everything. Plan bandwidth as if P2P did not exist and treat it as a bonus; on a VPS with a monthly transfer cap, that means knowing your cap before you post a link anywhere public.

Federation is a feature and a moderation job

Instances follow each other over ActivityPub, so videos from a followed instance appear in your search and your users can be followed from Mastodon. It also means your instance will index content you did not upload, from instances whose moderation you do not control. A private instance for a family, club or company should turn federation off and require registration approval, at which point PeerTube is a very good private YouTube. A public instance is a moderation commitment measured in hours per week, and the project's own admin documentation says so plainly.

When Owncast or Jellyfin is the better fit

If the only need is live streaming to an audience, Owncast is a single Go binary with chat and no database, and PeerTube's live feature, though real, drags the whole stack along with it. If the need is watching your own library on your own TVs, Jellyfin is the media server built for that and does not transcode until playback. PeerTube's niche is publishing: videos with pages, comments, channels, subscriptions and an audience beyond your household.

What I'd do

The official Docker Compose on a 4 GB VPS, transcoding ladder cut to 360p, 720p and 1080p, a remote runner on the home desktop, video storage on an S3 bucket from the first upload, and federation off until there is a reason. Behind Caddy for TLS. Budget a weekend for the first install, and budget disk before budgeting anything else. Run that way it is the only self-hosted platform that gives a small creator a real channel, comments and subscribers without handing the audience to a platform.

Compare PeerTube

4 head-to-head comparisons.

Similar media servers apps