]>
Commit | Line | Data |
---|---|---|
fcaf1e0a | 1 | # Architecture |
8c308c2b C |
2 | |
3 | ## Vocabulary | |
4 | ||
12b119c0 RK |
5 | - **Fediverse:** several servers following one another, several users |
6 | following each other. Designates federated communities in general. | |
7 | - **Vidiverse:** same as Fediverse, but federating videos specifically. | |
e755a63a BB |
8 | - **Instance:** a server which runs PeerTube in the fediverse. |
9 | - **Origin instance:** the instance on which the video was uploaded and which | |
10 | is seeding (through the WebSeed protocol) the video. | |
12b119c0 RK |
11 | - **Cache instance:** an instance that decided to make available a WebSeed |
12 | of its own for a video originating from another instance. It sends a `ptCache` | |
13 | activity to notify the origin instance, which will then update its list of | |
14 | WebSeeds for the video. | |
e755a63a BB |
15 | - **Following:** the action of a PeerTube instance which will follow another |
16 | instance (subscribe to its videos). | |
8c308c2b C |
17 | |
18 | ## Base | |
19 | ||
8c308c2b | 20 | ### Communications |
e755a63a BB |
21 | * All the communication between the instances are signed with [Linked Data |
22 | Signatures](https://w3c-dvcg.github.io/ld-signatures/) with the private key | |
23 | of the account that authored the action. | |
24 | * We use the [ActivityPub](https://www.w3.org/TR/activitypub/) protocol (only | |
25 | server-server for now). Object models could be found in | |
26 | [shared/models/activitypub | |
63bfad7e | 27 | directory](/shared/models/activitypub). |
e755a63a | 28 | * All the requests are retried several times if they fail. |
55e0591c | 29 | |
fcaf1e0a | 30 | ### Instance |
12b119c0 RK |
31 | * An instance has a websocket tracker which is responsible for all videos |
32 | uploaded by its users. | |
e755a63a BB |
33 | * An instance has an administrator that can follow other instances. |
34 | * An instance can be configured to follow back automatically. | |
35 | * An instance can blacklist other instances (only used in "follow back" | |
36 | mode). | |
37 | * An instance cannot choose which other instances follow it, but it can | |
38 | decide to **reject all** followers. | |
39 | * After having uploaded a video, the instance seeds it (WebSeed protocol). | |
40 | * If a user wants to watch a video, they ask its instance the magnet URI and | |
41 | the frontend adds the torrent (with WebTorrent), creates the HTML5 video | |
42 | player and streams the file into it. | |
43 | * A user watching a video seeds it too (BitTorrent). Thus another user who is | |
44 | watching the same video can get the data from the origin server and other | |
45 | users watching it. |