Publish your videos with PeerTube, the YouTube alternative
Share your passions on a platform that suits you
With PeerTube, you don't have to please to the algorithms by artificially altering your content: PeerTube platforms are managed and moderated by humain beings like you and us, not by robots.
PeerTube allows you to focus on what you do the best: your videos, the way you want to create them.
Gain visibility thanks to the concept of federation!
Increase the potential audience for your videos by connecting your PeerTube platform to the ones you want.
I'm getting started on PeerTube
Create my account on an existing PeerTube platform
- Join a community and communicate directly with the platform owners
- Import your videos from another website like YouTube or Vimeo, or directly from a file
- Create several channels to group your videos by theme: a channel for piano, a channel for ecology...
- Easily integrate your PeerTube videos on your own website
- Broadcast a live stream on platforms that allow it
Create my own PeerTube platform
If you have a minimum amount of time and technical skills, creating your own platform (also called "instance") on your server is the best way to take advantage of PeerTube.
Creating and administering your own PeerTube platform will allow you to:
- Define your own moderation rules
- Invite different people to create their channel to post their videos, or to help you to moderate the platform
- Choose to automatically display videos uploaded on other PeerTube instances, thanks to the federation
- Reduce bandwidth consumption by using P2P
- Customize your instance by creating your own custom theme and taking advantage of the many plugins created by the community.
Questions? We guide you!
There are none at the moment: PeerTube is a tool that we wanted neutral in terms of monetization.
However, the uploader can display a support button under the video. This button displays a frame in which people who upload videos can display text, images, and links freely (link to Patreon, Tipeee, Paypal, Liberapay...).
We did not go any further, as we refuse to tie our code to a particular content funding method, that might not fit all communities and deter others. It's the reason why we encourage developers to use the PeerTube plugin API to create their own monetization system.
PeerTube should run happily on a virtual machine with 2 threads/vCPUs, at least 1 Gb of RAM and enough storage for videos. In terms of bandwidth, a lot will depend on which PeerTube instances you federate with and what your relation with them is (more about that below).
As a real life example, the PeerTube demonstration server https://peertube.cpy.re runs on 2 vCores and 2GB of RAM. Average consumption is:
- CPU: nginx ~ 2%, peertube ~ 10%, postgres ~ 1%, redis ~ 1%
- RAM: nginx ~ 1MB, peertube ~ 150MB, postgres ~ 30MB, redis ~ 20MB
- Network: ~200GB sent per month (https://framatube.org: ~1.5TB sent per month)
Except for video transcoding, a PeerTube instance is not CPU bound. Neither Nginx, PeerTube itself, PostgreSQL nor Redis require a lot of computing power. If it were only for those, one could easily get by with just one thread/vCPU.
You will hugely benefit from at least a second thread though, because of transcoding. Transcoding is very cpu intensive. It serves two purposes on a PeerTube instance: it ensures all videos can be played optimally in the web interface, and it generates different resolutions for the same video. PeerTube support for offloading transcoding to other machines is being discussed, but not yet implemented.RAM
1/2 GB of RAM should be plenty for a basic PeerTube instance, which usually takes at most 150 MB in RAM. The only reason you might want more would be if you colocate your Redis or PostgreSQL services on a non-SSD system.Storage
There are two important angles to storage: disk space usage and sustained read speed. To make a rough estimate of your disk space usage requirements, you want to know the answer to three questions:
- What is the total size of the videos you wish to stream?
- Do you want to enable transcoding? If so, do you want to provide multiple resolutions per video? Try this out with a few videos and you will get an idea of how much extra space is required per video and estimate a multiplication factor for future space allocation.
- Which sharing mechanisms do you want to enable? Just WebTorrent, or also HLS with p2p? If you want both, this will double your storage needs.
If you want to store many videos on your PeerTube instance, you may want to store videos externally using Object Storage.
In terms of read speed, you want to make sure that you can saturate your network uplink serving PeerTube videos. This should not be a problem with SSD disks, whereas traditional HDD should be accounted for: typical sustained read rates for a well tuned system with a 7200rpm hard disk should hover around 120 MB/s or 960 Mbit/s. The latter should be enough for a typical 1 Gbit/s network uplink.Network
A rough estimate of a traditional server's video streaming network capacity is usually quite straightforward. You simply divide your server's available bandwidth by the average bandwidth per stream, and you have an upper bound.
Take a server for example with a 1 Gbit/s uplink for example pushing out 1080p60 streams at 5 Mbit/s per stream. That means the absolute theoretical upper capacity bound is 200 simultaneous viewers if your server's disk i/o can keep up. Expect a bit less in practice.
But what if you need to serve more users? That's where PeerTube's federation feature shines. If other PeerTube instances following yours, chances are they have decided to mirror part of your instance! The feature is called "server redundancy" and caches your most popular videos to help serve additional viewers. While viewers themselves contribute a little additional bandwidth while watching the video in their browsers (mostly during surges), mirroring servers have a much greater uplink and will help your instance with sustained higher concurrent streaming.