PeerTube is a tool for sharing online videos developed by <a target="_blank" rel="noopener noreferrer" href="https://framasoft.org">Framasoft</a>, a french non-profit.
PeerTube is part of several actions assembled by Framasoft in the <a target="_blank" rel="noopener noreferrer" href="https://contributopia.org">Contributopia roadmap</a>.
PeerTube support for offloading transcoding to other machines is <a target="_blank" rel="noopener noreferrer" href="https://github.com/Chocobozzz/PeerTube/issues/947">being discussed</a>, but not yet implemented.
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).
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 <a target="_blank" rel="noopener noreferrer" href="https://github.com/Chocobozzz/PeerTube/issues/947">being discussed</a>, but not yet implemented.
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.
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: