PeerTube

Media

A decentralized, federated video platform powered by ActivityPub and WebTorrent.

Latest v8.2.4 · by FramasoftWebsiteChocobozzz/PeerTube

Release activity

Release activity — 10 releases across 8 days since May 20, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before May 20, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 20261 release on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 20261 release on Aug 4, 2026No releases on Aug 11, 2026
Wednesday2 releases on May 20, 20261 release on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 20261 release on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
Friday1 release on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 20261 release on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
Saturday2 releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

10 releases since May 20, 2026, busiest day 2

Changelog

v8.2.4

Security 1
  • Address vulnerabilities ranging from medium to high severity affecting PeerTube <= 8.2.3
SECURITY

This release addresses vulnerabilities ranging from medium to high severity affecting PeerTube <= 8.2.3. In a few days, this changelog will be updated to disclose the vulnerabilities.

View originalPermalink
How v8.2.4 went

v8.2.3

Fixed 15
  • Fix iOS mobile link for channels
  • Fix input placeholder font size
  • Correctly remove a private video linked to an abuse
  • Do not validate search filters on Enter press in tag inputs
  • Improve client notification if the backend returns a 502 HTTP error
  • Fix various UI bugs and inconsistencies on RTL layout
Security 4
  • Fix P2P segment validator to correctly reject invalid chunks
  • Forbid embed for videos with embed restrictions if the referer header is not set
  • Redact OAuth tokens in debug logs
  • Add max depth when fixing ActivityPub object
SECURITY
  • Fix P2P segment validator to correctly reject invalid chunks
  • Forbid embed for videos with embed restrictions if the referer header is not set
  • Redact OAuth tokens in debug logs
  • Add max depth when fixing ActivityPub object
Bug fixes
  • Fix iOS mobile link for channels
  • Fix input placeholder font size
  • Correctly remove a private video linked to an abuse
  • Do not validate search filters on "Enter" press in tag inputs
  • Improve client notification if the backend returns a 502 HTTP error
  • Fix various UI bugs/inconsistencies on RTL layout
  • Fix watching password protected live
  • Fix password submit button theme in embed
  • Fix "Invalid width to find appropriate image" error in embed
  • Fix responsive embed in custom markup (used to build the instance homepage)
  • Prevent serving invalid segment JSON file for lives
  • Fix broken control bar when hovering the progress bar on small players
  • Correctly detect unlisted privacy from remote objects
  • Abort request on invalid HTTP digest
  • Correctly take into account count: 0 in SQL requests
  • Hide live scheduled date for past dates
  • Fix infinite loop with S3 pagination
  • Correctly dedupe refresh remote objects jobs
  • Do not run scheduled jobs more than needed
  • Consume all job attempts before throwing an error for move to object storage/file system job
  • More robust live ending handler
  • Fix TOCTOU race when starting a live session
  • More precise live quota exceeded checker
  • Fix live cleanup race issue
  • Correctly cleanup tmp directory when handling runner job files
  • Fix stalled request when rejecting auth for socket endpoints
  • Fix non-settled promise in video download endpoint when the user closes the stream
  • Correctly match plugin websocket routes
  • Don't crash video import if youtube-dl doesn't return a date
  • Correctly extract mentions followed by a punctuation/newline
View originalPermalink
How v8.2.3 went

v8.2.2

Fixed 6
  • Accept short UUIDs for loadByIdOrUUID and loadByIdOrUUIDWithFiles plugin helpers
  • Allow restricted embed to be displayed on the origin instance
  • Fix invalid state error on failed move job
  • Fix missing mutex lock when managing video captions
  • Fix broken embed when the tab is loaded in the background on Firefox
  • Fix menu collapse/extend icon on RTL layout
Security 10
  • Ensure actor that signs the activity and the video are on the same host when receiving an Update activity
  • Check HLS filename when proxifying HLS files from object storage
  • Ensure element belongs to the playlist on update/remove
  • Do not leak video UUID on invalid video view
  • Ensure user has rights to see private live specific metadata
  • Ensure ZIP entry filename is valid when extracting a ZIP export

We strongly recommend all administrators upgrade immediately.

SECURITY

This release addresses vulnerabilities ranging from medium to high severity affecting PeerTube <= 8.2.1. Security hardening is also included.

  • critical Ensure actor that signs the activity and the video are on the same host when receiving an Update activity GHSA-g9p4-f7h8-hc86
  • high Check HLS filename when proxifying HLS files from object storage GHSA-93rr-g3x2-ffv4
  • medium Ensure element belongs to the playlist on update/remove
  • medium Do not leak video UUID on invalid video view
  • medium Ensure user has rights to see private live specific metadata
  • hardening Ensure ZIP entry filename is valid when extracting a ZIP export
  • hardening Escape admin configuration when injecting it in HTML
  • hardening Ensure version from plugin index is valid before injecting it in the CLI
  • hardening Check caption VTT validity when adding a caption to a video
  • hardening Invalidate all user tokens on password reset or password change
