Releases: Chocobozzz/PeerTube
v6.1.0-rc.1
IMPORTANT NOTES
- You must update nginx configuration: https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube
- Add
location ~ ^/api/v1/users/[^/]+/imports/import-resumable$ {
block
- Add
- This release changes the way how PeerTube counts a video view:
- Views are taken into account after 10 seconds instead of 30 seconds (can be changed in YAML config)
- Views use a Session ID generated by the web browser instead of using the request IP (former behavior can be restored in YAML config)
- The goal of this change is to get closer to how other video platforms like Mux, Vimeo, or Instagram work
Admin config (non-exhaustive)
- Breaking changes:
- Rename
views.videos.ip_view_expiration
toviews.videos.view_expiration
- Rename
- YAML & web admin configs:
- Add
storyboards.enabled
config to disable storyboard generation - Remove
services.twitter.whitelisted
: Twitter/X doesn't seem to need this anymore. This means that PeerTube will try to inject the video player in Twitter/X by default instead of using a classic image/description
- Add
- YAML config only:
- Add
open_telemetry.metrics.playback_stats_interval
config to customize how often viewers send playback stats to server - Add
views.videos.watching_interval.{anonymous,users}
configs to change how often the web browser sends "is watching" information to the server - Add
stats.registration_requests.enabled
andstats.abuses.enabled
configs to hide instance registration/abuse requests public stats (average response time, total registration/abuse requests etc.) - Add
stats.total_moderators.enabled
andstats.total_admins.enabled
configs to hide total admins/moderators public stats - Add
object_storage.streaming_playlists.store_live_streams
config to not store live stream chunks into object storage (when enabled for streaming playlists) - Set
open_telemetry.metrics.http_request_duration.enabled
tofalse
by default to avoid performance issues on the Prometheus backend due to high metric cardinality
- Add
Maintenance
- Also generate
600x600
and1500x1500
avatar sizes - Also generate
600x100
banner size
Plugins/Themes/Embed API
- Add ability for plugins to create a client custom sub-page in
/my-account
page #6218 - Add access to
req.rawBody
for plugin routes #6300 - Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
filter:api.user.me.get.result
#6219
- Add
peertubeHelpers.videos.loadByIdOrUUIDWithFiles
helper #6302
Features
- 🎉 Implement user import/export 🎉 #6215
- This is not a migration tool: data (like channels or videos) is duplicated and not moved from the previous PeerTube instance
- Export:
- A ZIP is generated by PeerTube and an email is sent to the user when the archive is ready
- The archive file contains ActivityPub data for federation compatibility and custom JSON files used by PeerTube import. It also contains video/playlist thumbnail and channel/account avatar/banner files
- User can include video files in the archive
- Archive files can be stored in object storage
- Export can be disabled by the admin. They can also set an expiration time to automatically delete archive files and limit the export file size depending on the user's video quota
- Import:
- Update account metadata (display name, description...)
- Update user settings (video autoplay policy, notification settings...)
- Create entries in the mute list
- Add watched videos in user's videos history
Add likes/dislikes - Send a follow request to imported subscriptions
- Create channels, playlists and videos (if the video files are included in the archive)
- Admins can disable user import
- 🎉 Add ability to keep the original video file 🎉 #6157
- Can be stored in object storage
- Uploader can download the original file
- The original file is used in the user export archive (instead of the max quality file)
- Add Turkish language support in client
- Add ability for admins to set a banner and an avatar to the instance. The banner is used in About instance/Login/Register an account pages. Both the banner and the avatar can be used on the instance homepage using
<peertube-instance-banner>
/<peertube-instance-avatar>
tag or on external websites/applications like the JoinPeerTube website - Add ability for uploaders to download and add a video to a playlist on the My videos page using the dropdown button #6008
- Video views statistics:
- Count a view after 10 seconds and use a web browser session id to identify a viewer (see IMPORTANT CHANGES section)
- Add information about the location of the viewer subdivision/region
- More accurate retention stats where PeerTube doesn't take into account empty views anymore
- UI/UX:
- Automatically filter on Local videos in admin
- Add ability to sort videos by file size
- Add total video file size column in admin users list
- Improve admin runner jobs list by using badges with same colors for type/runner and add processed/finished columns
- Add Recommended tags to recommended PeerTube plugins/themes
- Improve plugins/themes default trending sort
- Trim username on login
- Warn if "Forgot password" email contains uppercase
- Use more precise buttons label to save changes in My account settings
- Add icon to owners/moderators only options
- Always use short UUIDs instead of full UUIDs in client to prevent URL confusion
- Add average admins/moderators response time in Request an account page
- Add color to registration/abuse state icon
- Player:
- Add an enable/disable subtitle button to the control bar
- Faster auto-resizing of the player when the video has a custom aspect ratio (only for videos uploaded on PeerTube >= 6.1)
- Use video aspect ratio for responsive embeds (only for videos uploaded on PeerTube >= 6.1)
- Performance:
- Optimize watching (
/api/v1/videos/:videoId/views
) endpoint - Reduce
ffprobe
calls when not needed resulting in faster live stream transcoding startup and CPU/IO reduction during video upload/import
- Optimize watching (
- Federation
- Introduce a new way to federate
Views
events in the federation. See the commit details for more information - Implements FEP-2677 to identify the
Application
Actor
- Add Lemmy
postingRestrictedToMods
information to channels AP objects
- Introduce a new way to federate
- Improve generated video thumbnail quality
- Add notification when a subscribed video channel is live streaming
- Support
itunes:owner
in podcast feed
Bug fixes
- Add stripes to square video thumbnails too (like we do for portrait videos)
- Prevent channels from being displayed multiple times on the My channels page
- Stricter video timestamp "linkification"
- Correctly fix downloading video files from object storage with some video names
- Fix broken RSS feed in some (rare) cases
- Fix local jobs count/pagination with Waiting jobs
- Banned users cannot live stream anymore
- Correctly escape HTML entities in meta tags #6206
- Fix broken account channels page with high
video_channels.max_per_user
config - Add ability for moderators to approve/reject user registrations
- Do not display empty notification settings group
- Correctly fix WebTorrent video import crash
- Fix video channel synchronization crash on remote channels/playlists that contain hidden videos (unavailable, deleted etc.)
- Ensure the filename doesn't contain
/
character when downloading a video - Fix Google Search SEO (with
Video is not the main content of the page
error) - Remove password autocomplete in embed which causes issues when the parent page has a password input and the user uses the web browser's password autofill feature
- Don't submit the login form on forgot my password keyboard click
- Fix storyboard generation with some videos
- Fix ffmpeg encoder after custom plugin transcoding profile deletion
- Fix navigating from one channel related page (playlist, videos...) to another one
- More robust live stream transcoded by a remote runner
- Fix first video in playlist that doesn't start at "starts at"
- Fix embed HTML code for videos/playlists that have passwords
- Display external account/channel playlists if user is allowed to escape the federation
- Fix view endpoint crash on geoip update failure
- Fix setting video subtitle from URL query
- Fix selecting "Display all languages/categories/licences" in videos search resulting in an empty search
v6.0.4
IMPORTANT NOTES
- If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
- If you upgrade from PeerTube v6.0.0, please follow v6.0.1 IMPORTANT NOTES
SECURITY
- Important: Prevent XSS injection in embed. Thanks Syst3m0ver and aramido GmbH!
v6.0.3
IMPORTANT NOTES
- If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
- If you upgrade from PeerTube v6.0.0, please follow v6.0.1 IMPORTANT NOTES
SECURITY
- Prevent nginx from serving private/internal/password protected HLS video static files
- You must update your nginx configuration like in this commit (line
202
replacelocation ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {
bylocation ~ ^(/static/(webseed|web-videos|streaming-playlists/hls)/private/)|^/download {
)
- You must update your nginx configuration like in this commit (line
Bug fixes
- Fix HTML meta tags with attributes that contain quotes
- Fix time parsing resulting in broken video start time in some cases
- Fix WebTorrent video import crash
- Reload Discover page on logout
- Fix privacy error when updating a live, even if the privacy has not changed
- Fix invalid remote live state change notification that causes the player to reload
- Don't apply big play button skin to settings menu
- Fix downloading video files from object storage with some video names (that include emojis, quotes etc)
- Fix thumbnail generation when ffmpeg cannot seek the input
- Fix theme colors on stats page
- Fix input mask (used for chapters, playlist timecodes...) with 10h+ videos
- Fix chapter position width consistency
- Fix player ratio with audio only videos
- Also update video playlist URLs when using
update-host
script - Fix upload/import/update of videos that contain multiple chapters with the same timecode
v6.0.2
IMPORTANT NOTES
- If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
- If you upgrade from PeerTube v6.0.0, please follow v6.0.1 IMPORTANT NOTES
Bug fixes
- Fix upgrade.sh when Peertube is installed outside the standard path #6064
- Fix importing videos with too long chapter name
- Don't create chapters from description if there is only one
- Ensure user is owned by the auth plugin before updating its attributes
- Improve channels and accounts SEO by fixing structured JSON-LD data and canonical URLs
- Originally published and reupload date format consistency in watch page
- Fix cpu count when cpu info not available
- Fix embed when waiting for a live
- Fix updating already started live if live attributes don't change
- Fix displaying many countries in video stats
v6.0.1
IMPORTANT NOTES
- If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
- We've made some modifications in v6.0.0 IMPORTANT NOTES, so if you upgrade from PeerTube v6.0.0:
- Ensure
location = /api/v1/videos/upload-resumable {
has been replaced bylocation ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ {
in your nginx configuration - Ensure you updated
storage.web_videos
configuration value to useweb-videos/
directory name - Ensure your directory name on filesystem is the same as
storage.web_videos
configuration value: directory on filesystem must be renamed fromvideos/
toweb-videos/
to represent the value ofstorage.web_videos
- Ensure
Bug fixes
- Fix CPU going to 100% on odd cpu count
- Increase storyboard generation job TTL
- Add missing
generate-video-storyboard
job type in admin jobs list - Regenerate storyboard after studio job
v6.0.0
PeerTube is developed by a not-for profit: Framasoft
As 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
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 no "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
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L151- Configuration value of
storage.web_videos
must have the directory name to be changed fromvideos/
toweb-videos/
: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L151 - Directory on filesystem must be renamed from
videos/
toweb-videos/
to represent the value ofstorage.web_videos
- Classic installation:
sudo -u peertube mv '/var/www/peertube/storage/videos/' '/var/www/peertube/storage/web-videos/'
- Docker installation:
mv '/path-to-docker-installation/docker-volume/data/videos/' '/path-to-docker-installation/docker-volume/data/web-videos/'
- Classic installation:
transcoding.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 ofobject_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 = /api/v1/videos/upload-resumable {
must be updated tolocation ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ {
location ~ ^(/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
- Support moving video files from object storage to filesystem: https://docs.joinpeertube.org/maintain/tools#move-video-files-from-object-storage-to-filesystem
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
- Developers that use PeerTube embeds can set the video password using the embed API
- 🎉 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: https://docs.joinpeertube.org/maintain/tools#generate-storyboard
- 🎉 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 (`...
v6.0.0-rc.2
Since v6.0.0-rc.1
Bug fixes
- Correctly generate
production.yaml.new
that should merge your currentproduction.yaml
with new keys defined by PeerTube - Don't break
scripts/upgrade.sh
path. If you upgraded to v6.0.0-rc.1 you can find the upgrade script indist/scripts/upgrade.sh
- Fix notification scrolling
- Add ability to customize frames to analyze in configuration (fix too long upload on low-power hardware)
- Fix player ratio on mobile with portrait videos
- Update page title and description on video change
- Adapt storyboard sprite ratio
- Fix card font color theme
- Optimize homepage videos query
- Respect "transcode original resolution" setting when using remote runners
- Prevent player mobile buttons flickering
v6.0.0-rc.1
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 ...
v5.2.1
Bug fixes
- Fix loading spinner displayed forever on Chrome
- Fix broken replay with long live name
- Fix fps transcoding on remote runners
- Fix terms/code of conduct link toggle
v5.2.0
IMPORTANT NOTES
- Important Remove NodeJS 14 support
- Important You must update your nginx configuration to support remote runners: https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube#L101
- Add
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 - PeerTube requires Docker Compose >= v2 for Docker compose installation
Maintenance
- Remove
npm run create-transcoding-job
andnpm run print-transcode-command
unmaintained scripts - Add Redis sentinel support #5593
- Improve upgrade script (used when you will upgrade from PeerTube 5.2 to its next version) for classic installation:
- Automatically generate a
config/production.yaml.new
file after the upgrade, which is the fusion between the new PeerTube configuration keys and your currentproduction.yaml
. After a review you can replace your oldconfig/production.yaml
with this new file so you don't have to add new keys manually - Add
ls
option compatibility with FreeBSD #5785
- Automatically generate a
Docker
- Make database name configurable using env variable #5734
Plugins/Themes/Embed API
- Add
filter:html.client.json-ld.result
hook
Features
- 🎉 Implement remote transcoding for VOD videos, Live streams and Studio editions 🎉 #5769
- If enabled, remote PeerTube runners can process these high CPU jobs
- Admin documentation: https://docs.joinpeertube.org/admin/remote-runners
- PeerTube runner CLI documentation: https://docs.joinpeertube.org/maintain/tools#peertube-runner
- Demonstration video: https://peertube2.cpy.re/w/oJwHHYwt4oKjKhLNh2diAY
- Architecture documentation: https://docs.joinpeertube.org/contribute/architecture#remote-vod-live-transcoding
- Add Podcast RSS feed support: #5487
- Add ability to set custom privacy for live replays #5692
- Render images of markdown fields in About page #5732
- Admin can disable user video history by default #5728
- Improve global accessibility
Bug fixes
- Fix live stream object storage sync resulting in broken playback on iOS after a few minutes
- Correctly proxify HTTP 206 content-range header from object storage #5703
- Filter out already watched videos from recommended videos #5739
- Prevent exception when HTTP headers are already sent
- Fix remote instance following/followers links in about page
- Prevent error when updating a running live stream if the privacy hasn't changed
- Prevent crash on plugin websocket error
- Don't call
register
/unregister
plugin API when installing/uninstalling plugins usingscript/plugin
scripts (offline mode) - Fix error on missing plugin CSS file at PeerTube startup #5746
- Prevent "invalid end watch section" server log warnings
- Support remote subscribe with a handle starting with a
@
character - Actor preferred username (account/channel handle) is now case insensitive
- Fix RTL layout inconsistencies
- Prevent user video notification when the subscription is still in Pending state
- Correctly remove Pending subscription
- Fix PeerTube subtitles import
- Fix languages alphabetical order
- Fix registration notification error
- Correctly unload plugin paths
- Fix custom default route in instance logo link
- Fix video channels quick filter overflow