aboutsummaryrefslogtreecommitdiffhomepage
path: root/README.md
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-11-27 16:06:13 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-11-27 19:43:01 +0100
commitfcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70 (patch)
tree23157ef819c5dba040a576b8dae0dee4eba6e85f /README.md
parent4e50b6a1c9a3eb261e04ede73241648e6edf21d6 (diff)
downloadPeerTube-fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70.tar.gz
PeerTube-fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70.tar.zst
PeerTube-fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70.zip
Update readme, architecture
Diffstat (limited to 'README.md')
-rw-r--r--README.md60
1 files changed, 14 insertions, 46 deletions
diff --git a/README.md b/README.md
index 35d53ee09..68b5dc519 100644
--- a/README.md
+++ b/README.md
@@ -77,30 +77,17 @@ Thanks to [WebTorrent](https://github.com/feross/webtorrent), we can make P2P (t
77 77
78- [X] Frontend 78- [X] Frontend
79 - [X] Angular frontend 79 - [X] Angular frontend
80- [X] Join a network 80- [X] Join the fediverse
81 - [X] Generate a RSA key 81 - [X] Follow other instances
82 - [X] Ask for the friend list of other pods and make friend with them 82 - [X] Unfollow an instance
83 - [X] Get the list of the videos owned by a pod when making friend with it 83 - [X] Get for the followers/following list
84 - [X] Post the list of its own videos when making friend with another pod
85- [X] Quit a network
86- [X] Upload a video 84- [X] Upload a video
87 - [X] Seed the video 85 - [X] Seed the video
88 - [X] Send the meta data to all other friends 86 - [X] Send the meta data with ActivityPub to followers
89- [X] Remove the video 87- [X] Remove the video
90- [X] List the videos 88- [X] List the videos
91- [X] Search a video name (local index) 89- [X] View the video in an HTML5 player with WebTorrent
92- [X] View the video in an HTML5 page with WebTorrent
93- [X] Manage admin account
94 - [X] Connection
95 - [X] Account rights (upload...)
96- [X] Make the network auto sufficient (eject bad pods etc)
97- [X] Validate the prototype (test PeerTube in a real world)
98- [ ] Manage inter pod API breaks
99- [ ] Add "DDOS" security (check if a pod don't send too many requests for example)
100- [X] Admin panel 90- [X] Admin panel
101 - [X] Stats
102 - [X] Friends list
103 - [X] Manage users (create/remove)
104- [X] OpenGraph tags 91- [X] OpenGraph tags
105- [X] OEmbed 92- [X] OEmbed
106- [X] Update video 93- [X] Update video
@@ -109,16 +96,17 @@ Thanks to [WebTorrent](https://github.com/feross/webtorrent), we can make P2P (t
109- [X] Transcoding to different definitions 96- [X] Transcoding to different definitions
110- [X] Download file/torrent 97- [X] Download file/torrent
111- [X] User video bytes quota 98- [X] User video bytes quota
112- [X] User channels 99- [X] User video channels
113- [X] NSFW warnings/settings 100- [X] NSFW warnings/settings
114- [X] Video description in markdown 101- [X] Video description in markdown
115- [X] User roles (administrator, moderator) 102- [X] User roles (administrator, moderator)
116- [X] User registration 103- [X] User registration
117- [X] Video privacy settings (public, unlisted or private) 104- [X] Video privacy settings (public, unlisted or private)
118- [X] Signaling a video to the admin origin pod 105- [X] Signaling a video to the admin origin PeerTube instance
119- [ ] Videos comments 106- [ ] Videos comments
120- [ ] User playlist 107- [ ] User playlist
121- [ ] User subscriptions (by tags, author...) 108- [ ] User subscriptions (by tags, author...)
109- [ ] Add "DDOS" security
122 110
123 111
124## Installation 112## Installation
@@ -194,7 +182,7 @@ The following commands will upgrade the source (according to your current branch
194 182
195### Development 183### Development
196 184
197In this mode, the server will run requests between pods more quickly, the video durations are limited to a few seconds. 185In this mode, the server will run requests between instances more quickly, the video durations are limited to a few seconds.
198 186
199To develop on the server-side (server files are automatically compiled when we modify them and the server restarts automatically too): 187To develop on the server-side (server files are automatically compiled when we modify them and the server restarts automatically too):
200 188
@@ -217,7 +205,7 @@ The API will listen on `localhost:9000` and the frontend on `localhost:3000` (wi
217 $ npm run clean:server:test 205 $ npm run clean:server:test
218 $ npm run play 206 $ npm run play
219 207
220Then 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 :) 208Then 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.
221 209
222### Other commands 210### Other commands
223 211
@@ -225,10 +213,6 @@ To print all available command run:
225 213
226 $ npm run help 214 $ npm run help
227 215
228## Dockerfile
229
230You can test it inside Docker with the [PeerTube-Docker repository](https://github.com/Chocobozzz/PeerTube-Docker). Moreover it can help you to check how to create an environment with the required dependencies for PeerTube on a GNU/Linux distribution.
231
232## Contributing 216## Contributing
233 217
234See the [contributing guide](https://github.com/Chocobozzz/PeerTube/blob/master/.github/CONTRIBUTING.md). 218See the [contributing guide](https://github.com/Chocobozzz/PeerTube/blob/master/.github/CONTRIBUTING.md).
@@ -245,18 +229,11 @@ See [ARCHITECTURE.md](https://github.com/Chocobozzz/PeerTube/blob/master/ARCHITE
245### Backend 229### Backend
246 230
247 * The backend is a REST API 231 * The backend is a REST API
248 * Servers communicate with each others through it 232 * Servers communicate with each others with [Activity Pub](https://www.w3.org/TR/activitypub/)
249 * A network is composed by servers that communicate between them 233 * Each server has its own users who query it (search videos, where the torrent URI of this specific video is...)
250 * Each server of a network has a list of all other servers of this network 234 * If a user upload a video, the server seeds it and sends the video information (name, short description, torrent URI...) its followers
251 * When a new installed server wants to join a network, it just has to get the servers list through a server that is already in the network and tell "Hi I'm new in the network, communicate with me and share me your servers list please". Then the server will "make friend" with each server of this list
252 * Each server has its own users who query it (search videos, where the torrent URI of this specific video is...)
253 * If a user upload a video, the server seeds it and sends the video information (name, short description, torrent URI...) to each server of the network
254 * Each server has a RSA key to encrypt and sign communications with other servers
255 * A server is a tracker responsible for all the videos uploaded in it 235 * A server is a tracker responsible for all the videos uploaded in it
256 * 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 236 * 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
257 * A network can live and evolve by expelling bad pod (with too many downtime for example)
258
259See the ARCHITECTURE.md for more information. Do not hesitate to give your opinion :)
260 237
261Here are some simple schemes: 238Here are some simple schemes:
262 239
@@ -268,13 +245,4 @@ Here are some simple schemes:
268 245
269<img src="https://lutim.cpy.re/pqKm3Q5S.png" alt="Watch a P2P video" /> 246<img src="https://lutim.cpy.re/pqKm3Q5S.png" alt="Watch a P2P video" />
270 247
271<img src="https://lutim.cpy.re/wWVuczBz.png" alt="Join a network" />
272
273<img src="https://lutim.cpy.re/AMo3uP0D.png" alt="Many networks" />
274
275</p> 248</p>
276
277### Frontend
278
279There already is a frontend (Angular) but the backend is a REST API so anybody can build a frontend (Web application, desktop application...).
280The backend uses BitTorrent protocol, so users could use their favorite BitTorrent client to download/play the video with its torrent URI.