Bug fixes
  • Accept short UUIDs for loadByIdOrUUID and loadByIdOrUUIDWithFiles plugin helpers
  • Allow restricted embed to be displayed on the origin instance
  • Fix invalid state error on failed move job
  • Fix missing mutex lock when managing video captions
  • Fix broken embed when the tab is loaded in the background on Firefox
  • Fix menu collapse/extend icon on RTL layout
View originalPermalink
How v8.2.2 went

v8.2.1

Added 1
  • Add toot:discoverable support for actors
Fixed 5
  • Handle PNPM store directory change, fixing ERR_PNPM_UNEXPECTED_STORE crash
  • Improve conversion to square thumbnail of landscape thumbnails
  • Fix running again object storage move job on videos that are already in object storage when using npm run create-move-video-storage-job
  • Fix uploading HLS caption after transcoding
  • Fix broken schema.org tag with special chars
Security 1
  • Fix XSS in JSON-LD object injected by the server in video watch page
SECURITY
Features
  • Add toot:discoverable support for actors
Bug fixes
  • Handle PNPM store directory change, fixing ERR_PNPM_UNEXPECTED_STORE crash
  • Better conversion to square thumbnail of landscape thumbnails
  • Fix running again object storage move job on videos that are already in object storage when using npm run create-move-video-storage-job
  • Fix uploading HLS caption after transcoding
  • Fix broken schema.org tag with special chars
View originalPermalink
How v8.2.1 went

v8.2.0

Added 13
  • Add ability to transfer a video channel to another user of the same instance
  • Add live DVR allowing users to seek within and pause the live
  • Add ability to remove segments of a video in Studio
  • Support Romanian and Korean languages in web client
  • Add download.max_total_bytes_per_second and download.max_bytes_per_ip_per_second configuration keys to throttle video downloads
  • Add ability to provide cookies to yt-dlp for YouTube imports
Changed 4
  • Restore playback rates and manual video resolution choice between sessions in the same web browser
  • Increase the default refresh token lifetime oauth2.token_lifetime.refresh_token to 4 weeks instead of 2 weeks
  • Entire PeerTube configuration can be set using environment variables
  • prune-storage script can now be run without stopping PeerTube
Removed 2
  • Remove NodeJS 20 support, requiring upgrade to NodeJS 22 (>= 22.12)
  • iOS versions < 15.4 are not supported anymore
Deprecated 1
  • Public access of /api/v1/accounts API endpoint is deprecated for privacy reasons and will be behind admin/moderator auth access in PeerTube v9
Security 1
  • Fix an important NGINX I/O issue when users download a video

Blog post: https://joinpeertube.org/news/release-8.2

SECURITY

Please read the v8.1.8 IMPORTANT NOTES, which explain that the vulnerability fixed in v8.1.6 has been actively exploited

IMPORTANT NOTES
  • Follow v8.1.0 IMPORTANT NOTES if you upgrade from PeerTube <= v8.0.2
  • Remove NodeJS 20 support. Please upgrade to NodeJS 22 (>= 22.12) before upgrading PeerTube
  • The public access of /api/v1/accounts API endpoint is deprecated for privacy reasons and will be behind an admin/moderator auth access in PeerTube v9, planned for the end of 2027
  • iOS versions < 15.4 are not supported anymore
NGINX
Sysadmin
  • prune-storage script can now be run without stopping PeerTube
  • Add video privacy tag for peertube_videos_total OTEL metric
Configuration

This section is not exhaustive

  • Add download.max_total_bytes_per_second and download.max_bytes_per_ip_per_second configuration keys to throttle video downloads. These new keys help prevent instability when botnets download the entire PeerTube catalog
  • Add ability to provide cookies to yt-dlp #7510. See the documentation for more information: https://docs.joinpeertube.org/maintain/configuration#use-cookies-for-youtube-imports-when-needed
  • Increase the default refresh token lifetime oauth2.token_lifetime.refresh_token to 4 weeks (instead of 2 weeks)
  • Allow admins to configure the default state of the Automatically publish a replay when your live ends option #7414
Docker
  • The entire PeerTube configuration can be set using environment variables. Keep in mind that environment variable configuration keys override web admin configuration
Plugins/Themes/Embed API
  • Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
    • filter:api.user.signup.requires-approval.result
    • filter:notifier.notification.enabled.result
  • Add a server plugin helper:
    • storageManager.deleteData(key: string)
