Mirror of upstream PeerTube repository.
Chocobozzz c986175d68 Fetch outbox to grab old activities | 7 years ago | |
---|---|---|
.github | 8 years ago | |
client | 7 years ago | |
config | 7 years ago | |
scripts | 7 years ago | |
server | 7 years ago | |
shared | 7 years ago | |
support | 7 years ago | |
.codeclimate.yml | 7 years ago | |
.gitignore | 7 years ago | |
.travis.yml | 7 years ago | |
ARCHITECTURE.md | 7 years ago | |
CREDITS.md | 7 years ago | |
FAQ.md | 7 years ago | |
LICENSE | 7 years ago | |
README.md | 7 years ago | |
package.json | 7 years ago | |
server.ts | 7 years ago | |
tsconfig.json | 7 years ago | |
tslint.json | 7 years ago | |
yarn.lock | 7 years ago |
PeerTube is sponsored by Framasoft, a non-profit that promotes, spreads and develops free-libre software. If you want to support this project, please consider donating them.
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 enough money to pay bandwidth and video storage of its server.
So we need to have a decentralized network (as Diaspora for example). But it's not enough 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.
See wiki for complete installation commands.
Run:
# apt-get update
# apt-get install ffmpeg postgresql-9.4 openssl
$ git clone -b master https://github.com/Chocobozzz/PeerTube
$ cd PeerTube
$ yarn install
$ 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-peertube
# systemctl start peertube
In this mode, the server will run requests between pods more quickly, the video durations are limited to a few seconds.
To develop on the server-side (server files are automatically compiled when we modify them and the server restarts automatically too):
$ npm run dev:server
The server (with the client) will listen on localhost:9000
.
To develop on the client side (client files are automatically compiled when we modify them):
$ npm run dev:client
The API will listen on localhost:9000
and the frontend on localhost:3000
(with hot module replacement, you don't need to refresh the web browser).
Username: root
Password: test
$ npm run clean:server:test
$ npm run play
Then you will get 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 information. Do not hesitate to give your opinion :)
Here are some simple schemes:
There already is a frontend (Angular) 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.