1
0
Fork 0
peertube/README.md

197 lines
19 KiB
Markdown
Raw Normal View History

2016-07-21 04:24:18 -04:00
<h1 align="center">
PeerTube
</h1>
2015-06-09 11:41:40 -04:00
<p align="center">
Federated (ActivityPub) video streaming platform using P2P (BitTorrent)
directly in the web browser with <a href="https://github.com/feross/webtorrent">WebTorrent</a>.
</p>
2018-05-28 11:28:53 -04:00
<p align="center">
2018-07-07 10:08:23 -04: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 11:28:53 -04:00
</p>
2017-11-23 12:22:40 -05:00
2016-07-21 04:24:18 -04:00
<p align="center">
<strong>Client</strong>
2016-04-30 02:56:21 -04:00
2016-07-21 04:24:18 -04:00
<br />
2015-06-09 11:41:40 -04:00
2016-07-21 04:24:18 -04:00
<a href="https://david-dm.org/Chocobozzz/PeerTube?path=client">
<img src="https://david-dm.org/Chocobozzz/PeerTube.svg?path=client" alt="Dependency Status" />
</a>
2018-01-16 03:18:19 -05:00
<a href="https://david-dm.org/Chocobozzz/PeerTube?path=client&type=dev">
2016-07-21 04:24:18 -04:00
<img src="https://david-dm.org/Chocobozzz/PeerTube/dev-status.svg?path=client" alt="devDependency Status" />
</a>
2018-05-17 04:55:01 -04:00
2018-05-17 10:33:20 -04:00
<a href="https://www.browserstack.com/automate/public-build/VXBPc0szNjUvRUNsREJQRFF6RkEvSjJBclZ4VUJBUm1hcS9RZGpUbitRST0tLWFWbjNEdVN6eEZpYTk4dGVpMkVlQWc9PQ==--644e755052bf7fe2346eb6e868be8e706718a17c%">
<img src='https://www.browserstack.com/automate/badge.svg?badge_key=VXBPc0szNjUvRUNsREJQRFF6RkEvSjJBclZ4VUJBUm1hcS9RZGpUbitRST0tLWFWbjNEdVN6eEZpYTk4dGVpMkVlQWc9PQ==--644e755052bf7fe2346eb6e868be8e706718a17c%'/>
</a>
2016-07-21 04:24:18 -04:00
</p>
<p align="center">
<strong>Server</strong>
<br />
<a href="https://travis-ci.org/Chocobozzz/PeerTube">
<img src="https://travis-ci.org/Chocobozzz/PeerTube.svg?branch=develop" alt="Build Status" />
2016-07-21 04:24:18 -04: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 03:18:19 -05:00
<a href="https://david-dm.org/Chocobozzz/PeerTube?type=dev">
2016-07-21 04:24:18 -04:00
<img src="https://david-dm.org/Chocobozzz/PeerTube/dev-status.svg" alt="devDependency Status" />
</a>
2016-07-21 05:56:38 -04: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 04:24:18 -04:00
</a>
</p>
2016-05-11 14:01:01 -04:00
2016-07-21 05:56:38 -04:00
<br />
<p align="center">
2017-04-30 13:34:41 -04:00
<a href="https://peertube.cpy.re">
<img src="https://lutim.cpy.re/mRdBAdeD.png" alt="screenshot" />
2016-07-21 05:56:38 -04:00
</a>
</p>
2018-06-14 02:46:27 -04:00
## Getting Started
* **[Website](https://joinpeertube.org)**
* **[Instances list](https://instances.joinpeertube.org)**
* Chat:
2018-07-07 10:08:23 -04:00
* 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)**
2018-03-22 14:57:20 -04:00
## Demonstration
Want to see it in action?
2016-06-05 04:49:01 -04:00
2018-01-12 12:07:41 -05:00
* Demonstration servers:
2018-06-21 21:32:52 -04: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 03:17:53 -04:00
* [Video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) What is PeerTube?
* [Video](https://peertube.cpy.re/videos/watch/f78a97f8-a142-4ce1-a5bd-154bf9386504)
2018-01-18 03:39:06 -05:00
to see what the "decentralization feature" looks like
2018-03-22 14:57:20 -04:00
* [Video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) to see
the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon)
## Why
We can't build a FOSS video streaming alternatives to YouTube, Dailymotion,
Vimeo... with a centralized software. One organization alone may not have
enough money to pay for bandwidth and video storage of its servers.
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
enough because one video could become famous and overload the server. That is
why we need to use a P2P protocol to limit the server load. Thanks to
[WebTorrent](https://github.com/feross/webtorrent), we can make P2P (thus
2018-01-12 12:07:41 -05:00
BitTorrent) inside the web browser, as of today.
2018-01-12 12:07:41 -05:00
## Dependencies
2015-06-09 11:41:40 -04:00
2018-01-12 12:07:41 -05:00
* nginx
* PostgreSQL
* Redis
* **NodeJS >= 8.x**
2017-04-26 16:45:27 -04:00
* yarn
2015-06-09 11:41:40 -04:00
* OpenSSL (cli)
2018-03-14 04:15:17 -04:00
* **FFmpeg >= 3.x**
2015-06-09 11:41:40 -04:00
## Run in production
See the [production guide](/support/doc/production.md).
## Run on YunoHost
[![Install Peertube with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=peertube)
Peertube app for [YunoHost](https://yunohost.org). See [here](https://github.com/YunoHost-Apps/peertube_ynh).
## Run using Docker
2016-04-30 06:56:44 -04:00
See the [docker guide](/support/doc/docker.md).
2016-04-30 06:56:44 -04:00
2018-06-21 08:07:53 -04:00
## Contribute/Translate/Test
2016-07-22 05:45:48 -04:00
See the [contributing
2018-01-12 12:55:45 -05:00
guide](/.github/CONTRIBUTING.md)
2018-06-21 08:07:53 -04:00
to see how to test or contribute to PeerTube (write documentation, translate, develop...). Spoiler alert: you don't need to be a
coder to help!
2016-07-22 05:45:48 -04:00
2018-01-24 06:02:38 -05:00
## API REST documentation
2018-04-17 05:11:25 -04:00
Quick Start: [/support/doc/api/quickstart.md](/support/doc/api/quickstart.md)
Endpoints documentation:
2018-01-24 06:02:38 -05:00
2018-03-22 13:18:14 -04:00
* HTML version: [/support/doc/api/html/index.html](https://htmlpreview.github.io/?https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/api/html/index.html)
2018-01-24 06:02:38 -05:00
* Swagger/OpenAPI schema: [/support/doc/api/openapi.yaml](/support/doc/api/openapi.yaml)
## Tools
2018-03-05 04:00:15 -05:00
* [Import videos (YouTube, Dailymotion, Vimeo...)](/support/doc/tools.md)
* [Upload videos from the CLI](/support/doc/tools.md)
* [Admin server tools (create transcoding jobs, prune storage...)](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/tools.md#server-tools)
2018-03-07 05:36:42 -05:00
## FAQ
If you have a question, please try to find the answer in the [FAQ](/FAQ.md) first.
2015-06-09 11:41:40 -04:00
## Architecture
2018-01-12 12:55:45 -05:00
See [ARCHITECTURE.md](/ARCHITECTURE.md) for a more detailed explanation.
2015-10-29 18:18:17 -04:00
2015-06-09 11:41:40 -04:00
### Backend
* The backend is a REST API.
* Servers communicate with each others with [Activity
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...).
* If a user uploads a video, the server seeds it and sends its followers some
metadata (name, short description, torrent URI...).
* A server is a tracker responsible for all the videos uploaded on it.
* 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 11:41:40 -04:00
Here are some simple schemes:
2016-07-21 04:24:18 -04:00
<p align="center">
2017-06-20 12:52:57 -04:00
<img src="https://lutim.cpy.re/6Qut3ure.png" alt="Decentralized" />
2016-07-21 04:24:18 -04:00
2017-06-20 12:52:57 -04:00
<img src="https://lutim.cpy.re/NvRAcv6U.png" alt="Watch a video" />
2015-06-09 11:41:40 -04:00
2017-06-20 12:52:57 -04:00
<img src="https://lutim.cpy.re/pqKm3Q5S.png" alt="Watch a P2P video" />
2015-06-09 11:41:40 -04:00
2016-07-21 04:24:18 -04:00
</p>
2018-03-22 03:55:40 -04:00
2018-07-18 04:30:01 -04:00
## Supports of our crowdfunding
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-03-22 03:55:40 -04: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
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
2018-03-22 03:55:40 -04: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/>.