### Server side
-You can find a documentation of the server code/architecture [here](https://docs.joinpeertube.org/contribute-architecture?id=server-code).
+You can find a documentation of the server code/architecture [here](https://docs.joinpeertube.org/contribute/architecture#server).
To develop on the server-side:
### Client side
You can find a documentation of the client code/architecture
-[here](https://docs.joinpeertube.org/contribute-architecture?id=client-code).
+[here](https://docs.joinpeertube.org/contribute/architecture#client).
To develop on the client side:
### OpenAPI documentation
-The [REST API documentation](https://docs.joinpeertube.org/api-rest-reference.html) is generated from `support/doc/api/openapi.yaml` file.
+The [REST API documentation](https://docs.joinpeertube.org/api/rest-reference.html) is generated from `support/doc/api/openapi.yaml` file.
To quickly get a preview of your changes, you can generate the documentation *on the fly* using the following command:
```
### Environment variables
PeerTube can be configured using environment variables.
-See the list on https://docs.joinpeertube.org/maintain-configuration?id=environment-variables
+See the list on https://docs.joinpeertube.org/maintain/configuration#environment-variables
Additionally to these ones, we provide some environment for dev/test purpose:
## Plugins & Themes
-See the dedicated documentation: https://docs.joinpeertube.org/contribute-plugins
+See the dedicated documentation: https://docs.joinpeertube.org/contribute/plugins
attributes:
value: |
Please check the official documentation first:
- - Classic installation: https://docs.joinpeertube.org/install-any-os
- - Docker installation: https://docs.joinpeertube.org/install-docker
+ - Classic installation: https://docs.joinpeertube.org/install/any-os
+ - Docker installation: https://docs.joinpeertube.org/install/docker
- type: markdown
attributes:
description: |
Are you up to submit a pull request? Chances are, only a small edit is required, so give it a try:
* Click "Edit this page" if on https://docs.joinpeertube.org
- * Edit https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/api/openapi.yaml if on https://docs.joinpeertube.org/api-rest-reference.html
+ * Edit https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/api/openapi.yaml if on https://docs.joinpeertube.org/api/rest-reference.html
## Has this been tested?
<!-- Put an `x` in the box that applies: -->
-<!-- Check the unit test guide: https://docs.joinpeertube.org/contribute-getting-started?id=unit-tests -->
+<!-- Check the unit test guide: https://docs.joinpeertube.org/contribute/getting-started#unit-integration-tests -->
- [ ] 👍 yes, I added tests to the test suite
- [ ] 💭 no, because this PR is a draft and still needs work
### Documentation
- * Add [Monitoring/Observability documentation](https://docs.joinpeertube.org/maintain-observability) using PeerTube OpenTelemetry feature
+ * Add [Monitoring/Observability documentation](https://docs.joinpeertube.org/maintain/observability) using PeerTube OpenTelemetry feature
### Maintenance
### Plugins/Themes/Embed API
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:activity-pub.remote-video-comment.create.accept.result`
* Add server plugin helpers
* `socket.sendNotification` and `socket.sendVideoLiveNewState` [#5239](https://github.com/Chocobozzz/PeerTube/pull/5239)
* Add ability for plugins to register a websocket route using `registerWebSocketRoute`
- * Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add client plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:internal.player.p2p-media-loader.options.result` [#5318](https://github.com/Chocobozzz/PeerTube/pull/5318)
### CLI tools
* Theme:
* Removed unused `--secondaryColor` CSS variable
- * Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add client plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:api.my-library.video-playlist-elements.list.params` & `filter:api.my-library.video-playlist-elements.list.result` [#5098](https://github.com/Chocobozzz/PeerTube/pull/5098)
* `action:video-channel-create.init`
* `action:video-channel-update.init` & `action:video-channel-update.video-channel.loaded`
* `filter:share.video-embed-url.build.params` & `filter:share.video-embed-url.build.result` & `filter:share.video-playlist-embed-url.build.params` & `filter:share.video-playlist-embed-url.build.result`
* `filter:share.video-url.build.params` & `filter:share.video-url.build.result` & `filter:share.video-playlist-url.build.params` & `filter:share.video-playlist-url.build.result`
* `action:modal.share.shown`
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:job-queue.process.params` & `filter:job-queue.process.result`
* `filter:transcoding.manual.resolutions-to-transcode.result` & `filter:transcoding.auto.resolutions-to-transcode.result`
* `action:api.video-channel.created` & `action:api.video-channel.updated` & `action:api.video-channel.deleted`
* `action:notifier.notification.created`
- * Add HTML placeholder (https://docs.joinpeertube.org/contribute-plugins?id=html-placeholder-elements):
+ * Add HTML placeholder (https://docs.joinpeertube.org/contribute/plugins#html-placeholder-elements):
* `share-modal-playlist-settings` & `share-modal-video-settings`
### Features
* Classic installation: `cd /var/www/peertube/peertube-latest && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-4.2.js`
* Docker installation: `cd /var/www/peertube-docker && docker-compose exec -u peertube peertube node dist/scripts/migrations/peertube-4.2.js`
* **Important** SQL migrations (in particular `0685-multiple-actor-images`) can take several minutes to complete
- * **Important** You must update your nginx configuration to support video web editor: https://docs.joinpeertube.org/install-any-os?id=nginx
+ * **Important** You must update your nginx configuration to support video web editor: https://docs.joinpeertube.org/install/any-os#nginx
* REST API:
- * `PUT /api/v1/videos/{id}/watching` is deprecated, use `POST /api/v1/videos/videos/{id}/views` instead: https://docs.joinpeertube.org/api-rest-reference.html#operation/addView
+ * `PUT /api/v1/videos/{id}/watching` is deprecated, use `POST /api/v1/videos/videos/{id}/views` instead: https://docs.joinpeertube.org/api/rest-reference.html#operation/addView
### Maintenance
* `filter:api.video-playlist.videos.list.params` and `filter:api.video-playlist.videos.list.result`
* Support `getSettings()`, `isLoggedIn()` and `getAuthHeader()` client plugin helpers in embed
* Player URL query parameters:
- * Support `controlBar=0` to hide player control bar. See [the documentation](https://docs.joinpeertube.org/api-embed-player?id=url-parameters) for more information
+ * Support `controlBar=0` to hide player control bar. See [the documentation](https://docs.joinpeertube.org/api/embed-player#url-parameters) for more information
### Features
### Plugins/Themes/Embed API
- * Introduce ability for plugins to create client pages: https://docs.joinpeertube.org/contribute-plugins?id=create-client-page
- * Plugins that register custom video fields can choose in which tab they want to display them and can report errors: https://docs.joinpeertube.org/contribute-plugins?id=add-custom-fields-to-video-form
+ * Introduce ability for plugins to create client pages: https://docs.joinpeertube.org/contribute/plugins#create-client-page
+ * Plugins that register custom video fields can choose in which tab they want to display them and can report errors: https://docs.joinpeertube.org/contribute/plugins#add-custom-fields-to-video-form
* Add new client plugin id selectors
* Add `#plugin-selector-about-instance-moderation`, `#plugin-selector-about-instance-other-information`, `#plugin-selector-about-instance-features`, `#plugin-selector-about-instance-statistics`, `#plugin-selector-about-menu-instance`, `#plugin-selector-about-menu-peertube`, `#plugin-selector-about-menu-network` in about page [#4597](https://github.com/Chocobozzz/PeerTube/pull/4597)
* Add `#plugin-selector-menu-user-dropdown-language-item` in menu [#4597](https://github.com/Chocobozzz/PeerTube/pull/4597)
### Plugins/Themes/Embed API
-*Documentation: https://docs.joinpeertube.org/api-plugins*
+*Documentation: https://docs.joinpeertube.org/api/plugins*
* Add client plugin hooks:
* `filter:api.video-watch.video-playlist-elements.get.params` and `filter:api.video-watch.video-playlist-elements.get.result` [#4387](https://github.com/Chocobozzz/PeerTube/pull/4387)
- * Introduce plugin id selectors: https://docs.joinpeertube.org/contribute-plugins?id=plugin-selector-on-html-elements
+ * Introduce plugin id selectors: https://docs.joinpeertube.org/contribute/plugins#plugin-selector-on-html-elements
* Add `#plugin-selector-login-form` to login form
### Docker
### CLI tools
- * Add [create-move-video-storage-jobs](https://docs.joinpeertube.org/maintain-tools?id=create-move-video-storage-jobjs) script to move local video files in object storage [#4481](https://github.com/Chocobozzz/PeerTube/pull/4481)
+ * Add [create-move-video-storage-jobs](https://docs.joinpeertube.org/maintain/tools#create-move-video-storage-jobjs) script to move local video files in object storage [#4481](https://github.com/Chocobozzz/PeerTube/pull/4481)
* Removed `peertube-repl` and `peertube-watch` scripts
* Apply import interval only when reasonable [#4552](https://github.com/Chocobozzz/PeerTube/pull/4552)
### Plugins/Themes/Embed API
-*Documentation: https://docs.joinpeertube.org/api-plugins*
+*Documentation: https://docs.joinpeertube.org/api/plugins*
* Server helpers
* **Deprecate** `videoLanguageManager.addLanguage` and `videoLanguageManager.deleteLanguage`: use `videoLanguageManager.addConstant` and `videoLanguageManager.deleteConstant` instead
### Custom markup API
-*Documentation: https://docs.joinpeertube.org/api-custom-client-markup*
+*Documentation: https://docs.joinpeertube.org/api/custom-client-markup*
* Add ability to only display VOD or live videos in `<peertube-videos-list>` element
* `<peertube-container>` fills all available width. Can be changed using `data-justify-content` attribute
* Hide or display sensitive content
* Choose to display all videos or only local videos
* :tada: **Beta:** Add support for saving video files in object storage [#4290](https://github.com/Chocobozzz/PeerTube/pull/4290)
- * Check the documentation: https://docs.joinpeertube.org/admin-remote-storage
+ * Check the documentation: https://docs.joinpeertube.org/admin/remote-storage
* :tada: Add ability for instances to follow any actor (so specific accounts and channels)
* Updated HLS.js (library to play HLS playlists in PeerTube player) to V1:
* Remember last bandwidth to prevent resolution change at the beginning of the video
### IMPORTANT NOTES
* **Important:** v3.2.0 introduced a `pg_dump` export bug in the auto upgrade script. v3.2.1 fixed this bug. To upgrade from v3.2.**0**:
- * You can upgrade manually https://docs.joinpeertube.org/install-any-os?id=manually
+ * You can upgrade manually https://docs.joinpeertube.org/install/any-os#manually
* Or you can apply the changes introduced in this commit: https://github.com/Chocobozzz/PeerTube/commit/86dc0b9cc9374cba7548bb613ff43d92f90570a8 and then use the auto upgrade script
* **Important:** Due to a bug in ffmpeg, PeerTube is not compatible with ffmpeg 4.4. See https://github.com/Chocobozzz/PeerTube/issues/3990
* Add client helpers:
* `getBaseRouterRoute()` [#4153](https://github.com/Chocobozzz/PeerTube/pull/4153)
- * Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add client plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:left-menu.links.create.result` to add/remove left menu links
* `filter:internal.player.videojs.options.result` to filter options sent to videojs player [#4126](https://github.com/Chocobozzz/PeerTube/pull/4126)
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `action:api.video-playlist-element.created`
### Features
- * :tada: Add ability to create a custom homepage using HTML, markdown and [custom HTML tags](https://docs.joinpeertube.org/api-custom-client-markup) [#4007](https://github.com/Chocobozzz/PeerTube/pull/4007)
+ * :tada: Add ability to create a custom homepage using HTML, markdown and [custom HTML tags](https://docs.joinpeertube.org/api/custom-client-markup) [#4007](https://github.com/Chocobozzz/PeerTube/pull/4007)
* :tada: Add ability to search playlists in PeerTube instance and [SepiaSearch](https://sepiasearch.org/)
* :tada: Shorter public URLs (old URLs are still supported):
* Handle short UUID (`8r4jooaQpHp8tw1E1qpSeYq` instead of `3caf7bea-5ceb-4959-81a0-b44d184e897c`) for playlists and videos
* Use `/a/:accountName` instead of `/accounts/:accountName` and `/c/:channelName` instead of `/video-channels/:channelName` [#4009](https://github.com/Chocobozzz/PeerTube/pull/4009)
* Provide `/@:username` page that automatically redirect to the account or channel page [#4009](https://github.com/Chocobozzz/PeerTube/pull/4009)
* :tada: Add RTL layout support
- * Add ability to use HTML, markdown and [custom HTML tags](https://docs.joinpeertube.org/api-custom-client-markup) in instance description
+ * Add ability to use HTML, markdown and [custom HTML tags](https://docs.joinpeertube.org/api/custom-client-markup) in instance description
* Default to dark theme (if available) if requested by the web browser
* Add ability for admins to configure minimum age required in signup page [#4010](https://github.com/Chocobozzz/PeerTube/pull/4010)
* Use a dedicated URL for each tab in publish page
### IMPORTANT NOTES
* **Important:** v3.2.0 introduced a `pg_dump` export bug in the auto upgrade script. To upgrade from v3.2.0:
- * You can upgrade manually https://docs.joinpeertube.org/install-any-os?id=manually
+ * You can upgrade manually https://docs.joinpeertube.org/install/any-os#manually
* Or you can apply the changes introduced in this commit: https://github.com/Chocobozzz/PeerTube/commit/86dc0b9cc9374cba7548bb613ff43d92f90570a8 and then use the auto upgrade script
### Bug fixes
* **Important:** Drop NodeJS 10 support
* PeerTube is not compatible with NodeJS 16 yet
* By default, HLS transcoding is now enabled and webtorrent is disabled. We suggest you to reflect this change.
- See [the documentation](https://docs.joinpeertube.org/admin-configuration?id=webtorrent-transcoding-or-hls-transcoding) for more information
+ See [the documentation](https://docs.joinpeertube.org/admin/configuration#webtorrent-transcoding-or-hls-transcoding) for more information
* PeerTube client now displays bigger video thumbnails.
- To fix old thumbnails quality, run `regenerate-thumbnails` script after your PeerTube upgrade: https://docs.joinpeertube.org/maintain-tools?id=regenerate-thumbnailsjs
+ To fix old thumbnails quality, run `regenerate-thumbnails` script after your PeerTube upgrade: https://docs.joinpeertube.org/maintain/tools#regenerate-thumbnailsjs
### Docker
* Theme:
* `--submenuColor` becomes `--submenuBackgroundColor`
- * Support HTML placeholders for plugins. See [the documentation](https://docs.joinpeertube.org/contribute-plugins?id=html-placeholder-elements) for more information
+ * Support HTML placeholders for plugins. See [the documentation](https://docs.joinpeertube.org/contribute/plugins#html-placeholder-elements) for more information
* `player-next` next to the PeerTube player
- * Support storing files for plugins in a dedicated directory. See [the documentation](https://docs.joinpeertube.org/contribute-plugins?id=storage) for more information
+ * Support storing files for plugins in a dedicated directory. See [the documentation](https://docs.joinpeertube.org/contribute/plugins#storage) for more information
* Transcoding:
* Add `inputOptions` option support for transcoding profile [#3917](https://github.com/Chocobozzz/PeerTube/pull/3917)
* Add `scaleFilter.name` option support for transcoding profile [#3917](https://github.com/Chocobozzz/PeerTube/pull/3917)
* `plugin.getBaseRouterRoute()`
* `plugin.getDataDirectoryPath()`
* `user.getAuthUser()`
- * Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add client plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `action:modal.video-download.shown`
* `action:video-upload.init`
* `action:video-url-import.init`
* `action:auth-user.logged-in` & `action:auth-user.logged-out`
* `action:auth-user.information-loaded`
* `action:admin-plugin-settings.init`
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:api.download.video.allowed.result` & `filter:api.download.torrent.allowed.result` to forbid download
* `filter:html.embed.video-playlist.allowed.result` & `filter:html.embed.video.allowed.result` to forbid embed
* `filter:api.search.videos.local.list.params` & `filter:api.search.videos.local.list.result`
### Plugins/Themes/Embed API
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:api.user.me.videos.list.params` and `filter:api.user.me.videos.list.result`
* Add server helpers:
* `videos.loadByIdOrUUID`
- * Add server transcoding helpers (https://docs.joinpeertube.org/contribute-plugins?id=add-new-transcoding-profiles):
+ * Add server transcoding helpers (https://docs.joinpeertube.org/contribute/plugins#add-new-transcoding-profiles):
* `transcodingManager.addVODProfile`
* `transcodingManager.addVODEncoderPriority`
* `transcodingManager.addLiveProfile`
### Docker
- * Fix [upgrade documentation](https://docs.joinpeertube.org/install-docker?id=upgrade)
+ * Fix [upgrade documentation](https://docs.joinpeertube.org/install/docker#upgrade)
* Add live RTMP port in docker compose
### Bug fixes
* Replace traefik by nginx in our docker-compose template:
* Better consistency with our default setup (we now use the same stack)
* Use our default nginx template enabling many optimizations
- * Update the documentation to take into account this change: https://docs.joinpeertube.org/install-docker
+ * Update the documentation to take into account this change: https://docs.joinpeertube.org/install/docker
### Plugins/Themes/Embed API
* Add ability for auth plugins to redirect user on logout [#32](https://framagit.org/framasoft/peertube/PeerTube/-/merge_requests/32) & [#33](https://framagit.org/framasoft/peertube/PeerTube/-/merge_requests/33)
* Add `input-password` setting to plugins [#3375](https://github.com/Chocobozzz/PeerTube/issues/3375)
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:api.accounts.videos.list.params`
* `filter:api.accounts.videos.list.result`
* `filter:api.video-channels.videos.list.params`
### Plugins/Themes/Embed API
- * Add embed API (https://docs.joinpeertube.org/api-embed-player):
+ * Add embed API (https://docs.joinpeertube.org/api/embed-player):
* `playNextVideo` method
* `playPreviousVideo` method
* `getCurrentPosition` method
* Embed URL parameters
* Add ability to disable PeerTube link in embed using an URL param (`peertubeLink=0`)
* Add plugins support in embed
- * Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add client plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `action:embed.player.loaded` (for embed)
- * Add custom fields in video update/upload form using `registerVideoField` (https://docs.joinpeertube.org/contribute-plugins?id=add-custom-fields-to-video-form)
+ * Add custom fields in video update/upload form using `registerVideoField` (https://docs.joinpeertube.org/contribute/plugins#add-custom-fields-to-video-form)
### Features
### CLI tools
- * Add redundancy CLI: https://docs.joinpeertube.org/maintain-tools?id=peertube-redundancyjs
+ * Add redundancy CLI: https://docs.joinpeertube.org/maintain/tools#peertube-redundancyjs
* Add ability to pass remaining options to youtube-dl binary in peertube-import script ([@drzraf](https://github.com/drzraf))
### Docker
### Maintenance
- * Add nginx configuration to redirect videos to an S3 bucket ([@rigelk](https://github.com/rigelk)) and update of the [corresponding documentation](https://docs.joinpeertube.org/admin-remote-storage).
+ * Add nginx configuration to redirect videos to an S3 bucket ([@rigelk](https://github.com/rigelk)) and update of the [corresponding documentation](https://docs.joinpeertube.org/admin/remote-storage).
### Plugins/Themes/Embed API
- * Add embed API (https://docs.joinpeertube.org/api-embed-player):
+ * Add embed API (https://docs.joinpeertube.org/api/embed-player):
* `playbackState` can be `ended`
* `playbackStatusUpdate` has a `duration` field
* `setCaption` and `getCaptions` methods
- * Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add client plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `action:login.init`
* `action:video-watch.video-threads.loaded`
* `action:video-watch.video-thread-replies.loaded` ([@ipbc-dev](https://github.com/ipbc-dev))
- * Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
+ * Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
* `filter:api.video.pre-import-url.accept.result`
* `filter:api.video.pre-import-torrent.accept.result`
* `filter:api.video.post-import-url.accept.result`
We added some sections in the documentation website:
- * S3 remote storage: https://docs.joinpeertube.org/admin-remote-storage
- * Instances redundancy: https://docs.joinpeertube.org/admin-following-instances
- * Moderate your instance: https://docs.joinpeertube.org/admin-moderation
- * Customize your instance (install plugins & themes): https://docs.joinpeertube.org/admin-customize-instance
- * PeerTube logs (standard log/audit log): https://docs.joinpeertube.org/admin-logs
- * Mute accounts/instances: https://docs.joinpeertube.org/use-mute
- * Controlled player embed API: https://docs.joinpeertube.org/api-embed-player
+ * S3 remote storage: https://docs.joinpeertube.org/admin/remote-storage
+ * Instances redundancy: https://docs.joinpeertube.org/admin/following-instances
+ * Moderate your instance: https://docs.joinpeertube.org/admin/moderation
+ * Customize your instance (install plugins & themes): https://docs.joinpeertube.org/admin/customize-instance
+ * PeerTube logs (standard log/audit log): https://docs.joinpeertube.org/admin/logs
+ * Mute accounts/instances: https://docs.joinpeertube.org/use/mute
+ * Controlled player embed API: https://docs.joinpeertube.org/api/embed-player
### Docker
* PeerTube moved translations from Zanata to Weblate. Here is the new translations website URL: https://weblate.framasoft.org/projects/peertube/
* We now provide a JavaScript library to control a PeerTube embed: https://www.npmjs.com/package/@peertube/embed-api
- * Add ability to generate HLS videos using `create-transcoding-job` script (see [the documentation](https://docs.joinpeertube.org/maintain-tools?id=create-transcoding-jobjs))
+ * Add ability to generate HLS videos using `create-transcoding-job` script (see [the documentation](https://docs.joinpeertube.org/maintain/tools#create-transcoding-jobjs))
* Update nginx template: (you need to [update manually](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/production.md#nginx))
* Add streaming playlists endpoint
* Add `client_body_temp_path` hint
### Features
* :tada: Support Finnish, Greek and Scottish Gaelic languages
- * :tada: Add basic plugins and themes support (**beta**): https://docs.joinpeertube.org/contribute-plugins
+ * :tada: Add basic plugins and themes support (**beta**): https://docs.joinpeertube.org/contribute/plugins
* Install plugins or themes from the administration panel
* Choose a default theme for your instance
* Users can choose the theme they want among the list of themes their administrator installed
<h3 align="right">Communities that help each other</h3>
<p align="right">
-In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our <a href="https://docs.joinpeertube.org/contribute-architecture?id=redundancy-between-instances">redundancy guide</a>).
+In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our <a href="https://docs.joinpeertube.org/contribute/architecture#redundancy-between-instances">redundancy guide</a>).
</p>
<p align="right">
Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and alter creativity (more about that in our <a href="https://github.com/Chocobozzz/PeerTube/blob/develop/FAQ.md">FAQ</a>).
See the [production guide](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/production.md), which is the recommended way to install or upgrade PeerTube. For hardware requirements, see [Should I have a big server to run PeerTube?](https://joinpeertube.org/faq#should-i-have-a-big-server-to-run-peertube) in the FAQ.
-See the [community packages](https://docs.joinpeertube.org/install-unofficial), which cover various platforms (including [YunoHost](https://install-app.yunohost.org/?app=peertube) and [Docker](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/docker.md)).
+See the [community packages](https://docs.joinpeertube.org/install/unofficial), which cover various platforms (including [YunoHost](https://install-app.yunohost.org/?app=peertube) and [Docker](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/docker.md)).
:book: Documentation
----------------------------------------------------------------
### User documentation
-See the [user documentation](https://docs.joinpeertube.org/use-setup-account).
+See the [user documentation](https://docs.joinpeertube.org/use/setup-account).
### Admin documentation
See [how to create your own instance](https://github.com/Chocobozzz/PeerTube/blob/develop/README.md#package-create-your-own-instance).
-See the more general [admin documentation](https://docs.joinpeertube.org/admin-following-instances).
+See the more general [admin documentation](https://docs.joinpeertube.org/admin/following-instances).
### Tools documentation
-Learn how to import/upload videos from CLI or admin your PeerTube instance with the [tools documentation](https://docs.joinpeertube.org/maintain-tools).
+Learn how to import/upload videos from CLI or admin your PeerTube instance with the [tools documentation](https://docs.joinpeertube.org/maintain/tools).
### Technical documentation
-See the [architecture blueprint](https://docs.joinpeertube.org/contribute-architecture) for a more detailed explanation of the architectural choices.
+See the [architecture blueprint](https://docs.joinpeertube.org/contribute/architecture) for a more detailed explanation of the architectural choices.
See our REST API documentation:
* OpenAPI 3.0.0 schema: [/support/doc/api/openapi.yaml](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/api/openapi.yaml)
- * Spec explorer: [docs.joinpeertube.org/api-rest-reference.html](https://docs.joinpeertube.org/api-rest-reference.html)
+ * Spec explorer: [docs.joinpeertube.org/api-rest-reference.html](https://docs.joinpeertube.org/api/rest-reference.html)
-See our [ActivityPub documentation](https://docs.joinpeertube.org/api-activitypub).
+See our [ActivityPub documentation](https://docs.joinpeertube.org/api/activitypub).
## License
<div class="card">
<div class="card-body">
<div class="card-title">
- <a i18n class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/use-setup-account">Use PeerTube documentation</a>
+ <a i18n class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/use/setup-account">Use PeerTube documentation</a>
</div>
<div i18n class="card-text">
<div class="card">
<div class="card-body">
<div class="card-title">
- <a i18n class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/use-third-party-application">PeerTube Applications</a>
+ <a i18n class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/use/third-party-application">PeerTube Applications</a>
</div>
<div i18n class="card-text">
<div class="card">
<div class="card-body">
<div class="card-title">
- <a i18n class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/contribute-getting-started">Contribute on PeerTube</a>
+ <a i18n class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/contribute/getting-started">Contribute on PeerTube</a>
</div>
<div i18n class="card-text">
i18n-labelText labelText="Allow import with HTTP URL (e.g. YouTube)"
>
<ng-container ngProjectAs="description">
- <span i18n>⚠️ If enabled, we recommend to use <a class="link-orange" href="https://docs.joinpeertube.org/maintain-configuration?id=security">a HTTP proxy</a> to prevent private URL access from your PeerTube server</span>
+ <span i18n>⚠️ If enabled, we recommend to use <a class="link-orange" href="https://docs.joinpeertube.org/maintain/configuration#security">a HTTP proxy</a> to prevent private URL access from your PeerTube server</span>
</ng-container>
</my-peertube-checkbox>
</div>
<div i18n>⚠️ This functionality requires a lot of attention and extra moderation.</div>
<span i18n>
- See <a class="link-orange" href="https://docs.joinpeertube.org/admin-following-instances?id=automatically-follow-other-instances" rel="noopener noreferrer" target="_blank">the documentation</a> for more information about the expected URL
+ See <a class="link-orange" href="https://docs.joinpeertube.org/admin/following-instances#automatically-follow-other-instances" rel="noopener noreferrer" target="_blank">the documentation</a> for more information about the expected URL
</span>
</ng-container>
</span>
<span i18n>
- However, you may want to read <a class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/admin-configuration?id=transcoding">our guidelines</a> before tweaking the following values.
+ However, you may want to read <a class="link-orange" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/admin/configuration#vod-transcoding">our guidelines</a> before tweaking the following values.
</span>
</div>
</div>
</div>
<div i18n>
- See the <a target="_blank" href="https://docs.joinpeertube.org/use-library?id=playlist">documentation</a> for more information.
+ See the <a target="_blank" href="https://docs.joinpeertube.org/use/library#playlist">documentation</a> for more information.
</div>
</div>
<p i18n>Your email has been verified and your account has been created!</p>
<p i18n>
- If you need help to use PeerTube, you can have a look at the <a class="link-orange" href="https://docs.joinpeertube.org/use-setup-account" target="_blank" rel="noopener noreferrer">documentation</a>.
+ If you need help to use PeerTube, you can have a look at the <a class="link-orange" href="https://docs.joinpeertube.org/use/setup-account" target="_blank" rel="noopener noreferrer">documentation</a>.
</p>
</ng-container>
</div>
</p>
<p *ngIf="!requiresApproval" i18n>
- If you need help to use PeerTube, you can have a look at the <a class="link-orange" href="https://docs.joinpeertube.org/use-setup-account" target="_blank" rel="noopener noreferrer">documentation</a>.
+ If you need help to use PeerTube, you can have a look at the <a class="link-orange" href="https://docs.joinpeertube.org/use/setup-account" target="_blank" rel="noopener noreferrer">documentation</a>.
</p>
</ng-container>
</div>
<a i18n href="https://joinpeertube.org/help" i18n-title title="Get help using PeerTube" target="_blank" rel="noopener noreferrer">Help</a>
<a i18n href="https://joinpeertube.org/faq" i18n-title title="Frequently asked questions about PeerTube" target="_blank" rel="noopener noreferrer">FAQ</a>
<a i18n routerLink="/about/instance" fragment="statistics">Stats</a>
- <a i18n href="https://docs.joinpeertube.org/api-rest-reference.html" i18n-title title="API documentation" target="_blank" rel="noopener noreferrer">API</a>
+ <a i18n href="https://docs.joinpeertube.org/api/rest-reference.html" i18n-title title="API documentation" target="_blank" rel="noopener noreferrer">API</a>
<a role="button" (click)="openHotkeysCheatSheet()" class="c-hand" i18n>Keyboard shortcuts</a>
</div>
</div>
<div class="block-documentation">
<div class="columns">
- <a class="link-block" href="https://docs.joinpeertube.org/maintain-tools" target="_blank" rel="noopener noreferrer">
- <a i18n class="link-title" href="https://docs.joinpeertube.org/maintain-tools" target="_blank" rel="noopener noreferrer">CLI
+ <a class="link-block" href="https://docs.joinpeertube.org/maintain/tools" target="_blank" rel="noopener noreferrer">
+ <a i18n class="link-title" href="https://docs.joinpeertube.org/maintain/tools" target="_blank" rel="noopener noreferrer">CLI
documentation</a>
<div i18n>Upload or import videos, parse logs, prune storage directories, reset user password...</div>
</a>
- <a class="link-block" href="https://docs.joinpeertube.org/admin-following-instances" target="_blank" rel="noopener noreferrer">
- <a i18n class="link-title" href="https://docs.joinpeertube.org/admin-following-instances" target="_blank" rel="noopener noreferrer">Administer
+ <a class="link-block" href="https://docs.joinpeertube.org/admin/following-instances" target="_blank" rel="noopener noreferrer">
+ <a i18n class="link-title" href="https://docs.joinpeertube.org/admin/following-instances" target="_blank" rel="noopener noreferrer">Administer
documentation</a>
<div i18n>Managing users, following other instances, dealing with spammers...</div>
</a>
- <a class="link-block" href="https://docs.joinpeertube.org/use-setup-account" target="_blank" rel="noopener noreferrer">
- <a i18n class="link-title" href="https://docs.joinpeertube.org/use-setup-account" target="_blank" rel="noopener noreferrer">Use
+ <a class="link-block" href="https://docs.joinpeertube.org/use/setup-account" target="_blank" rel="noopener noreferrer">
+ <a i18n class="link-title" href="https://docs.joinpeertube.org/use/setup-account" target="_blank" rel="noopener noreferrer">Use
documentation</a>
<div i18n>Setup your account, managing video playlists, discover third-party applications...</div>
<ng-container i18n>
- <a href="https://en.wikipedia.org/wiki/Markdown#Example" target="_blank" rel="noreferrer noopener">Markdown compatible</a> that also supports <a href="https://docs.joinpeertube.org/api-custom-client-markup" target="_blank" rel="noreferrer noopener">custom PeerTube HTML tags</a>
+ <a href="https://en.wikipedia.org/wiki/Markdown#Example" target="_blank" rel="noreferrer noopener">Markdown compatible</a> that also supports <a href="https://docs.joinpeertube.org/api/custom-client-markup" target="_blank" rel="noreferrer noopener">custom PeerTube HTML tags</a>
</ng-container>
<p i18n>
- See <a class="link-orange" href="https://docs.joinpeertube.org/use-create-upload-video?id=publish-a-live-in-peertube-gt-v3" target="_blank" rel="noopener noreferrer">the documentation</a>
+ See <a class="link-orange" href="https://docs.joinpeertube.org/use/create-upload-video#publish-a-live" target="_blank" rel="noopener noreferrer">the documentation</a>
to learn how to use the PeerTube live streaming feature.
</p>
# @peertube/embed-api
-See https://docs.joinpeertube.org/api-embed-player
+See https://docs.joinpeertube.org/api/embed-player
accept_client_log: true
# Support of Open Telemetry metrics and tracing
-# For more information: https://docs.joinpeertube.org/maintain-observability
+# For more information: https://docs.joinpeertube.org/maintain/observability
open_telemetry:
metrics:
enabled: false
# Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
http:
# We recommend to use a HTTP proxy if you enable HTTP import to prevent private URL access from this server
- # See https://docs.joinpeertube.org/maintain-configuration?id=security for more information
+ # See https://docs.joinpeertube.org/maintain/configuration#security for more information
enabled: false
youtube_dl_release:
# Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
torrent:
# We recommend to only enable magnet URI/torrent import if you trust your users
- # See https://docs.joinpeertube.org/maintain-configuration?id=security for more information
+ # See https://docs.joinpeertube.org/maintain/configuration#security for more information
enabled: false
# Add ability for your users to synchronize their channels with external channels, playlists, etc
search_index:
enabled: false
# URL of the search index, that should use the same search API and routes
- # than PeerTube: https://docs.joinpeertube.org/api-rest-reference.html
+ # than PeerTube: https://docs.joinpeertube.org/api/rest-reference.html
# You should deploy your own with https://framagit.org/framasoft/peertube/search-index,
# and can use https://search.joinpeertube.org/ for tests, but keep in mind the latter is an unmoderated search index
url: ''
accept_client_log: true
# Support of Open Telemetry metrics and tracing
-# For more information: https://docs.joinpeertube.org/maintain-observability
+# For more information: https://docs.joinpeertube.org/maintain/observability
open_telemetry:
metrics:
enabled: false
# Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
http:
# We recommend to use a HTTP proxy if you enable HTTP import to prevent private URL access from this server
- # See https://docs.joinpeertube.org/maintain-configuration?id=security for more information
+ # See https://docs.joinpeertube.org/maintain/configuration#security for more information
enabled: false
youtube_dl_release:
# Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
torrent:
# We recommend to only enable magnet URI/torrent import if you trust your users
- # See https://docs.joinpeertube.org/maintain-configuration?id=security for more information
+ # See https://docs.joinpeertube.org/maintain/configuration#security for more information
enabled: false
# Add ability for your users to synchronize their channels with external channels, playlists, etc.
search_index:
enabled: false
# URL of the search index, that should use the same search API and routes
- # than PeerTube: https://docs.joinpeertube.org/api-rest-reference.html
+ # than PeerTube: https://docs.joinpeertube.org/api/rest-reference.html
# You should deploy your own with https://framagit.org/framasoft/peertube/search-index,
# and can use https://search.joinpeertube.org/ for tests, but keep in mind the latter is an unmoderated search index
url: ''
## Usage
-> See [contribute-plugins](https://docs.joinpeertube.org/contribute-plugins?id=typescript) **Typescript** section of the doc.
+> See [contribute-plugins](https://docs.joinpeertube.org/contribute/plugins#typescript) **Typescript** section of the doc.
if (CONFIG.LIVE.RTMPS.ENABLED) {
if (!CONFIG.LIVE.RTMPS.KEY_FILE) {
- throw new Error('You must specify a key file to enabled RTMPS')
+ throw new Error('You must specify a key file to enable RTMPS')
}
if (!CONFIG.LIVE.RTMPS.CERT_FILE) {
operationId?: string
}) {
return (req: express.Request, res: express.Response, next: express.NextFunction) => {
- res.locals.docUrl = options.url || 'https://docs.joinpeertube.org/api-rest-reference.html#operation/' + options.operationId
+ res.locals.docUrl = options.url || 'https://docs.joinpeertube.org/api/rest-reference.html#operation/' + options.operationId
if (next) return next()
}
detail: message,
type: type
- ? `https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/${type}`
+ ? `https://docs.joinpeertube.org/api/rest-reference.html#section/Errors/${type}`
: undefined
}, extension)
const error = body as unknown as PeerTubeProblemDocument
if (mode === 'legacy') {
- expect(error.docs).to.equal('https://docs.joinpeertube.org/api-rest-reference.html#operation/uploadLegacy')
+ expect(error.docs).to.equal('https://docs.joinpeertube.org/api/rest-reference.html#operation/uploadLegacy')
} else {
- expect(error.docs).to.equal('https://docs.joinpeertube.org/api-rest-reference.html#operation/uploadResumableInit')
+ expect(error.docs).to.equal('https://docs.joinpeertube.org/api/rest-reference.html#operation/uploadResumableInit')
}
expect(error.type).to.equal('about:blank')
const res = await makePutBodyRequest({ url: server.url, path: path + video.shortUUID, token: server.accessToken, fields })
const error = res.body as PeerTubeProblemDocument
- expect(error.docs).to.equal('https://docs.joinpeertube.org/api-rest-reference.html#operation/putVideo')
+ expect(error.docs).to.equal('https://docs.joinpeertube.org/api/rest-reference.html#operation/putVideo')
expect(error.type).to.equal('about:blank')
expect(error.title).to.equal('Bad Request')
const body = await server.videos.get({ id: 'hi', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
const error = body as unknown as PeerTubeProblemDocument
- expect(error.docs).to.equal('https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo')
+ expect(error.docs).to.equal('https://docs.joinpeertube.org/api/rest-reference.html#operation/getVideo')
expect(error.type).to.equal('about:blank')
expect(error.title).to.equal('Bad Request')
const body = await server.videos.remove({ id: 'hello', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
const error = body as PeerTubeProblemDocument
- expect(error.docs).to.equal('https://docs.joinpeertube.org/api-rest-reference.html#operation/delVideo')
+ expect(error.docs).to.equal('https://docs.joinpeertube.org/api/rest-reference.html#operation/delVideo')
expect(error.type).to.equal('about:blank')
expect(error.title).to.equal('Bad Request')
const body = await servers[0].videos.get({ id: video2UUID, expectedStatus: HttpStatusCode.FORBIDDEN_403 })
const error = body as unknown as PeerTubeProblemDocument
- const doc = 'https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/does_not_respect_follow_constraints'
+ const doc = 'https://docs.joinpeertube.org/api/rest-reference.html#section/Errors/does_not_respect_follow_constraints'
expect(error.type).to.equal(doc)
expect(error.code).to.equal(ServerErrorCode.DOES_NOT_RESPECT_FOLLOW_CONSTRAINTS)
# PeerTube CLI
-See https://docs.joinpeertube.org/maintain-tools?id=remote-tools
+See https://docs.joinpeertube.org/maintain/tools#remote-tools
player.pause()
```
-# URL parameters
+## Embed URL parameters
You can customize PeerTube player by specifying URL query parameters.
For example `https://my-instance.example.com/videos/embed/52a10666-3a18-4e73-93da-e8d3c12c305a??start=1s&stop=18s&loop=1&autoplay=1&muted=1&warningTitle=0&controlBar=0&peertubeLink=0&p2p=0`
-## start
+### start
Start the video at a specific time.
Value must be raw seconds or a duration (`3m4s`)
-## stop
+### stop
Stop the video at a specific time.
Value must be raw seconds or a duration (`54s`)
-## controls
+### controls
Mimics video HTML element `controls` attribute, meaning that all controls (including big play button, control bar, etc.) will be removed.
It can be useful if you want to have a full control of the PeerTube player.
Value must be `0` or `1`.
-## controlBar
+### controlBar
Hide control bar when the video is played.
Value must be `0` or `1`.
-## peertubeLink
+### peertubeLink
Hide PeerTube instance link in control bar.
Value must be `0` or `1`.
-## muted
+### muted
Mute the video by default.
Value must be `0` or `1`.
-## loop
+### loop
Automatically start again the video when it ends.
Value must be `0` or `1`.
-## subtitle
+### subtitle
Auto select a subtitle by default.
Value must be a valid subtitle ISO code (`fr`, `en`, etc.).
-## autoplay
+### autoplay
Try to automatically play the video.
Most web browsers disable video autoplay if the user did not interact with the video. You can try to bypass this limitation by muting the video
Value must be `0` or `1`.
-## title
+### title
Hide embed title.
Value must be `0` or `1`.
-## warningTitle
+### warningTitle
Hide P2P warning title.
Value must be `0` or `1`.
-## p2p
+### p2p
Disable P2P.
Value must be `0` or `1`.
-## bigPlayBackgroundColor
+### bigPlayBackgroundColor
Customize big play button background color.
Value must be a valid color (`red` or `rgba(100, 100, 100, 0.5)`).
-## foregroundColor
+### foregroundColor
Customize embed font color.
Value must be a valid color (`red` or `rgba(100, 100, 100, 0.5)`).
-## mode
+### mode
Force a specific player engine.
Value must be a valid mode (`webtorrent` or `p2p-media-loader`).
-## api
+### api
Enable embed JavaScript API (see methods below).
Value must be `0` or `1`.
-# Methods
+## Embed methods
-## `play() : Promise<void>`
+### `play() : Promise<void>`
Starts playback, or resumes playback if it is paused.
-## `pause() : Promise<void>`
+### `pause() : Promise<void>`
Pauses playback.
-## `seek(positionInSeconds : number)`
+### `seek(positionInSeconds : number)`
Seek to the given position, as specified in seconds into the video.
-## `addEventListener(eventName : string, handler : Function)`
+### `addEventListener(eventName : string, handler : Function)`
Add a listener for a specific event. See below for the available events.
-## `removeEventListener(eventName : string, handler : Function)`
+### `removeEventListener(eventName : string, handler : Function)`
Remove a listener.
-## `getResolutions() : Promise<PeerTubeResolution[]>`
+### `getResolutions() : Promise<PeerTubeResolution[]>`
Get the available resolutions. A `PeerTubeResolution` looks like:
`active` is true if the resolution is the currently selected resolution.
-## `setResolution(resolutionId : number): Promise<void>`
+### `setResolution(resolutionId : number): Promise<void>`
Change the current resolution. Pass `-1` for automatic resolution (when available).
Otherwise, `resolutionId` should be the ID of an object returned by `getResolutions()`
-## `getPlaybackRates() : Promise<number[]>`
+### `getPlaybackRates() : Promise<number[]>`
Get the available playback rates, where `1` represents normal speed, `0.5` is half speed, `2` is double speed, etc.
-## `getPlaybackRates() : Promise<number>`
+### `getPlaybackRates() : Promise<number>`
Get the current playback rate. See `getPlaybackRates()` for more information.
-## `setPlaybackRate(rate: number) : Promise<void>`
+### `setPlaybackRate(rate: number) : Promise<void>`
Set the current playback rate. The passed rate should be a value as returned by `getPlaybackRates()`.
-## `setVolume(factor: number) : Promise<void>`
+### `setVolume(factor: number) : Promise<void>`
Set the playback volume. Value should be between `0` and `1`.
-## `getVolume(): Promise<number>`
+### `getVolume(): Promise<number>`
Get the playback volume. Returns a value between `0` and `1`.
-## `setCaption(id: string) : Promise<void>`
+### `setCaption(id: string) : Promise<void>`
Update current caption using the caption id.
-## `getCaptions(): Promise<{ id: string, label: string, src: string, mode: 'disabled' | 'showing' }>`
+### `getCaptions(): Promise<{ id: string, label: string, src: string, mode: 'disabled' | 'showing' }>`
Get video captions.
-## `playNextVideo(): Promise<void>`
+### `playNextVideo(): Promise<void>`
Play next video in playlist.
-## `playPreviousVideo(): Promise<void>`
+### `playPreviousVideo(): Promise<void>`
Play previous video in playlist.
-## `getCurrentPosition(): Promise<void>`
+### `getCurrentPosition(): Promise<void>`
Get current position in playlist (starts from 1).
-# Events
+## Embed events
You can subscribe to events by using `addEventListener()`. See above for details.
-## Event `playbackStatusUpdate`
+### Event `playbackStatusUpdate`
Fired every half second to provide the current status of playback.
The parameter of the callback will resemble:
The `volume` field contains the volume from `0` (silent) to `1` (full volume).
The `playbackState` can be `unstarted`, `playing`, `paused` or `ended`. More states may be added later.
-## Event `playbackStatusChange`
+### Event `playbackStatusChange`
Fired when playback transitions between states, such as `paused` and `playing`. More states may be added later.
-## Event `resolutionUpdate`
+### Event `resolutionUpdate`
Fired when the available resolutions have changed, or when the currently selected resolution has changed. Listener should call `getResolutions()` to get the updated information.
-## Event `volumeChange`
+### Event `volumeChange`
Fired when the player volume changed.
- [Go](https://framagit.org/framasoft/peertube/clients/go)
- [Kotlin](https://framagit.org/framasoft/peertube/clients/kotlin)
- See the [REST API quick start](https://docs.joinpeertube.org/api-rest-getting-started) for a few
+ See the [REST API quick start](https://docs.joinpeertube.org/api/rest-getting-started) for a few
examples of using the PeerTube API.
# Authentication
## Roles
Accounts are given permissions based on their role. There are three roles on
- PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/admin-managing-users?id=roles) for a detail of their permissions.
+ PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/admin/managing-users#roles) for a detail of their permissions.
# Errors
{
"detail": "Video not found",
- "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
+ "docs": "https://docs.joinpeertube.org/api/rest-reference.html#operation/getVideo",
"status": 404,
"title": "Not Found",
"type": "about:blank"
{
"detail": "Cannot get this video regarding follow constraints",
- "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
+ "docs": "https://docs.joinpeertube.org/api/rest-reference.html#operation/getVideo",
"status": 403,
"title": "Forbidden",
- "type": "https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/does_not_respect_follow_constraints"
+ "type": "https://docs.joinpeertube.org/api/rest-reference.html#section/Errors/does_not_respect_follow_constraints"
}
```
{
"detail": "Incorrect request parameters: id",
- "docs": "https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo",
+ "docs": "https://docs.joinpeertube.org/api/rest-reference.html#operation/getVideo",
"instance": "/api/v1/videos/9c9de5e8-0a1e-484a-b099-e80766180",
"invalid-params": {
"id": {
In addition, all routes serving ActivityPub are CORS-enabled for all origins.
externalDocs:
- url: https://docs.joinpeertube.org/api-rest-reference.html
+ url: https://docs.joinpeertube.org/api/rest-reference.html
tags:
- name: Register
description: |
information across its social graph by posting activities to actors' inbox
endpoints.
externalDocs:
- url: https://docs.joinpeertube.org/admin-following-instances?id=instances-follows
+ url: https://docs.joinpeertube.org/admin/following-instances#instances-follows
- name: Instance Redundancy
description: >
Redundancy is part of the inter-server solidarity that PeerTube fosters.
to the policy of video selection of your choice. Note that you have a similar functionality
to mirror individual videos, see [video mirroring](#tag/Video-Mirroring).
externalDocs:
- url: https://docs.joinpeertube.org/admin-following-instances?id=instances-redundancy
+ url: https://docs.joinpeertube.org/admin/following-instances#instances-redundancy
- name: Plugins
description: >
Managing plugins installed from a local path or from NPM, or search for new ones.
externalDocs:
- url: https://docs.joinpeertube.org/api-plugins
+ url: https://docs.joinpeertube.org/api/plugins
- name: Abuses
description: |
Abuses deal with reports of local or remote videos/comments/accounts alike.
Note that the __access token is valid for 1 day__ and is given
along with a __refresh token valid for 2 weeks__.
- [Generate]: https://docs.joinpeertube.org/api-rest-getting-started
+ [Generate]: https://docs.joinpeertube.org/api/rest-getting-started
type: oauth2
flows:
password:
#### Administrator password
-See the production guide ["Administrator" section](https://docs.joinpeertube.org/install-any-os?id=technologist-administrator)
+See the production guide ["Administrator" section](https://docs.joinpeertube.org/install/any-os#administrator)
#### What now?
-See the production guide ["What now" section](https://docs.joinpeertube.org/install-any-os?id=tada-what-now).
+See the production guide ["What now" section](https://docs.joinpeertube.org/install/any-os#what-now).
## Upgrade
}
```
-See the [plugin API reference](https://docs.joinpeertube.org/api-plugins) to see the complete helpers list.
+See the [plugin API reference](https://docs.joinpeertube.org/api/plugins) to see the complete helpers list.
### Client API (themes & plugins)
For example `#plugin-selector-login-form` could be used to hide the login form.
-See the complete list on https://docs.joinpeertube.org/api-plugins
+See the complete list on https://docs.joinpeertube.org/api/plugins
#### HTML placeholder elements
}
```
-See the complete list on https://docs.joinpeertube.org/api-plugins
+See the complete list on https://docs.joinpeertube.org/api/plugins
#### Add/remove left menu links
## Plugin & Theme hooks/helpers API
-See the dedicated documentation: https://docs.joinpeertube.org/api-plugins
+See the dedicated documentation: https://docs.joinpeertube.org/api/plugins
## Tips
Keys defined in `config/production.yaml` will override keys defined in `config/default.yaml`.
-**PeerTube does not support webserver host change**. Even though [PeerTube CLI can help you to switch hostname](https://docs.joinpeertube.org/maintain-tools?id=update-hostjs) there's no official support for that since it is a risky operation that might result in unforeseen errors.
+**PeerTube does not support webserver host change**. Even though [PeerTube CLI can help you to switch hostname](https://docs.joinpeertube.org/maintain/tools#update-host-js) there's no official support for that since it is a risky operation that might result in unforeseen errors.
### :truck: Webserver
# Go API client for {{appName}}
-This Python package is automatically generated from [PeerTube's REST API](https://docs.joinpeertube.org/api-rest-reference.html),
+This Python package is automatically generated from [PeerTube's REST API](https://docs.joinpeertube.org/api/rest-reference.html),
using the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: {{appVersion}}
# Python API client for {{appName}}
-This Python package is automatically generated from [PeerTube's REST API](https://docs.joinpeertube.org/api-rest-reference.html),
+This Python package is automatically generated from [PeerTube's REST API](https://docs.joinpeertube.org/api/rest-reference.html),
using the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: {{appVersion}}