# PeerTube
-*Server*
-
+**Server**
[![Build Status](https://travis-ci.org/Chocobozzz/PeerTube.svg?branch=master)](https://travis-ci.org/Chocobozzz/PeerTube)
[![Dependencies Status](https://david-dm.org/Chocobozzz/PeerTube.svg)](https://david-dm.org/Chocobozzz/PeerTube)
[![devDependency Status](https://david-dm.org/Chocobozzz/PeerTube/dev-status.svg)](https://david-dm.org/Chocobozzz/PeerTube#info=devDependencies)
[![Code climate](https://codeclimate.com/github/Chocobozzz/PeerTube/badges/gpa.svg)](https://codeclimate.com/github/Chocobozzz/PeerTube)
-*Client*
-
+**Client**
[![Dependency Status](https://david-dm.org/Chocobozzz/PeerTube.svg?path=client)](https://david-dm.org/Chocobozzz/PeerTube?path=client)
[![devDependency Status](https://david-dm.org/Chocobozzz/PeerTube/dev-status.svg?path=client)](https://david-dm.org/Chocobozzz/PeerTube?path=client#info=devDependencies)
+[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
+
Prototype of a decentralized video streaming platform using P2P (bittorrent) directly in the web browser with [WebTorrent](https://github.com/feross/webtorrent).
-[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
+![screenshot](https://lutim.cpy.re/vC2loRww)
+
+## Demonstration
+
+Want to see in action?
+
+ * You can directly test in your browser with this [demo server](http://peertube.cpy.re). Don't forget to use the latest version of Firefox/Chromium/(Opera?) and check your firewall configuration (for WebRTC)
+ * You can find [a video](https://vimeo.com/164881662 "Yes Vimeo, please don't judge me") to see how the "decentralization feature" looks like
## Why
- [X] List the videos
- [X] Search a video name (local index)
- [X] View the video in an HTML5 page with WebTorrent
-- [ ] Manage user accounts
- - [ ] Inscription
+- [X] Manage admin account
- [X] Connection
- [X] Account rights (upload...)
- [X] Make the network auto sufficient (eject bad pods etc)
+- [ ] Validate the prototype (test PeerTube in a real world with many pods and videos)
- [ ] Manage API breaks
- [ ] Add "DDOS" security (check if a pod don't send too many requests for example)
+- [ ] Admin panel
+ - [ ] Stats about the network (how many friends, how many requests per hour...)
+ - [ ] Stats about videos
+ - [ ] Manage users (create/remove)
## Installation
## Usage
-### Run the server
+### Development
$ npm start
Then you will can access to the three nodes at `http://localhost:900{1,2,3}`. If you call "make friends" on `http://localhost:9002`, the pod 2 and 3 will become friends. Then if you call "make friends" on `http://localhost:9001` it will become friend with the pod 2 and 3 (check the configuration files). Then the pod will communicate with each others. If you add a video on the pod 3 you'll can see it on the pod 1 and 2 :)
+### Production
+
+If you want to run PeerTube for production (bad idea for now :) ):
+
+ $ cp config/production.yaml.example config/production.yaml
+
+Then edit the `config/production.yaml` file according to your webserver configuration.
+
+Finally, run the server with the `production` `NODE_ENV` variable set.
+
+ $ NODE_ENV=production npm start
+
### Other commands
To print all available command run:
Here are some simple schemes:
-![Decentralized](http://lutim.cpy.re/Q7mnNdJP)
+![Decentralized](https://lutim.cpy.re/Q7mnNdJP)
-![Watch a video](http://lutim.cpy.re/0riSzAp1)
+![Watch a video](https://lutim.cpy.re/0riSzAp1)
-![Watch a video P2P](http://lutim.cpy.re/OzMSOtxG)
+![Watch a video P2P](https://lutim.cpy.re/OzMSOtxG)
-![Join a network](http://lutim.cpy.re/uVjNNRa9)
+![Join a network](https://lutim.cpy.re/uVjNNRa9)
-![Many networks](http://lutim.cpy.re/udTMqcb0)
+![Many networks](https://lutim.cpy.re/udTMqcb0)
### Frontend