|
5 years ago | |
---|---|---|
.github | 5 years ago | |
client | 5 years ago | |
config | 5 years ago | |
scripts | 5 years ago | |
server | 5 years ago | |
support | 5 years ago | |
.codeclimate.yml | 5 years ago | |
.eslintignore | 6 years ago | |
.eslintrc | 6 years ago | |
.gitignore | 5 years ago | |
.travis.yml | 5 years ago | |
ARCHITECTURE.md | 5 years ago | |
FAQ.md | 5 years ago | |
LICENSE | 5 years ago | |
README.md | 5 years ago | |
package.json | 5 years ago | |
server.js | 5 years ago |
Client
Server
Want to see in action?
We can’t build a FOSS video streaming alternatives to YouTube, Dailymotion, Vimeo... with a centralized software. One organization alone cannot have enought money to pay bandwith and video storage of its server.
So we need to have a decentralized network (as Diaspora for example).
But it’s not enought because one video could become famous and overload the server.
It’s the reason why we need to use a P2P protocol to limit the server load.
Thanks to WebTorrent, we can make P2P (thus bittorrent) inside the web browser right now.
Install NodeJS 4.x (actual LTS): https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions
Add jessie backports to your source.list: http://backports.debian.org/Instructions/
Run:
# apt-get update
# apt-get install ffmpeg postgresql-9.4 openssl
# npm install -g npm@3
$ git clone -b master https://github.com/Chocobozzz/PeerTube
$ cd PeerTube
$ npm install # Or npm install --unsafe-perm for root user
$ npm run build
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. Keys set in this file will override those of config/default.yml
.
Finally, run the server with the production
NODE_ENV
variable set.
$ NODE_ENV=production npm start
The administrator password is automatically generated and can be found in the logs. You can set another password with:
$ NODE_ENV=production npm run reset-password -- -u root
Nginx template (reverse proxy): https://github.com/Chocobozzz/PeerTube/tree/master/support/nginx
Systemd template: https://github.com/Chocobozzz/PeerTube/tree/master/support/systemd
You can check the application (CORS headers, tracker websocket...) by running:
$ NODE_ENV=production npm run check
The following commands will upgrade the source (according to your current branch), upgrade node modules and rebuild client application:
# systemctl stop peertube
$ npm run upgrade
# systemctl start peertube
In this mode, the server will run requests between pods more quickly, the videos duration are limited to a few seconds and the client files are automatically compiled when we modify them:
$ npm run dev
The administrator password is displayed in the command output and can be found in the logs.
$ npm run clean:server:test
$ npm run play
Then you will can access to the three nodes at http://localhost:900{1,2,3}
with the root
as username and test{1,2,3}
for the password. 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 :)
To print all available command run:
$ npm run help
You can test it inside Docker with the PeerTube-Docker repository. Moreover it can help you to check how to create an environment with the required dependencies for PeerTube on a GNU/Linux distribution.
See the contributing guide.
See the server code documentation.
See the client code documentation.
See ARCHITECTURE.md for a more detailed explication.
See the ARCHITECTURE.md for more informations. Do not hesitate to give your opinion :)
Here are some simple schemes:
There already is a frontend (Angular 2) but the backend is a REST API so anybody can build a frontend (Web application, desktop application...).
The backend uses BitTorrent protocol, so users could use their favorite BitTorrent client to download/play the video with its torrent URI.