ActivityPub-federated video streaming platform using P2P directly in your web browser
202
replace location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {
by location ~ ^(/static/(webseed|web-videos|streaming-playlists/hls)/private/)|^/download {
)update-host
scriptlocation = /api/v1/videos/upload-resumable {
has been replaced by location ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ {
in your nginx configurationstorage.web_videos
configuration value to use web-videos/
directory namestorage.web_videos
configuration value: directory on filesystem must be renamed from videos/
to web-videos/
to represent the value of storage.web_videos
generate-video-storyboard
job type in admin jobs listAs such, our main source of fundings are donations, usually from the French-speaking FOSS community.
Dear PeerTube admins, please help us spread the word that Framasoft is raising donations until the end of the year to fund and secure its 2024 budget, on our support page : https://soutenir.framasoft.org
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!
Remove NodeJS 16 support (see https://nodejs.org/fr/blog/announcements/nodejs16-eol):
production.yaml
that you use 127.0.0.1
instead of localhost
for listen.hostname
, database.hostname
and redis.hostname
as Node 18 favours IPv6 for localhost
resolutionRemove WebTorrent support in player:
Configuration key that you must update in your production.yaml
if not automatically done by your upgrade script:
storage.videos
must be renamed to storage.web_videos
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L151
storage.web_videos
must have the directory name to be changed from videos/
to web-videos/
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L151
videos/
to web-videos/
to represent the value of storage.web_videos
sudo -u peertube mv '/var/www/peertube/storage/videos/' '/var/www/peertube/storage/web-videos/'
mv '/path-to-docker-installation/docker-volume/data/videos/' '/path-to-docker-installation/docker-volume/data/web-videos/'
transcoding.webtorrent
must be renamed to transcoding.web_videos
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L522
object_storage.videos
must be renamed to object_storage.web_videos
. The value of object_storage.web_videos.bucket_name
doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L223
storage.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 by chocobozzz/peertube:production-bookworm
Env configuration that your must update if you use Docker:
PEERTUBE_TRANSCODING_WEBTORRENT_ENABLED
must be renamed to PEERTUBE_TRANSCODING_WEB_VIDEOS_ENABLED
PEERTUBE_OBJECT_STORAGE_VIDEOS_BUCKET_NAME
must be renamed to PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME
PEERTUBE_OBJECT_STORAGE_VIDEOS_PREFIX
must be renamed to PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX
PEERTUBE_OBJECT_STORAGE_VIDEOS_BASE_URL
must be renamed to PEERTUBE_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 = /api/v1/videos/upload-resumable {
must be updated to location ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ {
location ~ ^(/static/(webseed|streaming-playlists)/private/)|^/download {
must be updated to location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {
location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {
must be updated to location ~ ^/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
REST API breaking changes:
webtorrentEnabled
from user response (deprecated since 4.1 in favour of p2pEnabled
)avatar
and banner
fields from account/channel responses (deprecated since 4.2 in favour of avatars
and banners
)filter
query when listing videos (deprecated since 4.0 in favour of isLocal
and include
)/api/v1/videos/:id/webtorrent
video file routes in favour of /api/v1/videos/:id/web-videos
routeshasWebtorrentFiles
body video filter in favour of hasWebVideoFiles
when listing videoswebtorrent
transcodingType
in favour of web-video
in /api/v1/videos/{id}/transcoding
routecurrentTime
is now required to notify the user is watching the video using /api/v1/videos/{id}/views
(introduced in 4.2)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:
webtorrent
key in getFiles()
helper result. Use webVideo
insteadpeertube-import-videos
(also aliased as peertube import-videos
or peertube import
) scriptnpm run create-generate-storyboard-job
command: https://docs.joinpeertube.org/maintain/tools#generate-storyboard
plugins
, well-known
, feeds
, activity_pub
and client
endpoints)/videos/{id}/views
endpoint with many viewerssecurity.txt
well-known endpointupdate-host
script to fix out of memory errorreplaySettings.privacy
is not required anymoreERR_HTTP_HEADERS_SENT
crashLike
on Note
filter:api.video.get.result
hookPEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC
and PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE
in .env
production.yaml.new
that should merge your current production.yaml
with new keys defined by PeerTubeSince v6.0.0-rc.1
production.yaml.new
that should merge your current production.yaml
with new keys defined by PeerTubescripts/upgrade.sh
path. If you upgraded to v6.0.0-rc.1 you can find the upgrade script in dist/scripts/upgrade.sh
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!
Remove NodeJS 16 support (see https://nodejs.org/fr/blog/announcements/nodejs16-eol):
production.yaml
that you use 127.0.0.1
instead of localhost
for listen.hostname
, database.hostname
and redis.hostname
as Node 18 favours IPv6 for localhost
resolutionRemove WebTorrent support in player:
Configuration key that you must update in your production.yaml
if not automatically done by your upgrade script:
storage.videos
must be renamed to storage.web_videos
. The value of this configuration doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L151
transcoding.webtorrent
must be renamed to transcoding.web_videos
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L522
object_storage.videos
must be renamed to object_storage.web_videos
. The value of this object_storage.web_videos.bucket_name
doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L223
storage.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 by chocobozzz/peertube:production-bookworm
Env configuration that your must update if you use Docker:
PEERTUBE_TRANSCODING_WEBTORRENT_ENABLED
must be renamed to PEERTUBE_TRANSCODING_WEB_VIDEOS_ENABLED
PEERTUBE_OBJECT_STORAGE_VIDEOS_BUCKET_NAME
must be renamed to PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME
PEERTUBE_OBJECT_STORAGE_VIDEOS_PREFIX
must be renamed to PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX
PEERTUBE_OBJECT_STORAGE_VIDEOS_BASE_URL
must be renamed to PEERTUBE_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 to location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {
location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {
must be updated to location ~ ^/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
REST API breaking changes:
webtorrentEnabled
from user response (deprecated since 4.1 in favour of p2pEnabled
)avatar
and banner
fields from account/channel responses (deprecated since 4.2 in favour of avatars
and banners
)filter
query when listing videos (deprecated since 4.0 in favour of isLocal
and include
)/api/v1/videos/:id/webtorrent
video file routes in favour of /api/v1/videos/:id/web-videos
routeshasWebtorrentFiles
body video filter in favour of hasWebVideoFiles
when listing videoswebtorrent
transcodingType
in favour of web-video
in /api/v1/videos/{id}/transcoding
routecurrentTime
is now required to notify the user is watching the video using /api/v1/videos/{id}/views
(introduced in 4.2)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:
webtorrent
key in getFiles()
helper result. Use webVideo
insteadpeertube-import-videos
(also aliased as peertube import-videos
or peertube import
) scriptnpm run create-generate-storyboard-job
commandplugins
, well-known
, feeds
, activity_pub
and client
endpoints)/videos/{id}/views
endpoint with many viewerssecurity.txt
well-known endpointupdate-host
script to fix out of memory errorreplaySettings.privacy
is not required anymoreERR_HTTP_HEADERS_SENT
crashLike
on Note
filter:api.video.get.result
hookPEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC
and PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE
in .env
storage.tmp_persistent
directory in configuration file. You must configure it in your production.yaml: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L128
npm run create-transcoding-job
and npm run print-transcode-command
unmaintained scriptsconfig/production.yaml.new
file after the upgrade, which is the fusion between the new PeerTube configuration keys and your current production.yaml
. After a review you can replace your old config/production.yaml
with this new file so you don't have to add new keys manuallyls
option compatibility with FreeBSD #5785
filter:html.client.json-ld.result
hookregister
/unregister
plugin API when installing/uninstalling plugins using script/plugin
scripts (offline mode)@
characterstorage.tmp_persistent
directory in configuration file. You must configure it in your production.yaml: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L128
npm run create-transcoding-job
and npm run print-transcode-command
unmaintained scriptsconfig/production.yaml.new
file after the upgrade, which is the fusion between the new PeerTube configuration keys and your current production.yaml
. After a review you can replace your old config/production.yaml
with this new file so you don't have to add new keys manuallyls
option compatibility with FreeBSD #5785
filter:html.client.json-ld.result
hookregister
/unregister
plugin API when installing/uninstalling plugins using script/plugin
scripts (offline mode)@
characterproduction.yaml
or in the configuration page in the web adminx-powered-by
HTTP header in PeerTube response. Can be disabled in PeerTube configurationplaybackRate
in URL (watch page and embed) #5486
adminFlags
, videoQuota
and videoQuotaDaily
user attributesuserUpdater
hook function so external auth plugins can update the user on user login: https://docs.joinpeertube.org/contribute/plugins#add-external-auth-methods
filter:api.user.me.subscription-videos.list.params
& filter:api.user.me.subscription-videos.list.result
#5648
filter:activity-pub.activity.context.build.result
to update ActivityPub JSON-LD contextfilter:activity-pub.video.json-ld.build.result
to update Video
ActivityPub JSON-LD objectaction:activity-pub.remote-video.created
& action:activity-pub.remote-video.updated
to react on remote video creation/updateaction:video-edit.form.updated
fired every time the video upload/import/live/update form values changefilter:video-watch.video-plugin-metadata.result
to add custom video metadata in watch pageaction:video-edit.init
hook now contains a updateForm
attribute in options that you can use to update video upload/import/live/update form valuesgetServerListeningConfig
to get PeerTube listening configuration99+
instead of 99
when having more than 99
notificationsmailto
links500
on invalid short UUID parameter502
HTTP errors in client notifier;threadId
param in URL.m3u8
resolution playlists to fetch private mp4 video file #5677