IMPORTANT NOTES
We have many important notes in this release. We know it's a pain for sysadmin, but consider each one as a major step forward for PeerTube quality!
Sysadmins important notes
-
Remove NodeJS 16 support (see https://nodejs.org/fr/blog/announcements/nodejs16-eol):
- Please upgrade to NodeJS 18 before upgrading PeerTube
- If you use NodeSource repository, you may have to migrate to their new repository: https://github.com/nodesource/distributions/wiki/How-to-migrate-to-the-new-repository
- Check in
production.yaml
that you use127.0.0.1
instead oflocalhost
forlisten.hostname
,database.hostname
andredis.hostname
as Node 18 favours IPv6 forlocalhost
resolution
-
Remove WebTorrent support in player:
- "WebTorrent videos" are renamed to "Web Video". The video format is the same, we just stop to use P2P for these videos
- There is not "Auto" quality anymore for Web Videos. The viewer has to explicitly choose the video resolution
- We still use P2P with the HLS player, which is the recommended transcoding format since several versions
- See #5465 for more information
-
Configuration key that you must update in your
production.yaml
if not automatically done by your upgrade script:storage.videos
must be renamed tostorage.web_videos
. The value of this configuration doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L151transcoding.webtorrent
must be renamed totranscoding.web_videos
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L522object_storage.videos
must be renamed toobject_storage.web_videos
. The value of thisobject_storage.web_videos.bucket_name
doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L223storage.storyboards
must be added: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L157
-
PeerTube Docker image now uses
bookworm
.chocobozzz/peertube:production-bullseye
needs to be replaced bychocobozzz/peertube:production-bookworm
-
Env configuration that your must update if you use Docker:
PEERTUBE_TRANSCODING_WEBTORRENT_ENABLED
must be renamed toPEERTUBE_TRANSCODING_WEB_VIDEOS_ENABLED
PEERTUBE_OBJECT_STORAGE_VIDEOS_BUCKET_NAME
must be renamed toPEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME
PEERTUBE_OBJECT_STORAGE_VIDEOS_PREFIX
must be renamed toPEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX
PEERTUBE_OBJECT_STORAGE_VIDEOS_BASE_URL
must be renamed toPEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BASE_URL
-
You must update nginx configuration: https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube
location ~ ^/static/(thumbnails|avatars)/ {
block must be removedlocation ~ ^(/static/(webseed|streaming-playlists)/private/)|^/download {
must be updated tolocation ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {
location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {
must be updated tolocation ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ {
-
Tracing requires
--experimental-loader=@opentelemetry/instrumentation/hook.mjs
node option: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L263
Developers important notes
-
REST API breaking changes:
- Removed
webtorrentEnabled
from user response (deprecated since 4.1 in favour ofp2pEnabled
) - Removed
avatar
andbanner
fields from account/channel responses (deprecated since 4.2 in favour ofavatars
andbanners
) - Removed
filter
query when listing videos (deprecated since 4.0 in favour ofisLocal
andinclude
) - Deprecate
/api/v1/videos/:id/webtorrent
video file routes in favour of/api/v1/videos/:id/web-videos
routes - Deprecate
hasWebtorrentFiles
body video filter in favour ofhasWebVideoFiles
when listing videos - Deprecate
webtorrent
transcodingType
in favour ofweb-video
in/api/v1/videos/{id}/transcoding
route currentTime
is now required to notify the user is watching the video using/api/v1/videos/{id}/views
(introduced in 4.2)
- Removed
-
Static server paths breaking changes:
/static/webseed/...
is deprecated in favour of/static/web-videos/...
/object-storage-proxy/webseed/...
is deprecated in favour of/object-storage-proxy/web-videos/...
/static/thumbnails/...
is deprecated in favour of/static/lazy-thumbnails/...
-
Plugin API breaking changes:
- Deprecated
webtorrent
key ingetFiles()
helper result. UsewebVideo
instead
- Deprecated
CLI tools
- Removed unmaintained
peertube-import-videos
(also aliased aspeertube import-videos
orpeertube import
) script - PeerTube remote CLI is much more simpler to install using NPM: https://docs.joinpeertube.org/maintain/tools#remote-peertube-cli
Features
- 🎉 Add "Password protected" video privacy #5836 🎉
- A single password can be set using the web interface at video upload/import/update
- The REST API can store as many passwords as you want, allowing developers to use this feature to easily give or revoke access to a video on the fly
- 🎉 Add video storyboard support 🎉
- PeerTube automatically generates a storyboard on video upload/import
- Viewers can see the image around the targeted timecode when hovering the progress bar
- Storyboard of videos uploaded/imported before v6 can be generated by the admin using
npm run create-generate-storyboard-job
command
- 🎉 Add ability for users to replace their video file 🎉
- Has to be enabled by the PeerTube instance administrator
- The user can replace the video file in the Update Video page
- The re-upload date is displayed under the video player
- 🎉 Add video chapters support 🎉
- Add chapters in the upload/import/update video page or let PeerTube automatically imports them from the video container/youtube-dl
- Markers are displayed in the player progress bar to symbolize a chapter
- Chapter title is displayed when hovering/touching the player progress bar
- Better video player:
- More efficient as we don't rebuild the player every time the played video changes
- The player keeps the current player settings (playback speed, fullscreen...) when the played video changes
- Automatically adjust the player size to match video ratio
- Improve SEO and video link sharing:
- Use short video/channel/account URLs in sitemap and for canonical tags
- Add JSON-LD tag in embed page
- Embed page does not forbid indexation anymore: we use a canonical tag instead that targets the watch page
- Forbid indexation of remote videos, accounts and channels (instead of providing an invalid canonical tag)
- Truncate OpenGraph/Twitter card link description
- Fix client accessibility and keyboard navigation:
- Fix links in bootstrap alerts color
- Better input placeholder contrast
- Fix video miniature link label
- Add ability to disable hotkeys
- Improve table overall accessibility
- Wrap icons that can lead to an action inside buttons
- Fix left menu admin/my-library menu accessibility
- And many more improvements!
- Improve remote runner management:
- Add ability to remove runner jobs
- Add runner job state quick filter
- Merge registration tokens and runners tables in same page
- Add copy button to copy registration token
- Add ability for admins to force transcoding on a specific video even if it's in broken state (stuck in To Transcode for example)
- Add an option to sign federated fetches (ActivityPub based software such as Mastodon may require it to access content)
- Download video file directly from S3 using pre signed URLs
- Lazy download remote video thumbnails to reduce storage
- Improve recommended videos when the watched video doesn't have tags set
- Add more rate limits in configuration (
plugins
,well-known
,feeds
,activity_pub
andclient
endpoints) - Add ability to reset video Originally published at attribute
- Add ability for admins to set the default user channel name #6000
- Server now uses ESM modules
- Add worker threads Prometheus metrics
- Performance:
- Process unicast HTTP job in worker threads
- Sign ActivityPub requests in worker threads
- Optimize recommended videos HTTP request
- Optimize videos SQL queries when filtering on lives or tags
- Optimize
/videos/{id}/views
endpoint with many viewers - Add ability to disable PeerTube HTTP logs
Bug fixes
- Don't cache upload response if the video has been deleted
- Fix broken upgrade script when using custom database port
- Prevent duplicate runner names
- Avoid runner job update error
- Notify remote runners there are available jobs when a job is aborted/errored
- Fix updating P2P settings in left menu
- Fix 500 HTTP error on invalid short UUID conversion
- Don't display admin email in
security.txt
well-known endpoint - Optimize
update-host
script to fix out of memory error - Fix error log when using an unconventional distribution of FFmpeg with a non-standard version string #5917
- Fix live replay REST API breaking change:
replaySettings.privacy
is not required anymore - Fix broken live replay when updating replay privacy
- More robust About page when getting category from server
- Fix
ERR_HTTP_HEADERS_SENT
crash - Avoid illegal characters in torrent filename
- Avoid federation error log with remote
Like
onNote
- Fix atom feed with Science & Technology category
- Support empty value returned by
filter:api.video.get.result
hook - Prevent remote subscribe on accounts (not yet supported by PeerTube)
- Fix feed audio file mimetype
- Fix video quality on high video resolution/fps
- Fix disabling Object Storage ACL using Docker env
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC
andPEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE
in.env
- Correctly end live session on ffprobe error
- Fix video stats X axis with old videos
- Fix empty master playlist upload on s3