IMPORTANT NOTES
- You need to manually execute a migration script after upgrading, while PeerTube is running and the database migration is complete (
Migrations finished. New migration version schema: 1000in PeerTube startup logs):- 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-8.1.js - Docker installation:
cd /var/www/peertube-docker && docker compose exec -u peertube peertube node dist/scripts/migrations/peertube-8.1.js
- Classic installation:
- Running regenerate-thumbnails and prune-storage scripts after the upgrade and migration script is highly recommended
Maintenance
- Migrate to the
sharpNodeJS dependency to process images. This is a native dependency that provides prebuilt binaries, but some systems (like FreeBSD) may require an additional step after PeerTube dependencies installation:- Install
sharpdependencies: https://sharp.pixelplumbing.com/install/#building-from-source - Run
npm explore sharp -- npm run buildinpeertube-latestdirectory
- Install
- Merge the
previewsdirectory into thethumbnailsdirectory. The migration script will automatically move files
Thepreviewsdirectory and configuration are kept for compatibility reasons - The
cachedirectory is no longer deleted at PeerTube startup, to keep files cached from the previous run
Configuration
This section is not exhaustive
- Important Generate more thumbnail sizes for videos in
thumbnails.sizes. We recommend admins apply the same settings - Update default object storage configuration to use different
prefixvalues with the samebucket_namefor each object type (web_videos,user_exports, etc.), so it is easier to add more object types in the future - Use the
lucideplayer theme by default import.videos.http.force_ipv4is nowtrueby default to reduce rate limiting on some platforms- Add On Primary color configuration (
theme.customization.on_primary_color) to choose the foreground color when the background color is Primary
Docker
- Add
va-driver-allto the PeerTube Docker image #7346
Plugins/Themes/Embed/REST APIs
- REST API:
- Deprecate
previewfilewhen publishing a video. Usethumbnailfileinstead - Deprecate
thumbnailPathandpreviewPathVideofields. Use thethumbnailsarray instead - Deprecate the
thumbnailPathVideoPlaylistfield. Use thethumbnailsarray instead - Remove unused
fileUrlfromUserExportandVideoSource - Deprecate
/lazy-static/previews/:filename. Use/lazy-static/thumbnails/:filenameinstead
- Deprecate
- Server plugin hooks (https://docs.joinpeertube.org/api/plugins):
- Add
filter:feed.videos.list.result#7355 - Replace
torrentPathwithtorrentFilenameandtorrentStreamfor remote torrents infilter:api.download.torrent.allowed.resultcontext
- Add
Features
- 🎉 Allow uploaders to restrict domains where their video can be embedded 🎉
- Add an admin config to ensure an optimized podcast audio file is transcoded
- Support 3.0x playback speed for non-premium users 😁
- Optimize transcoding job queue:
- Do not wait for all transcoding tasks to publish the video
- Do not wait for all transcoding tasks to move video files in object storage
- Lower priority on low video resolutions to avoid blocking video publication during bursts of uploads
- More transcoding job parallelization
- More reliable channel sync:
- Reduce youtube-dl calls to reduce rate limiting
- Handle cases where the video is not available/doesn't exist
- Handle lives that are still being post-processed
- Stop sync on get video info failure to retry at the same point next time
- UX:
- Support raw hex colors in color picker input #7337
- Group notifications by date
- Display blocked video information on the video manage page
- Add a loading icon when updating the video
- Improve the error message when the user password is too long
- Add
g lhotkey to go to the login page - Add ability to display video language on the
My Videospage (column is hidden by default)
- Improve video SEO
- Support
pngandwebpvideo thumbnails - Support
svglogos for admins - Better email notification when a subscribed channel published a video #7395
- Add compatibility with ActivityPub FEP-1b12 (used by Lemmy, PieFed, Mbin...)
- Introduce a new cache system for remote thumbnails, storyboards, captions, and actor avatars/banners
- Support Redis TLS connections #7404
- Support PostgreSQL TLS connections #7366
- Support path style requests for object storage
- Improve channel collaboration:
- An editor can now move a video they can manage to a channel they can manage (owner/editor)
- An editor can send a change ownership request for a video they can manage
- Editors can add videos to playlists of collaborated channels
- Add quick actions (Manage, Remove) to the video dropdown for editors too
- Performance:
- Create video file torrents in a worker thread
- Optimize videos list SQL query with complex sort (trending, hot, etc.)
- When possible, send raw files directly instead of muxing when downloading a video
- Improve podcast feed images compatibility with Apple Podcast
Bug fixes
- Fix videos list inconsistencies when going back to that page
- Do not display an empty details block in embed on error
- Prevent incomplete segment reads for live streams #7333
- Fix video download filename on Safari
- Fix broken P2P when updating object storage base URL
- Fix Redis sentinel support #7365
- Correctly use header colors defined by the admin
- Fix broken transcoding on remote runner when split video/audio is enabled
- Fix server config not refreshing after admin settings save #7413
- Prevent exception when the account is not loaded yet in the user moderation dropdown
- Prevent black borders when embedding a video
- Fix default scope defined by the admin when browsing videos
- Force transcoding even if the video state is not compatible
- Fix broken video studio task when updating video privacy at the same time
- Reset selected rows when loading data in tables
- Take into account channel owner video quota when an editor publishes a video to a collaborated channel
- Fix watching a password protected video as an editor
- Fix video metadata in
filter:api.video.upload.accept.resultcontext - Correctly take into account the user language filter when browsing videos
- Fix
.tsvideo file upload #7458 - Fix
.mkvvideo file upload on latest Chrome - Fix deleting all instance logo when deleting a specific logo
- Fix getting unsupported Node.js from PATH with yt-dlp #7468