### 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?id=server-code).
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?id=client-code).
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?id=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?id=unit-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?id=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?id=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?id=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?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
* 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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=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?id=publish-a-live-in-peertube-gt-v3" 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?id=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?id=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?id=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?id=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?id=typescript) **Typescript** section of the doc.
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?id=remote-tools
- [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?id=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?id=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?id=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?id=technologist-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?id=tada-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?id=update-hostjs) 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}}