Features
  • :tada: Add ability to transfer a video channel to another user of the same instance :tada:
  • :tada: Add live DVR allowing users to seek within and pause the live #7396 :tada:
  • :tada: Add ability to remove segments of a video in Studio :tada:
  • Support Romanian and Korean languages in web client
  • Improve video ownership change UX:
    • Better table UI in My Videos -> More -> Ownership changes. It also lists ownership change requests for users' videos
    • The video management page now includes a section to transfer ownership of a video and cancel a pending request
    • Add notifications when video ownership is requested/accepted/rejected
    • Add bulk actions to accept/reject an ownership change request
  • Player:
    • Restore playback rates and manual video resolution choice between sessions in the same web browser
    • Add ability to flip the video horizontally #7478
    • Redesign loading spinner
  • Support podcast feed for playlists
  • Add video download stats for video makers #7437
  • Improve global UX:
    • Introduce a new table filter component that is simpler to use
    • Default runner job route is the page that lists runner jobs
    • Clicking on a type/state tag automatically filters data for local/runner job states and types, follow states, registration states, and user roles
    • Add video tag information and filter when listing my videos
    • Add ability to bulk accept/reject registration requests
    • Add ability to filter users by role in users overview
    • Improve comments UI on mobile
    • Display subscribe button when subscription state is loaded
    • Add g p hotkeys to go to My playlists page
  • Improve videos overview for admins:
    • Add ability to filter videos by state
    • Add a mute badge if the video owner is muted by the instance
    • Add ability to filter out videos from muted accounts
  • Improve video blocks overview for admins:
    • Add video privacy column
    • Add bulk actions to unblock, switch to manual block or delete the selected videos
    • Add a mute badge if the video owner is muted by the instance
  • Improve abuses overview for admins:
    • Add bulk action to update internal note, mark as accepted/rejected, delete report, mute reporter/reportee, block/unblock the video, delete the video/comment
    • Add a mute badge if the reporter/reportee is muted by the instance
  • Improve comments overview for admins and users:
    • Clicking on account name filters comments
    • Add a mute badge if the account that commented the video is muted by the instance
    • Add ability to filter out comments from muted accounts
  • Performance:
    • Reduce SQL joins when loading a video from the database
    • Faster video SQL query to retrieve my videos
    • Faster video comments SQL queries for users that list comments on their videos
    • Faster video redundancies SQL queries
    • Reduce number of rows returned by video SQL queries
    • Reduce number of rows returned by comments SQL queries
    • Faster loading of My channels page
    • Add /about endpoint caching in the client to reduce unnecessary API calls
    • Process ActivityPub View and Download activities in parallel
    • Forward ActivityPub View using parallel broadcast
  • Support ActivityPub indexable field for actors
  • Expose runner and runner job queue OpenTelemetry metrics #7469
  • Prevent stale follows by periodically re-sending Follow ActivityPub requests to remote instances
  • Improve follows reliability algorithm to reject followers that have been consistently down for ~7 days
  • Add .m4b audio file support
Bug fixes
  • Fix plugin settings to display default values when not configured in the DB #7484
  • Fix actor host link in miniature instance dropdown if search index is disabled
  • Fix missing stream error handling in web video object storage proxy #7535
  • Fix caption filename overflow
  • Fix setting a thumbnail from a video that is stored in object storage
  • Fix instance redundancies pagination
  • Filter out non-text languages for captions
  • Increase lazy static files cache time (thumbnails, captions, actor avatars/banners, etc.) to 1 year
  • Correctly log uncaught exceptions or unhandled promise rejections in file logger
  • Prevent page scrolling when applying filters while browsing instance/account/channel videos
  • Fix infinite scroll when listing my followers
  • Handle errors when updating a video playlist
  • Fix download filename if the video contains non-Latin characters
  • Fix font colors in emails by only injecting custom admin colors when the default theme is light-beige or dark-brown, to prevent accessibility issues
  • Fix broken audio stream P2P for lives
  • Fix broke HLS transcoding on concurrent video privacy change
  • Don't unpause the player when clicking on a transcription segment
  • Fix table page navigation on registration action
  • More robust playlist thumbnails updater
  • Fix concurrency issue when writing live sha segments
  • Fix concurrency issue when uploading the same torrent filename
  • Fix column varchar lengths
View originalPermalink
How v8.2.0 went

v8.2.0-rc.3

Pre-release
SECURITY
  • Include security fixes from 8.1.8 and bug fixes from 8.1.7
View originalPermalink
How v8.2.0-rc.3 went

v8.1.8

Added 1
  • Add a new user.disable_root_auth config key to disable root token usage
Removed 1
  • Remove peertube-plugin-google-analytics-js from the plugin registry
