Releases: Chocobozzz/PeerTube
Releases · Chocobozzz/PeerTube
v4.2.0
IMPORTANT NOTES
- Important You need to execute manually a migration script (can be executed after your upgrade, while your PeerTube instance is running) to generate smaller avatar miniatures:
- 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
- Classic installation:
- 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
- REST API:
PUT /api/v1/videos/{id}/watching
is deprecated, usePOST /api/v1/videos/videos/{id}/views
instead: https://docs.joinpeertube.org/api-rest-reference.html#operation/addView
Maintenance
- Add
client.videos.resumable_upload.max_chunk_size
config option #4857 - Add
object_storage.upload_acl
config option #4861 - Add ability to set RTMP/RTMPS listening hostname using
rtmp.hostname
/rtmps.hostname
and public RTMP/RTMPS hostname usingrtmp.public_hostname
/rtmps.public_hostname
- Removed
best
default trending algorithm. It is automatically used if usinghot
algorithm with a logged in user
Docker
- Use NodeJS 16 in PeerTube docker image: administrators may have to reinstall PeerTube plugins that use native NodeJS dependencies
- Support readonly tmp directory (if you want to use
tmp
directory as a volume)
Plugins/Themes/Embed API
- Theme:
- Add
--mainBackgroundHoverColor
and--greySecondaryBackgroundColor
CSS variables
- Add
- Add server plugin hooks
filter:api.video-playlist.videos.list.params
andfilter:api.video-playlist.videos.list.result
- Support
getSettings()
,isLoggedIn()
andgetAuthHeader()
client plugin helpers in embed - Player URL query parameters:
- Support
controlBar=0
to hide player control bar. See the documentation for more information
- Support
Features
- 🎉 Add video edition from the PeerTube web interface 🎉
- Cut the video (set a new start/new end)
- Add an intro at the beginning and/or an outro at the end of the video
- Add an icon/watermark in the top right corner of the video
- PeerTube will automatically transcode the new video and replace the original one
- ✨ Funded by "la Direction du numérique du Ministère de l'Éducation Nationale, de la Jeunesse et des Sports" ✨
- 🎉 Add advanced statistics of a specific video 🎉
- Provide Average watch time, Total watch time and Peak viewers video statistics
- Display total viewers, aggregated watch time and audience retention in interactive time series graphs
- Display viewer countries in bar chart if not disabled by admins
- ✨ Funded by HowlRound Theatre Commons at Emerson College ✨
- 🎉 Add latency setting support for lives (small latency without P2P or high latency to increase P2P ratio) 🎉
- 🎉 Add ability to save a replay of every streaming session of a permanent live 🎉
- ✨ Funded by HowlRound Theatre Commons at Emerson College ✨
- Add simple subtitle edition from video captions tab in video edition form #4666
- Display live streaming sessions details in permanent live information modal
- Add ability to also mute users when banning them #4660
- UI improvements:
- Add Persian locale support
- Add previous page redirection support on external auth login
- Support proxy for object storage #4973
- Add "Only display embed URL" checkbox in share modal
Bug fixes
- Video uploads fixes:
- Fix invalid token during long uploads
- Fix upload on server with a slow disk
- Fix upload of some videos with unknown duration (
.m2v
for example) - Fix 2 hours limit on uploads
- Fix upload page title #4904
- Fix video upload with some characters in filename
- Fix
.ac3
and.mts
upload on some OS
- Fix avatar with account username starting with a number
- Fix client html cache on theme update
- Disallow unlisted video indexation
- Allow oembed to fetch unlisted videos
- Stop removing remote Mastodon rates
- Fix email links displayed twice in text version
- Fix user quota inconsistencies in admin when users use lives
- Fix admin instance following list when sorting by Redundancy allowed
- More reliable object storage upload when using multipart #4903
- Correctly handle HTTP signature draft 11 requests (without
date
header but with(created)
) - Fix
ctrl + 0-9
player hotkeys conflicting with web browser hotkeys
v4.2.0-rc.1
IMPORTANT NOTES
- Important You need to execute manually a migration script (can be executed after your upgrade, while your PeerTube instance is running) to generate smaller avatar miniatures:
- 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
- Classic installation:
- 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
- REST API:
PUT /api/v1/videos/{id}/watching
is deprecated, usePOST /api/v1/videos/videos/{id}/views
instead: https://docs.joinpeertube.org/api-rest-reference.html#operation/addView
Maintenance
- Add
client.videos.resumable_upload.max_chunk_size
config option #4857 - Add
object_storage.upload_acl
config option #4861 - Add ability to set RTMP/RTMPS listening hostname using
rtmp.hostname
/rtmps.hostname
and public RTMP/RTMPS hostname usingrtmp.public_hostname
/rtmps.public_hostname
Docker
- Use NodeJS 16 in PeerTube docker image: administrators may have to reinstall PeerTube plugins that use native NodeJS dependencies
- Support readonly tmp directory (if you want to use
tmp
directory as a volume)
Plugins/Themes/Embed API
- Theme:
- Add
--mainBackgroundHoverColor
and--greySecondaryBackgroundColor
CSS variables
- Add
- Add server plugin hooks
filter:api.video-playlist.videos.list.params
andfilter:api.video-playlist.videos.list.result
- Support
getSettings()
,isLoggedIn()
andgetAuthHeader()
client plugin helpers in embed - Player URL query parameters:
- Support
controlBar=0
to hide player control bar. See the documentation for more information
- Support
Features
- 🎉 Add video edition from the PeerTube web interface 🎉
- Cut the video (set a new start/new end)
- Add an intro at the beginning and/or an outro at the end of the video
- Add an icon/watermark in the top right corner of the video
- PeerTube will automatically transcode the new video and replace the original one
- ✨ Funded by "la Direction du numérique du Ministère de l'Éducation Nationale, de la Jeunesse et des Sports" ✨
- 🎉 Add advanced statistics of a specific video 🎉
- Provide Average watch time, Total watch time and Peak viewers video statistics
- Display total viewers, aggregated watch time and audience retention in interactive time series graphs
- Display viewer countries in bar chart if not disabled by admins
- ✨ Funded by HowlRound Theatre Commons at Emerson College ✨
- 🎉 Add latency setting support for lives (small latency without P2P or high latency to increase P2P ratio) 🎉
- 🎉 Add ability to save a replay of every streaming session of a permanent live 🎉
- ✨ Funded by HowlRound Theatre Commons at Emerson College ✨
- Add simple subtitle edition from video captions tab in video edition form #4666
- Display live streaming sessions details in permanent live information modal
- Add ability to also mute users when banning them #4660
- UI improvements:
- Add Persian locale support
- Add previous page redirection support on external auth login
- Support proxy for object storage #4973
- Add "Only display embed URL" checkbox in share modal
Bug fixes
- Video uploads fixes:
- Fix invalid token during long uploads
- Fix upload on server with a slow disk
- Fix upload of some videos with unknown duration (
.m2v
for example) - Fix 2 hours limit on uploads
- Fix upload page title #4904
- Fix video upload with some characters in filename
- Fix
.ac3
and.mts
upload on some OS
- Fix avatar with account username starting with a number
- Fix client html cache on theme update
- Disallow unlisted video indexation
- Allow oembed to fetch unlisted videos
- Stop removing remote Mastodon rates
- Fix email links displayed twice in text version
- Fix user quota inconsistencies in admin when users use lives
- Fix admin instance following list when sorting by Redundancy allowed
- More reliable object storage upload when using multipart #4903
- Correctly handle HTTP signature draft 11 requests (without
date
header but with(created)
) - Fix
ctrl + 0-9
player hotkeys conflicting with web browser hotkeys
v4.1.1
Security
- Strip EXIF data when processing images
Docker
- Fix videos import by installing python 3
- Install
git
package (may be needed to install some plugins)
Bug fixes
- Fix error when updating a live
- Fix performance regression when rendering HTML and feeds
- Fix player stuck by HTTP request error
v4.1.0
IMPORTANT NOTES
- PeerTube does not support NodeJS 12 anymore
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
- 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 - Add
#plugin-selector-menu-user-dropdown-language-item
in menu #4597
- Add
- Add client plugin hooks
filter:login.instance-about-plugin-panels.create.result
andfilter:signup.instance-about-plugin-panels.create.result
to add custom instance information in login/signup pages
- Add server plugin hooks
filter:api.server.stats.get.result
filter:api.video.upload.video-attribute.result
,filter:api.video.import-url.video-attribute.result
,filter:api.video.import-torrent.video-attribute.result
,filter:api.video.live.video-attribute.result
when creating a video objectaction:api.video-caption.created
andaction:api.video-caption.deleted
#4650
- Server helpers
videos.getFiles(videoId: number)
to list video files (webtorrent, hls and thumbnail files)videos.ffprobe(path: string)
to getffprobe
JSON result
- Publish @peertube/peertube-type NPM module that can be used by TypeScript plugins
- Add ability to disable P2P in embed using
p2p
query parameter in embed URL
Maintenance
- REST API
- Deprecate
webTorrentEnabled
in favour ofp2pEnabled
for user model - Add ability to pause/resume the job queue
- Deprecate
- Also publish stable releases on https://builds.joinpeertube.org/release
- Add ability for admins to specify
youtube-dl
/yt-dlp
python binary path #4706 - PeerTube server startup is faster
Security
- Check video privacy before listing or accepting captions, comments or rates
- Check video import target URL does not resolve to internal IP. This technique has some limits so if you have private HTTP services on your server/network publicly accessible, we recommend to use a proxy or a dedicated interface for PeerTube
CLI tools
- Also remove HLS files when using
prune-storage
script - Support
--plugin-version
option when installing a plugin #4599
Features
- 🎉 Player improvements
- Increase control bar size on desktop & mobile
- Add overlay on tap to easily play/pause the video on mobile
- Automatically move to landscape when full screen a video on mobile
- Add fast forward/rewind on double tap on mobile
- Cleanup, fix and add player hotkeys
- Keep control bar displayed when settings panel is opened
- Faster hiding transition for control bar
- Stop confusing peer indication in control bar when p2p is disabled
- Try to fast forward video on HLS decode error
- 🎉 More admin customizations
- Specify default Publish video attributes (download enabled, comments enabled, privacy, licence)
- Choose to automatically redirect users on the external auth platform on login button click
- Set default P2P policy for the player
- Search improvements
- Add Result type filter in search (videos, channels or playlists)
- Display only video results when searching on video metadata (tags, categories etc)
- Video imports
- Users can cancel and delete video imports
- Add ability to filter video imports by target URL
- Add ability for users to delete individual elements in videos history
- Show date and views counter in playlist element miniature #4396
- Add norsk locale support
- Check mute status and display mute badges in channel and account pages
- Add No linguistic content video language option #4631
- Don't send notifications to admins/moderators if an admin/moderator reported an abuse
- Add ability for moderators/admins to edit any channel #4608
- Add a refresh button to admin videos overview page #4753
- Add Official badge to official plugins in admin plugin pages
- Automatically clean unavailable remote ActivityPub resources
- Media RSS feed displays video file as default enclosure instead of torrent
- Use white background for PeerTube icons (instead of transparency)
- Show private badge for private videos in playlists #4767
Bug fixes
- Fix weird
require
bug on plugin upgrade - Fix plugin storage return value when storing a JSON array #4640
- Decrease delay to cleanup resumable uploads (to 1 hour)
- Update torrent metadata on video update
- Fix HLS player with videos that have stream duration inconsistencies
- Fix player crash if the video contains only audio resolution
- Fix ffmpeg crash when using a transcoding plugin encoder that doesn't support PeerTube B-frame strategy
- Fix transcoding failure for audio only uploads
- Don't run HLS transcoding when running manually WebTorrent transcoding from the admin
- Don't run audio transcoding with video only file
- Correctly send new HLS files after re-transcoding to object storage
- Fix stuck state when move transcoding job failed
- Correctly display internal videos of internal subscriptions
- Correctly display all videos history to users
- Fix video upload with big preview file
- Fix description/comment timestamp click of external video
- Add missing
mediaType
information to AP objects - Fix abuse list crash on deleted reporter account
- Convert markdown to HTML/plain text for RSS feeds
- Search on tags is now case insensitive
- Forbid comments/captions listing of private/internal videos
- Prevent video import on non unicast ips
- Improve markdown to plain text converter, especially when handling lists
- Fix scheduled publication on upload
- Fix youtube-dl max buffer size error
- Hide remote subscribe if user is logged in
- Fix video file
storage
column inconsistency
v4.1.0-rc.1
IMPORTANT NOTES
- NodeJS 12 support is deprecated and will be removed in PeerTube 4.2
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
- 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 - Add
#plugin-selector-menu-user-dropdown-language-item
in menu #4597
- Add
- Add client plugin hooks
filter:login.instance-about-plugin-panels.create.result
andfilter:signup.instance-about-plugin-panels.create.result
to add custom instance information in login/signup pages
- Add server plugin hooks
filter:api.server.stats.get.result
filter:api.video.upload.video-attribute.result
,filter:api.video.import-url.video-attribute.result
,filter:api.video.import-torrent.video-attribute.result
,filter:api.video.live.video-attribute.result
when creating a video objectaction:api.video-caption.created
andaction:api.video-caption.deleted
#4650
- Server helpers
videos.getFiles(videoId: number)
to list video files (webtorrent, hls and thumbnail files)videos.ffprobe(path: string)
to getffprobe
JSON result
- Publish @peertube/peertube-type NPM module that can be used by TypeScript plugins
- Add ability to disable P2P in embed using
p2p
query parameter in embed URL
Maintenance
- REST API
- Deprecate
webTorrentEnabled
in favour ofp2pEnabled
for user model - Add ability to pause/resume the job queue
- Deprecate
- Also publish stable releases on https://builds.joinpeertube.org/release
- Add ability for admins to specify
youtube-dl
/yt-dlp
python binary path #4706 - PeerTube server startup is faster
CLI tools
- Also remove HLS files when using
prune-storage
script - Support
--plugin-version
option when installing a plugin #4599
Features
- 🎉 Player improvements
- Increase control bar size on desktop & mobile
- Add overlay on tap to easily play/pause the video on mobile
- Automatically move to landscape when full screen a video on mobile
- Add fast forward/rewind on double tap on mobile
- Cleanup, fix and add player hotkeys
- Keep control bar displayed when settings panel is opened
- Faster hiding transition for control bar
- Stop confusing peer indication in control bar when p2p is disabled
- Try to fast forward video on HLS decode error
- 🎉 More admin customizations
- Specify default Publish video attributes (download enabled, comments enabled, privacy, licence)
- Choose to automatically redirect users on the external auth platform on login button click
- Set default P2P policy for the player
- Search improvements
- Add Result type filter in search (videos, channels or playlists)
- Display only video results when searching on video metadata (tags, categories etc)
- Video imports
- Users can cancel and delete video imports
- Add ability to filter video imports by target URL
- Add ability for users to delete individual elements in videos history
- Show date and views counter in playlist element miniature #4396
- Add norsk locale support
- Check mute status and display mute badges in channel and account pages
- Add No linguistic content video language option #4631
- Don't send notifications to admins/moderators if an admin/moderator reported an abuse
- Add ability for moderators/admins to edit any channel #4608
- Add a refresh button to admin videos overview page #4753
- Add Official badge to official plugins in admin plugin pages
- Automatically clean unavailable remote ActivityPub resources
- Media RSS feed displays video file as default enclosure instead of torrent
- Use white background for PeerTube icons (instead of transparency)
- Show private badge for private videos in playlists #4767
Bug fixes
- Fix weird
require
bug on plugin upgrade - Fix plugin storage return value when storing a JSON array #4640
- Decrease delay to cleanup resumable uploads (to 1 hour)
- Update torrent metadata on video update
- Fix HLS player with videos that have stream duration inconsistencies
- Fix player crash if the video contains only audio resolution
- Fix ffmpeg crash when using a transcoding plugin encoder that doesn't support PeerTube B-frame strategy
- Fix transcoding failure for audio only uploads
- Don't run HLS transcoding when running manually WebTorrent transcoding from the admin
- Don't run audio transcoding with video only file
- Correctly send new HLS files after re-transcoding to object storage
- Fix stuck state when move transcoding job failed
- Correctly display internal videos of internal subscriptions
- Correctly display all videos history to users
- Fix video upload with big preview file
- Fix description/comment timestamp click of external video
- Add missing
mediaType
information to AP objects - Fix abuse list crash on deleted reporter account
- Convert markdown to HTML/plain text for RSS feeds
- Search on tags is now case insensitive
- Forbid comments/captions listing of private/internal videos
- Prevent video import on non unicast ips
- Improve markdown to plain text converter, especially when handling lists
- Fix scheduled publication on upload
v4.0.0
IMPORTANT NOTES
- Important You need to execute manually a migration script (can be executed after your upgrade, while your PeerTube instance is running) to migrate HLS files name:
- 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.0.js
- Docker installation:
cd /var/www/peertube-docker && docker-compose exec -u peertube peertube node dist/scripts/migrations/peertube-4.0.js
- Classic installation:
- Important We fixed configuration inconsistencies and added some keys. You must change/add them in your production.yaml
log.rotation.maxFileSize
becomeslog.rotation.max_file_size
log.rotation.maxFiles
becomeslog.rotation.max_files
log.anonymizeIP
becomeslog.anonymize_ip
- Removed
import.http.proxy
configuration: useHTTP_PROXY
andHTTPS_PROXY
environment variables instead - Added
storage.bin
in configuration file
- REST API: Deprecate
filter
videos list query parameter in favour ofisLocal
andinclude
- PeerTube is compatible with ffmpeg 4.4.1 but is not compatible with ffmpeg 4.4.0
- Removed deprecated
/static/torrents
route - We changed the live
views
andviewers
system, that could lead to federation inconsistencies with instances < 4.0.0 for these specific counters
Maintenance
- Add ability for sysadmins to disable web configuration edition #4315
- YoutubeDL:
- Support yt-dlp (recommended due to unmaintained youtube-dl)
- Add ability to set release URL in configuration
- Add ability to override
default-playlist.png
,default-avatar-account.png
,default-avatar-video-channel.png
usingstorage.client_overrides
configuration #4392
Plugins/Themes/Embed API
Documentation: https://docs.joinpeertube.org/api-plugins
- Add client plugin hooks:
filter:api.video-watch.video-playlist-elements.get.params
andfilter:api.video-watch.video-playlist-elements.get.result
#4387
- Introduce plugin id selectors: https://docs.joinpeertube.org/contribute-plugins?id=plugin-selector-on-html-elements
- Add
#plugin-selector-login-form
to login form
- Add
Docker
- We now use Bullseye for Docker images, so the image name changed:
production-buster
becomesproduction-bullseye
v4.x.x-buster
becomesv4.x.x-bullseye
- Allow configuration to be static/readonly #4315
CLI tools
- Add create-move-video-storage-jobs script to move local video files in object storage #4481
- Removed
peertube-repl
andpeertube-watch
scripts - Apply import interval only when reasonable #4552
Features
- 🎉 Add videos overview in admin
- List all available videos on the instance
- Display video information summary: file type, file size, privacy, state, embed...
- Many filters available: videos with/without HLS/WebTorrent, remote/local videos, exclude muted accounts...
- Run WebTorrent/HLS transcoding
- Remove WebTorrent/HLS video files
- Bulk actions: remove, block, run transcoding, delete video files...
- Correctly generate thumbnails/previews for portrait videos
- Keep input image ratio for banners, avatars, thumbnails...
- Support 144p transcoding #4492
- Support RTMPS
- UI:
- Live:
- Specify live type at first step
- Improve Permanent live label using Recurring live expression
- Clearer moderation dropdowns using section titles
- Improve admin tables responsive
- Add warning when trying to share a private playlist/video #4469
- Change Sort by views to Sort by recent views #4483
- Add Next video to be played in watch page if autoplay is enabled #4497
- Add embed preview in share modal
- Add user username in modal when deleting a user
- Add video name in modal when blocking/removing a video
- Improve notification settings organization
- Live:
- Video/live views:
- Add ability for admins to change local buffer update interval
- Add ability for admins to change view expiration for a specific IP
- Introduce
viewers
attribute for live videos and reduce delay to seeviewers
update in the interface - Take into accounts
views
created during the live when saving replay
- Add markdown support for playlist description #4489
- Improve video playback when having invalid redundancy URLs
- Load video resolutions before video starts in player settings menu
- Optimize federation:
- Correctly set HTTP request timeout
- Process slow/bad targets in a dedicated queue
- Optimize ActivityPub outbox fetch
- Automatically update
publishedAt
attribute when re-streaming in a permanent live - Add ability for users to view their followers
- Add ability for users to filter their videos per channel
- Add ability for admins to show author display name instead of username in video miniatures #4422
- Add ability for admins to filter logs by tags
- Add ability for admins to configure per user channels limit #4491
- Add available instance themes and plugins in
/about/peertube
page - Remove contributors list from
/about/peertube
since some contributors don't want their name to be displayed on unknown PeerTube instances - Add Transcoding failed video state #4525
- Add ability to make a search using a URL containing query parameters
- Optimize channel with video component in homepage
Bug fixes
- Alert user when aborting video upload
- Fix youtube-dl update with proxy
- Fix My videos search on page refresh
- Fix homepage request error when having many elements (channels, videos...)
- Prevent multiple post-process triggering of upload-resumable #4175
- Fix remote interaction on remote content
- Fix HLS transcoding job when running
create-transcoding-job
CLI - Fix import error log on failed import
- Fix transcoding with very low input bitrate
- Update
updatedAt
video attribute on thumbnail update - Fix local video concurrent update
- Fix redundancy error when PeerTube tries to extend/remove redundancy
- Fix account switch in account channels page
- Hide job progress information for jobs that don't support it
- Fix player settings menu keyboard navigation
- Fix player placeholder width
- Fix playlist miniature size with big description
- Correctly escape meta tags
- Fix audio upload client bug if not enabled by instance
- Add header Vary Accept-Language #4588
- Fix additional extensions admin config description
- Fix upload of video with long filename
- Fix pending transcoding counter with failed job
- Fix client header search on ios
- Fix iframe attribute
allow-popups
for oembed - Fix theme update when logged in
- Fix homepage title
v4.0.0-rc.1
IMPORTANT NOTES
- Important You need to execute manually a migration script (can be executed after your upgrade, while your PeerTube instance is running) to migrate HLS files name:
- 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.0.js
- Docker installation:
cd /var/www/peertube-docker && docker-compose exec -u peertube peertube node dist/scripts/migrations/peertube-4.0.js
- Classic installation:
- Important We fixed configuration inconsistencies and added some keys. You must change/add them in your production.yaml
log.rotation.maxFileSize
becomeslog.rotation.max_file_size
log.rotation.maxFiles
becomeslog.rotation.max_files
log.anonymizeIP
becomeslog.anonymize_ip
- Removed
import.http.proxy
configuration: useHTTP_PROXY
andHTTPS_PROXY
environment variables instead - Added
storage.bin
in configuration file
- REST API: Deprecate
filter
videos list query parameter in favour ofisLocal
andinclude
- PeerTube is compatible with ffmpeg 4.4.1 but is not compatible with ffmpeg 4.4.0
- Removed deprecated
/static/torrents
route - We changed the live
views
andviewers
system, that could lead to federation inconsistencies with instances < 4.0.0 for these specific counters
Maintenance
- Add ability for sysadmins to disable web configuration edition #4315
- YoutubeDL:
- Support yt-dlp (recommended due to unmaintained youtube-dl)
- Add ability to set release URL in configuration
- Add ability to override
default-playlist.png
,default-avatar-account.png
,default-avatar-video-channel.png
usingstorage.client_overrides
configuration #4392
Plugins/Themes/Embed API
Documentation: https://docs.joinpeertube.org/api-plugins
- Add client plugin hooks:
filter:api.video-watch.video-playlist-elements.get.params
andfilter:api.video-watch.video-playlist-elements.get.result
#4387
- Introduce plugin id selectors: https://docs.joinpeertube.org/contribute-plugins?id=plugin-selector-on-html-elements
- Add
#plugin-selector-login-form
to login form
- Add
Docker
- We now use Bullseye for Docker images, so the image name changed:
production-buster
becomesproduction-bullseye
v4.x.x-buster
becomesv4.x.x-bullseye
- Allow configuration to be static/readonly #4315
CLI tools
- Add create-move-video-storage-jobs script to move local video files in object storage #4481
- Removed
peertube-repl
andpeertube-watch
scripts - Apply import interval only when reasonable #4552
Features
- 🎉 Add videos overview in admin
- List all available videos on the instance
- Display video information summary: file type, file size, privacy, state, embed...
- Many filters available: videos with/without HLS/WebTorrent, remote/local videos, exclude muted accounts...
- Run WebTorrent/HLS transcoding
- Remove WebTorrent/HLS video files
- Bulk actions: remove, block, run transcoding, delete video files...
- Correctly generate thumbnails/previews for portrait videos
- Keep input image ratio for banners, avatars, thumbnails...
- Support 144p transcoding #4492
- Support RTMPS
- UI:
- Live:
- Specify live type at first step
- Improve Permanent live label using Recurring live expression
- Clearer moderation dropdowns using section titles
- Improve admin tables responsive
- Add warning when trying to share a private playlist/video #4469
- Change Sort by views to Sort by recent views #4483
- Add Next video to be played in watch page if autoplay is enabled #4497
- Add embed preview in share modal
- Add user username in modal when deleting a user
- Add video name in modal when blocking/removing a video
- Improve notification settings organization
- Live:
- Video/live views:
- Add ability for admins to change local buffer update interval
- Add ability for admins to change view expiration for a specific IP
- Introduce
viewers
attribute for live videos and reduce delay to seeviewers
update in the interface - Take into accounts
views
created during the live when saving replay
- Add markdown support for playlist description #4489
- Improve video playback when having invalid redundancy URLs
- Load video resolutions before video starts in player settings menu
- Optimize federation:
- Correctly set HTTP request timeout
- Process slow/bad targets in a dedicated queue
- Optimize ActivityPub outbox fetch
- Automatically update
publishedAt
attribute when re-streaming in a permanent live - Add ability for users to view their followers
- Add ability for users to filter their videos per channel
- Add ability for admins to show author display name instead of username in video miniatures #4422
- Add ability for admins to filter logs by tags
- Add ability for admins to configure per user channels limit #4491
- Add available instance themes and plugins in
/about/peertube
page - Remove contributors list from
/about/peertube
since some contributors don't want their name to be displayed on unknown PeerTube instances - Add Transcoding failed video state #4525
- Add ability to make a search using a URL containing query parameters
- Optimize channel with video component in homepage
Bug fixes
- Alert user when aborting video upload
- Fix youtube-dl update with proxy
- Fix My videos search on page refresh
- Fix homepage request error when having many elements (channels, videos...)
- Prevent multiple post-process triggering of upload-resumable #4175
- Fix remote interaction on remote content
- Fix HLS transcoding job when running
create-transcoding-job
CLI - Fix import error log on failed import
- Fix transcoding with very low input bitrate
- Update
updatedAt
video attribute on thumbnail update - Fix local video concurrent update
- Fix redundancy error when PeerTube tries to extend/remove redundancy
- Fix account switch in account channels page
- Hide job progress information for jobs that don't support it
- Fix player settings menu keyboard navigation
- Fix player placeholder width
- Fix playlist miniature size with big description
- Correctly escape meta tags
v3.4.1
Bug fixes
- Fix broken PeerTube when cookies are disabled or if the embed iframe does not have appropriate options
- Fix search by channel's handle with an handle containing the local host
- Don't display autoblock message in upload page it is not enabled by the admin
- Don't index
/about/peertube
page - Correctly handle OEmbed with an URL containing query parameters
- More robust youtube-dl thumbnail import
- Don't send a new video notification when using create transcoding CLI script
v3.4.0
IMPORTANT NOTES
- Important: Due to a bug in ffmpeg, PeerTube is not compatible with ffmpeg 4.4. See #3990
- Debian Bullseye admins: Debian Bullseye removed
python
binary/link in favour of explicitpython2
/python3
binaries. Butyoutube-dl
used by PeerTube needs it so you'll have to install python-is-python2 or python-is-python3 before upgrading PeerTube - PeerTube now supports NodeJS 16
Plugins/Themes/Embed API
Documentation: https://docs.joinpeertube.org/api-plugins
- Server helpers
- Deprecate
videoLanguageManager.addLanguage
andvideoLanguageManager.deleteLanguage
: usevideoLanguageManager.addConstant
andvideoLanguageManager.deleteConstant
instead - Deprecate
videoCategoryManager.addCategory
andvideoCategoryManager.deleteCategory
: usevideoCategoryManager.addConstant
andvideoCategoryManager.deleteConstant
instead - Deprecate
videoLicenceManager.addLicence
andvideoLicenceManager.deleteLicence
: usevideoLicenceManager.addConstant
andvideoLicenceManager.deleteConstant
instead - Deprecate
videoPrivacyManager.deletePrivacy
:videoPrivacyManager.deleteConstant
instead - Deprecate
playlistPrivacyManager.deletePlaylistPrivacy
:playlistPrivacyManager.deleteConstant
instead - Introduce
.getConstantValue()
,.getConstants()
and.resetConstants()
forvideoLanguageManager
,videoCategoryManager
,videoLicenceManager
,videoPrivacyManager
andplaylistPrivacyManager
- Deprecate
- Add server plugin hooks:
filter:api.overviews.videos.list.params
andfilter:api.overviews.videos.list.result
Custom markup API
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 usingdata-justify-content
attribute
Maintenance
- Remove
StandardOutput
andStandardError
settings from systemd service template #4300 - Use random UUIDs for video, torrent and streaming playlist files
- Filename is regenerated when the file content changes: allows admins to use aggressive caching
CLI tools
- Remove unmaintened
optimize-old-videos.js
script - Add short UUID support in video scripts
Features
- 🎉 Add video filters to common video pages (account videos, channel videos, recently added/local/trending videos...)
- Change video sort (recently added, hot, views...)
- Only display live/VOD videos
- Filter by languages/categories
- Hide or display sensitive content
- Choose to display all videos or only local videos
- 🎉 Beta: Add support for saving video files in object storage #4290
- Check the documentation: https://docs.joinpeertube.org/admin-remote-storage
- 🎉 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
- Automatically downgrade resolution if bandwidth is too low
- Add latency metric for live videos in stats for nerd card
- Immediate quality change when the user clicks on a specific resolution
- Add ability to search by PeerTube host in search filters
- Disallow search engine indexation of remote channels/accounts
- Transcoding:
- Improve bitrate calculation using "bit per pixel" method
- Limit live bitrate to input bitrate
- Accessibility/UI:
- Alert user for low quota and video auto-block on upload page #4336
- Display a modal when logged in to explain why and where set up the account profile #4352
- Display messages to inform why and where set up channels in My library pages #4352
- Display a warning when using capitalized letter for the email/username in the login form
- Display a message in embed on unsupported web browser
- Support out proxy using env variables (
HTTP_PROXY
andHTTPS_PROXY
) #4346 - Support Latin language for videos
Bug fixes
- Fix PeerTube button link in embed
- Don't remove existing redundancies on host redundancy update
- Remove thumbnail flash when autoplay is enabled in embed
- Fetch data in bulk for the homepage, fixing API rate limit errors
- Fix channel name validator consistency between client and server
- Fix resumable upload without preview file in the body
- Fix redundancy of big HLS files
- Fix stats for nerd card label width
- Fix stats for nerd card resolution
- Fix uploading videos with empty tags in CLI tools
- Fix HLS player on non HTTPS instances
- Hide schedule privacy if private was removed by a plugin
- Fix moderation embeds
- Fix description timestamp click
- Fix privacy descriptions
- Safer avatar, banner and video preview
- Fix broken delete buttons of admin federation lists #4378
- More robust webtorrent redundancy download
- Fix hls redundancy in pruning script
- Fix compat' with old web browsers (Pale Moon, Safari 11, iOS 11, old webkit...))
- Fix silent 500 after resumable upload
- Fix HTML config injection with custom HTML/CSS
- Fix video upload on iOS
v3.4.0-rc.1
IMPORTANT NOTES
- Important: Due to a bug in ffmpeg, PeerTube is not compatible with ffmpeg 4.4. See #3990
- Debian Bullseye admins: Debian Bullseye removed
python
binary/link in favour of explicitpython2
/python3
binaries. Butyoutube-dl
used by PeerTube needs it so you'll have to install python-is-python2 or python-is-python3 before upgrading PeerTube - PeerTube now supports NodeJS 16
Plugins/Themes/Embed API
Documentation: https://docs.joinpeertube.org/api-plugins
- Server helpers
- Deprecate
videoLanguageManager.addLanguage
andvideoLanguageManager.deleteLanguage
: usevideoLanguageManager.addConstant
andvideoLanguageManager.deleteConstant
instead - Deprecate
videoCategoryManager.addCategory
andvideoCategoryManager.deleteCategory
: usevideoCategoryManager.addConstant
andvideoCategoryManager.deleteConstant
instead - Deprecate
videoLicenceManager.addLicence
andvideoLicenceManager.deleteLicence
: usevideoLicenceManager.addConstant
andvideoLicenceManager.deleteConstant
instead - Deprecate
videoPrivacyManager.deletePrivacy
:videoPrivacyManager.deleteConstant
instead - Deprecate
playlistPrivacyManager.deletePlaylistPrivacy
:playlistPrivacyManager.deleteConstant
instead - Introduce
.getConstantValue()
,.getConstants()
and.resetConstants()
forvideoLanguageManager
,videoCategoryManager
,videoLicenceManager
,videoPrivacyManager
andplaylistPrivacyManager
- Deprecate
- Add server plugin hooks:
filter:api.overviews.videos.list.params
andfilter:api.overviews.videos.list.result
Custom markup API
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 usingdata-justify-content
attribute
Maintenance
- Remove
StandardOutput
andStandardError
settings from systemd service template #4300 - Use random UUIDs for video, torrent and streaming playlist files
- Filename is regenerated when the file content changes: allows admins to use aggressive caching
CLI tools
- Remove unmaintened
optimize-old-videos.js
script - Add short UUID support in video scripts
Features
- 🎉 Add video filters to common video pages (account videos, channel videos, recently added/local/trending videos...)
- Change video sort (recently added, hot, views...)
- Only display live/VOD videos
- Filter by languages/categories
- Hide or display sensitive content
- Choose to display all videos or only local videos
- 🎉 Beta: Add support for saving video files in object storage #4290
- Check the documentation: https://docs.joinpeertube.org/admin-remote-storage
- 🎉 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
- Automatically downgrade resolution if bandwidth is too low
- Add latency metric for live videos in stats for nerd card
- Immediate quality change when the user clicks on a specific resolution
- Add ability to search by PeerTube host in search filters
- Disallow search engine indexation of remote channels/accounts
- Transcoding:
- Improve bitrate calculation using "bit per pixel" method
- Limit live bitrate to input bitrate
- Accessibility/UI:
- Alert user for low quota and video auto-block on upload page #4336
- Display a modal when logged in to explain why and where set up the account profile #4352
- Display messages to inform why and where set up channels in My library pages #4352
- Display a warning when using capitalized letter for the email/username in the login form
- Support out proxy using env variables (
HTTP_PROXY
andHTTPS_PROXY
) #4346
Bug fixes
- Fix PeerTube button link in embed
- Don't remove existing redundancies on host redundancy update
- Remove thumbnail flash when autoplay is enabled in embed
- Fetch data in bulk for the homepage, fixing API rate limit errors
- Fix channel name validator consistency between client and server
- Fix resumable upload without preview file in the body
- Fix redundancy of big HLS files
- Fix stats for nerd card label width
- Fix stats for nerd card resolution
- Fix uploading videos with empty tags in CLI tools
- Fix HLS player on non HTTPS instances
- Hide schedule privacy if private was removed by a plugin
- Fix moderation embeds
- Fix description timestamp click
- Fix privacy descriptions