2016-07-21 08:24:18 +00:00
< h1 align = "center" >
2018-10-02 13:13:17 +00:00
< a href = "https://joinpeertube.org" >
< img src = "https://joinpeertube.org/img/brand.png" alt = "PeerTube" >
< a >
2016-07-21 08:24:18 +00:00
< / h1 >
2015-06-09 15:41:40 +00:00
2018-10-02 13:13:17 +00:00
< p align = center >
< strong > < a href = "https://joinpeertube.org" > Website< / a > < / strong >
| < strong > < a href = "https://instances.joinpeertube.org" > Join an instance< / a > < / strong >
| < strong > < a href = "#package-create-your-own-instance" > Create one< / a > < / strong >
| < strong > < a href = "#contact" > Chat with us< / a > < / strong >
< / p >
2018-05-28 11:33:27 +00:00
< p align = "center" >
2018-01-06 17:10:30 +00:00
Federated (ActivityPub) video streaming platform using P2P (BitTorrent)
directly in the web browser with < a href = "https://github.com/feross/webtorrent" > WebTorrent< / a > .
2018-05-28 11:33:27 +00:00
< / p >
2015-10-30 19:18:36 +00:00
2018-05-28 15:28:53 +00:00
< p align = "center" >
2018-07-07 14:08:23 +00:00
< strong > We have run < a href = "https://www.kisskissbankbank.com/en/projects/peertube-a-free-and-federated-video-platform" > a crowdfunding campaign< / a > to pave the road to version 1.0 of PeerTube. Thanks to everyone who pitched in and shared the news around. You can now check out < a href = "https://github.com/Chocobozzz/PeerTube/milestone/1" > the corresponding milestone< / a > and help its development!< / strong >
2018-05-28 15:28:53 +00:00
< / p >
2017-11-23 17:22:40 +00:00
2016-07-21 08:24:18 +00:00
< p align = "center" >
< strong > Client< / strong >
2016-04-30 06:56:21 +00:00
2016-07-21 08:24:18 +00:00
< br / >
2015-06-09 15:41:40 +00:00
2018-01-16 08:18:19 +00:00
< a href = "https://david-dm.org/Chocobozzz/PeerTube?path=client&type=dev" >
2016-07-21 08:24:18 +00:00
< img src = "https://david-dm.org/Chocobozzz/PeerTube/dev-status.svg?path=client" alt = "devDependency Status" / >
< / a >
2018-05-17 08:55:01 +00:00
2018-09-20 13:45:11 +00:00
< a href = "https://www.browserstack.com/automate/public-build/cWJhRDFJbS9qeUhzYW04MnlIVjlQQ0x3aE5POXBaV1lycGo5VlQxK3JqZz0tLTNUWW5ySEVvS1N4UnBhYlhsdXVCeVE9PQ==--db09e291d36a582af8b2929d62a625ed660cdf1d" >
< img src = 'https://www.browserstack.com/automate/badge.svg?badge_key=cWJhRDFJbS9qeUhzYW04MnlIVjlQQ0x3aE5POXBaV1lycGo5VlQxK3JqZz0tLTNUWW5ySEVvS1N4UnBhYlhsdXVCeVE9PQ==--db09e291d36a582af8b2929d62a625ed660cdf1d' / >
2018-05-17 14:33:20 +00:00
< / a >
2016-07-21 08:24:18 +00:00
< / p >
< p align = "center" >
< strong > Server< / strong >
< br / >
< a href = "https://travis-ci.org/Chocobozzz/PeerTube" >
2017-01-29 17:35:19 +00:00
< img src = "https://travis-ci.org/Chocobozzz/PeerTube.svg?branch=develop" alt = "Build Status" / >
2016-07-21 08:24:18 +00:00
< / a >
< a href = "https://david-dm.org/Chocobozzz/PeerTube" >
< img src = "https://david-dm.org/Chocobozzz/PeerTube.svg" alt = "Dependencies Status" / >
< / a >
2018-01-16 08:18:19 +00:00
< a href = "https://david-dm.org/Chocobozzz/PeerTube?type=dev" >
2016-07-21 08:24:18 +00:00
< img src = "https://david-dm.org/Chocobozzz/PeerTube/dev-status.svg" alt = "devDependency Status" / >
< / a >
2016-07-21 09:56:38 +00:00
< a href = "http://standardjs.com/" >
< img src = "https://img.shields.io/badge/code%20style-standard-brightgreen.svg" alt = "JavaScript Style Guide" / >
2016-07-21 08:24:18 +00:00
< / a >
< / p >
2016-05-11 18:01:01 +00:00
2016-07-21 09:56:38 +00:00
< br / >
< p align = "center" >
2017-04-30 17:34:41 +00:00
< a href = "https://peertube.cpy.re" >
2018-10-02 13:13:17 +00:00
< img src = "https://lutim.cpy.re/8cZDRIEF.png" alt = "screenshot" / >
2016-07-21 09:56:38 +00:00
< / a >
< / p >
2016-05-10 20:47:48 +00:00
2018-10-02 13:13:17 +00:00
Demonstration
----------------------------------------------------------------
2016-05-10 20:47:48 +00:00
2018-01-06 17:10:30 +00:00
Want to see it in action?
2016-06-05 08:49:01 +00:00
2018-01-12 17:07:41 +00:00
* Demonstration servers:
2018-06-22 01:32:52 +00:00
* [peertube.cpy.re ](https://peertube.cpy.re )
* [peertube2.cpy.re ](https://peertube2.cpy.re )
* [peertube3.cpy.re ](https://peertube3.cpy.re )
2018-06-22 07:17:53 +00:00
* [Video ](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3 ) What is PeerTube?
2018-01-06 17:10:30 +00:00
* [Video ](https://peertube.cpy.re/videos/watch/f78a97f8-a142-4ce1-a5bd-154bf9386504 )
2018-01-18 08:39:06 +00:00
to see what the "decentralization feature" looks like
2018-03-22 18:57:20 +00:00
* [Video ](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701 ) to see
2018-10-02 13:13:17 +00:00
the communication between PeerTube and [Mastodon ](https://github.com/tootsuite/mastodon )
2016-05-10 20:47:48 +00:00
2018-10-02 13:13:17 +00:00
:question: Motivation
----------------------------------------------------------------
2015-10-30 19:18:36 +00:00
2018-07-21 02:58:54 +00:00
We can't build a FOSS video streaming alternative to YouTube, Dailymotion,
Vimeo... with centralized software. One organization alone may not have
2018-01-06 17:10:30 +00:00
enough money to pay for bandwidth and video storage of its servers.
2015-10-30 19:18:36 +00:00
2018-01-06 17:10:30 +00:00
So we need to have a decentralized network of servers seeding videos (as
[Diaspora ](https://github.com/diaspora/diaspora ) for example). But it's not
2018-10-02 13:13:17 +00:00
enough because one video could become popular and overload the server. That is
2018-07-04 15:29:18 +00:00
why we need to use a P2P protocol to limit the server load. Thanks to
2018-10-02 13:13:17 +00:00
[WebTorrent ](https://github.com/feross/webtorrent ), we can make BitTorrent inside the web browser, as of today.
2015-10-30 19:18:36 +00:00
2018-10-02 13:13:17 +00:00
:package: Create your own instance
----------------------------------------------------------------
#### Dependencies
2015-06-09 15:41:40 +00:00
2018-01-12 17:07:41 +00:00
* nginx
2018-09-17 13:45:17 +00:00
* **PostgreSQL >= 9.6**
2018-08-08 07:41:34 +00:00
* **Redis >= 2.8.18**
2017-12-13 15:56:02 +00:00
* **NodeJS >= 8.x**
2018-10-02 13:13:17 +00:00
* **yarn >= 1.x**
2018-03-14 08:15:17 +00:00
* **FFmpeg >= 3.x**
2015-06-09 15:41:40 +00:00
2018-10-02 13:13:17 +00:00
See the [production guide ](/support/doc/production.md ), which is the recommended way.
2018-01-29 07:52:20 +00:00
2018-10-02 13:13:17 +00:00
See the [community packages ](https://docs.joinpeertube.org/lang/en/docs/install.html ), which cover various platforms (including [YunoHost ](https://install-app.yunohost.org/?app=peertube ) and [Docker ](/support/doc/docker.md )).
2018-01-29 07:52:20 +00:00
2018-10-02 13:13:17 +00:00
:wrench: Contribute/Translate/Test
----------------------------------------------------------------
2018-06-06 12:42:56 +00:00
2018-10-02 13:13:17 +00:00
*Spoiler alert*: you don't need to be a coder to help!
2018-06-06 12:42:56 +00:00
2018-10-02 13:13:17 +00:00
See the [contributing
guide](/.github/CONTRIBUTING.md). Or simply join the cheerful bunch that makes our community:
2016-04-30 10:56:44 +00:00
2018-10-02 13:13:17 +00:00
* Chat< a name = "contact" ></ a > :
* IRC : ** [#peertube on chat.freenode.net:6697 ](https://kiwiirc.com/client/irc.freenode.net/#peertube )**
* Matrix (bridged on the IRC channel) : ** [#peertube:matrix.org ](https://matrix.to/#/#peertube:matrix.org )**
* Forum:
* Framacolibri: [https://framacolibri.org/c/peertube ](https://framacolibri.org/c/peertube )
2016-04-30 10:56:44 +00:00
2018-10-02 13:13:17 +00:00
:book: Documentation
----------------------------------------------------------------
2016-07-22 09:45:48 +00:00
2018-10-02 13:13:17 +00:00
If you have a question, please try to find the answer in the [FAQ ](/FAQ.md ) first.
### User documentation
2016-07-22 09:45:48 +00:00
2018-10-02 13:13:17 +00:00
See the [user documentation ](https://docs.joinpeertube.org/lang/en/userdocs/ ).
2018-01-24 11:02:38 +00:00
2018-10-02 13:13:17 +00:00
### Admin documentation
2018-04-17 09:11:25 +00:00
2018-10-02 13:13:17 +00:00
See [how to create your own instance ](#package-create-your-own-instance ).
2018-01-24 11:02:38 +00:00
2018-10-02 13:13:17 +00:00
See the more general [admin documentation ](https://docs.joinpeertube.org/lang/en/docs/ ).
2018-01-24 11:02:38 +00:00
2018-10-02 13:13:17 +00:00
#### Tools
2018-02-19 10:12:58 +00:00
2018-03-05 09:00:15 +00:00
* [Import videos (YouTube, Dailymotion, Vimeo...) ](/support/doc/tools.md )
* [Upload videos from the CLI ](/support/doc/tools.md )
2018-10-02 13:13:17 +00:00
* [Admin server tools (create transcoding jobs, prune storage...) ](/develop/support/doc/tools.md#server-tools )
2018-02-19 10:12:58 +00:00
2018-10-02 13:13:17 +00:00
### Technical documentation
2018-03-07 10:36:42 +00:00
2018-10-02 13:13:17 +00:00
See [ARCHITECTURE.md ](/ARCHITECTURE.md ) for a more detailed explanation of the architectural choices.
2015-06-09 15:41:40 +00:00
2018-10-02 13:13:17 +00:00
#### Backend
2015-10-29 22:18:17 +00:00
2018-10-02 13:13:17 +00:00
* REST API:
* Quick Start: [/support/doc/api/quickstart.md ](/support/doc/api/quickstart.md )
* Swagger/OpenAPI schema: [/support/doc/api/openapi.yaml ](/support/doc/api/openapi.yaml )
* HTML explorer: [/support/doc/api/html/index.html ](https://htmlpreview.github.io/?https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/api/html/index.html )
2018-07-21 02:58:54 +00:00
* Servers communicate with each other with [Activity
2018-01-06 17:10:30 +00:00
Pub](https://www.w3.org/TR/activitypub/).
* Each server has its own users who query it (search videos, query where the
torrent URI of this specific video is...).
2018-10-02 13:13:17 +00:00
* When a user uploads a video, the server sends its followers metadata about the video (name, short description, torrent URI...).
2018-07-04 15:29:18 +00:00
* A server is a tracker responsible for all the videos uploaded on it.
2018-01-06 17:10:30 +00:00
* Even if nobody watches a video, it is seeded by the server (through
[WebSeed protocol ](http://www.bittorrent.org/beps/bep_0019.html )) where the
video was uploaded.
2015-06-09 15:41:40 +00:00
Here are some simple schemes:
2016-07-21 08:24:18 +00:00
< p align = "center" >
2018-08-30 06:33:05 +00:00
< img src = "support/doc/user/decentralized.png" alt = "Decentralized" / >
2016-07-21 08:24:18 +00:00
2018-08-30 06:33:05 +00:00
< img src = "support/doc/user/watch-video.png" alt = "Watch a video" / >
2015-06-09 15:41:40 +00:00
2018-08-30 06:33:05 +00:00
< img src = "support/doc/user/watch-p2p.png" alt = "Watch a P2P video" / >
2015-06-09 15:41:40 +00:00
2016-07-21 08:24:18 +00:00
< / p >
2018-03-22 07:55:40 +00:00
2018-10-02 13:13:17 +00:00
:heart: Supports of our crowdfunding
----------------------------------------------------------------
2018-07-18 08:30:01 +00:00
2018-08-08 07:41:34 +00:00
Quonfucius, IP Solution, \_Laure\_, @lex666 , 0x010C, 3dsman, 3rw4n-G3D, aallrd, Abel-Berger, Adam-Odell, adechambost, adim, adngdb, Adrien Thurotte, Adrien-BARAN, Adrien-Hamraoui, Adrien-Horcholle, Adrien-Luxey, Adrien-Polar, Adrien-Touminet, Agathe Begault, Agence-Différente, Ahmed-Al-Ahmed, aiprole, akpoptro, Al-Nimr, Alain-Delgrange, Alain-Fyon, Alain-Girard, Alain-MICHEL, Aleksandar-Aleksandrov, Alex-Chancellé, Alex-Dufournet, Alex-Gleason, Alexander-Murray-Watters, Alexandre-Alapetite, Alexandre-Badez, Alexandre-Giuliani, Alexandre-Mercier, Alexandre-Roux-2, Alexandre-SIMON, Alexandre29, Alexia-Monsavoir, Alexis-Frn, Alexis-Gros, Alexis-Kauffmann, alfajet, Alias, alinemont, Aliocha-Lang, Alllightlong, aloisdg, Amanda Hinault, André-Rabe, Anne-PROTAS, antoine, Antoine Derouin, Antoine-Beauvillain, Antoine-Deléron, antomoro, Antón López, Antonin-DENIS, Antonin-Segault, aokami, Apichat-Apichat, Ar-To, ARIAS-Frédéric-2, ariasuni, Aris-Papathéodorou, Arnaud -Vigoureux , Arnaud-Mounier, Arnaud-Risler, Arnaud-Vigouroux, Arnulf, Arthur-Bellier, arthur-bello, Arthur-Charron, Arthur-De Kimpe, Arthur.Ball, Arthur.Frin, Arvi-LEFEVRE, athanael.fr, auber38, Auguste Psqr, Aurélien-Tamisier, Avel-Musicavel, axel-guegant, Axel-Plat, Aymeric-Dlv, Ayst, Azenilion, Bandino, baptiste-lemoine, Baptiste-Rochez, baruica, Bastien-Dangin, batlab, bcourtine, Bea-Schaack-2, beaufils, beaumme, Belmont1, Ben-Geeraerts, Ben-Meijering, Benjamin-Baratta, Benjamin-Roussel, Benoît Joffre, Benoîtdd, Bernard-Legrand, Bernard-Vauquelin, Bernhard-Hayden, bertrand.arlabosse, bigsicret, bjg, bnjbvr, bob\_isat, bobstechsite, Bolton-Allan, Boov', Boris-ARGAUD, Brice.Francois, broz42, Bruno Lefèvre, Bruno-Douville, Bruno-Fortabat, Bruno-Gadaleta, Bruno-VASTA, Bumblebee, Butchcassidy, Cadiou-Christophe, calendros, Candy-Ming, cappitaine, Carmen-Drocourt, carrigns, case, Cathy-Barbet, CBach, ccazin, Cecile-Obernesser, Cecilia-:), Cédric-Bleschet, Cédric.Bayle, Cestdoncvrai, cgay, champ contrechamp, chapa, charlerlin, charles-jacquin, Charlie-Duclut, charlotte-cgondre78, Chris-Doe, chris-louba, Christel-Berthelot, Christian-FERRARIS, christiannavelot, Christophe-Bastin, christophe-beziers la fosse, Christophe-Pieret, Christophe-Verhaege, christophec, Christopher-Bero, chtfn, chud, Claire-C, clairezed, Claude-POUGHEON, Clément-Hubert, Clément-Morelle, clydeb, Comamanel, Côme Chilliet, Confederac.io, Consulting-AZAPTEC, Corentin3892, CryoGen, cyp, Cypher-Goat, Cyril, Cyril\_M\_, Cyril-MONMOUTON, Cyril-Waechter, Damien-Gabard, Damien-Garaud, Dams3132, Daniel Kuebler, Daniel Waxweiler, Daniel-Bartsch, Daniel-PIPALA, Daniel-Struck, Daniel-Thul, Danny-Joerger, DansLeRuSH, DantSu, Dany-Marcoux, Daouzli-Adel, Darfeld, Darth\_Judge, Dashcom, David-BADOIL, David-Benoist, David-Dormoy, David-Gil-2, David-Velasco, David-Wagner, David-writ, davlgd, davyg2, dbudo72300, de Folleville -Matthieu , DeBugs, Denis-Lecourtiller, Denis-Vannier, Desmu, Didier-Bove, Diego-Crespo, Dimitri-Stouney, dino, Dinosaure, Doc Skellington, Dominique-Brun, dr4Ke, DreamClassier, DRogueRonin, dussydelf, Dylan-Moonfire, Ealhad, Edouard-SCHWEISGUTH, Elanndelh--, ElodieEtJimmy, Éloi-Rivard, Elric-Noel, Elwan-Héry, Emilie-Wietzke, Emilien-Ghomi, eparth, Eric-Bouhana, Eric-Hendricks, Eric.Vales, Erwan-Moreau, Erzender, ESS\_Clem, Etienne-Baqué, Etienne-Botek, Etienne-Lmn, Ex-Serv, fabeveynes, Fabien BERINI ( Rehvaro ) , Fabien Freling, Fabien-Roualdes, Fabien.Abraini, Fabien.Bonneval, fabrice-simon, farlistener, Felix-ROBICHON, FelixDouet, FHE, Fiamoa-McBenson, flamwenco, Flopômpôm, FloraGC, Florent-Deschamps, Florent-Fayolle, Florent-Mallet, Florent-Vasseur, Florent.Duveau, Florestan Fournier, Florian Kohrt, Florian-Bellafont, Florian-Douay, Florian-LE GOFF, Florian-Siegenthaler, Florian.Freyss, fobrice, FOKUZA, Fol-De Dol, FP45, Francis.Moraud, François-Dambrine, François-Deguerry, Francois-Goer, François-Lecomte, François-Lemaire, François-Malterre, François-MORLET, François-Schoubben, François-Xavier-Davanne, François-Zajéga, francois.peyratout, Frathom, Fred-Fred-2
2018-07-18 08:30:01 +00:00
2018-03-22 07:55:40 +00:00
## License
Copyright (C) 2018 PeerTube Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
2018-07-05 11:35:04 +00:00
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
2018-03-22 07:55:40 +00:00
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see < http: / / www . gnu . org / licenses / > .