diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-11-27 16:06:13 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-11-27 19:43:01 +0100 |
commit | fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70 (patch) | |
tree | 23157ef819c5dba040a576b8dae0dee4eba6e85f /README.md | |
parent | 4e50b6a1c9a3eb261e04ede73241648e6edf21d6 (diff) | |
download | PeerTube-fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70.tar.gz PeerTube-fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70.tar.zst PeerTube-fcaf1e0aa84213a1b1f1b1a44a3276eae35ebe70.zip |
Update readme, architecture
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 60 |
1 files changed, 14 insertions, 46 deletions
@@ -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 | ||
197 | In this mode, the server will run requests between pods more quickly, the video durations are limited to a few seconds. | 185 | In this mode, the server will run requests between instances more quickly, the video durations are limited to a few seconds. |
198 | 186 | ||
199 | To develop on the server-side (server files are automatically compiled when we modify them and the server restarts automatically too): | 187 | To 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 | ||
220 | 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 :) | 208 | 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. |
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 | |||
230 | You 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 | ||
234 | See the [contributing guide](https://github.com/Chocobozzz/PeerTube/blob/master/.github/CONTRIBUTING.md). | 218 | See 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 | |||
259 | See the ARCHITECTURE.md for more information. Do not hesitate to give your opinion :) | ||
260 | 237 | ||
261 | Here are some simple schemes: | 238 | Here 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 | |||
279 | There already is a frontend (Angular) but the backend is a REST API so anybody can build a frontend (Web application, desktop application...). | ||
280 | The backend uses BitTorrent protocol, so users could use their favorite BitTorrent client to download/play the video with its torrent URI. | ||