Security 2
  • Automatically remove peertube-plugin-google-analytics-js plugin that was installed via SQL injection exploitation
  • Invalidate all OAuth tokens so all users must log in again
IMPORTANT NOTES

:warning: Follow v8.1.0 IMPORTANT NOTES if you upgrade from PeerTube <= v8.0.2 :warning:

We have learned that the SQL injection vulnerability fixed in v8.1.6 has been exploited at scale since at least May 18, 2026 and so before the v8.1.6 release. According to our investigation, the attacker exploited this SQL injection to generate a token for the root user and install the peertube-plugin-google-analytics-js plugin. This plugin imports a client script from hxxps://www.googie-anaiytics.com/jquery.ui.js that currently only logs a line in the web browser.

Actions taken by this release:

  • Automatically remove peertube-plugin-google-analytics-js in v8.1.8
  • Invalidate OAuth tokens in v8.1.8 (all users must log in again)
  • Add a new user.disable_root_auth config key to disable root token usage
  • Remove the plugin from the plugin registry

Actions taken by Framasoft:

  • Report googie-anaiytics.com to the registrar
  • Send a contact-form message to public PeerTube instances
  • Release additional versions if we observe other attack vectors
  • A CVE is being requested for the SQL injection

Actions admins must take:

  • Upgrade to v8.1.8 as soon as possible
  • Review newly created users and videos
  • Review your instance configuration, especially Configuration -> Customization -> JavaScript/CSS
  • Review installed plugins
  • Generate new tokens for your runners

If you cannot upgrade to v8.1.8:

  1. Remove actor follows that contain the 20.240.202.159 URL:
  • Find them: SELECT * FROM "actorFollow" WHERE "url" LIKE '%20.240.202.159%'
  • Delete them: DELETE FROM "actorFollow" WHERE "id" = ...
  1. Remove actors that contain a ' character in inboxUrl:
  • Find them: SELECT * FROM "actor" WHERE "inboxUrl" LIKE '%''%'
  • Delete them: DELETE FROM "actor" WHERE "id" = ...
  1. Invalidate OAuth tokens: UPDATE "oAuthToken" SET "accessTokenExpiresAt" = NOW(), "refreshTokenExpiresAt" = NOW() WHERE "accessTokenExpiresAt" > NOW() OR "refreshTokenExpiresAt" > NOW()
  2. Remove peertube-plugin-google-analytics-js from instance plugins
  3. Disable federation in production.yaml by setting federation.enabled to false
  4. Restart PeerTube
View originalPermalink
How v8.1.8 went

v8.1.7

Fixed 3
  • Fix broken URL import
  • Fix user quota check for imports
  • Fix removing notifications from muted accounts
Bug fixes
  • Fix broken URL import
  • Fix user quota check for imports
  • Fix removing notifications from muted accounts
View originalPermalink
How v8.1.7 went

v8.2.0-rc.2

Pre-release
Added 2
  • Add `g p` hotkey to go to my playlists
  • Add .m4b audio file support
Fixed 4
  • Make playlist thumbnails updater more robust
  • Fix concurrency issue when writing live sha segments
  • Fix concurrency issue when uploading the same torrent filename
  • Fix column varchar lengths
Security 1
  • Include security fixes from 8.1.6
SECURITY
  • Include security fixes from 8.1.6
Features
  • Add g p hotkey to go to my playlists
  • Add .m4b audio file support
Bug fixes
  • More robust playlist thumbnails updater
  • Fix concurrency issue when writing live sha segments
  • Fix concurrency issue when uploading the same torrent filename
  • Fix column varchar lengths
View originalPermalink
How v8.2.0-rc.2 went

v8.1.6

Security 6
  • Fix SQL injection coming from actor inbox URL when updating actor follow scores
  • Reject JSON-LD objects with special properties
  • Restrict role assignment to administrators only
  • Prevent external auth token replay
  • Prevent SSRF on import and channel sync
  • Apply stricter rate limit to ask password reset
IMPORTANT NOTES
  • Follow v8.1.0 IMPORTANT NOTES if you upgrade from PeerTube <= v8.0.2
SECURITY
  • Fix SQL injection coming from actor inbox URL when updating actor follow scores. Thanks to Nagarajan Selvaraj Paulmony for reporting this vulnerability :pray: https://github.com/Chocobozzz/PeerTube/security/advisories/GHSA-pqr4-34h8-g39x
  • Reject JSON-LD objects with special properties. Thanks to Mastodon security team for reporting this vulnerability :pray:
  • Restricts role assignment to administrators only
  • Prevent external auth token replay
  • Prevent SSRF on import and channel sync
  • Stricter rate limit to ask password reset
View originalPermalink
How v8.1.6 went
View all

Discussion