PeerTube 3.1.0

Federated video streaming platform, that's based on ActivityPub and P2P (BitTorrent) stream distribution technology. Individual video hosting instances profiteer from shared communities and content caching.

Tags javascript angularjs web video hosting activitypub
License Affero GPLv3
State development

Recent Releases

3.1.025 Mar 2021 22:05 minor feature: Important: Deprecate NodeJS 10. Support NodeJS 14 and 15. Remove ES5 module support (breaks compatibility with web browsers we didn't support). PeerTube releases now contain client source maps helping client deging (for developers and admins). It's the reason why the release size is bigger (we think it's worth it). Remove deprecated static routes (/static/avatars/, /static/previews/ and /static/video-captions/). PeerTube now uses a unique name for thumbnails, previews and captions allowing to correctly cache these resources. It could break some third party clients that guessed these filenames depending on the video UUID. We'll continue this work in the future for video filenames, so admins can easily cache these files (using multiple reverse proxies etc). nginx max body size configuration. Add script printing command to generate a resolution for a given file #3507. Add --wait-interval option to video-import script to wait between two video imports #3310. Add server plugin hooks (https://docs.joinpeertube.org/api-plugins): filter:api.user.me.videos.list.params and filter:api.user.me.videos.list.result . filter:api.user.me.videos.list.params and filter:api.user.me.videos.list.result. Add server helpers: videos.loadByIdOrUUID . videos.loadByIdOrUUID. Add server transcoding helpers (https://docs.joinpeertube.org/contribute-plugins?id=add-new-transcoding-profiles): transcodingManager.addVODProfile transcodingManager.addVODEncoderPriority transcodingManager.addLiveProfile transcodingManager.addLiveEncoderPriority . transcodingManager.addVODProfile. transcodingManager.addVODEncoderPriority. transcodingManager.addLiveProfile. transcodingManager.addLiveEncoderPriority. Transcoding: Fair transcoding jobs priority: give an higher priority to optimize jobs and decrease priority of transcoding jobs depending on the amount of videos uploaded by the user during the last 7 days #3637 Higher niceness priority for live transcoding compared to vod transcoding #3577 Allow admins to ch
3.1.0-rc.105 Mar 2021 07:25 minor feature: Important retrieving data of another user if the username contains _ when fetching my information. Upgrade documentation. Add live RTMP port in docker compose. Account feed URL. Log RTMP server error (address already in use). NPM theme links in admin theme page. Don't reject AP actors with empty description. Twitter admin config description. Duplicate entry in job list page. nl-NL broken admin config page. Bad tracker client IP when using a reverse proxy.
3.0.113 Jan 2021 07:05 minor feature: Important retrieving data of another user if the username contains _ when fetching my information. Upgrade documentation. Add live RTMP port in docker compose. Account feed URL. Log RTMP server error (address already in use). NPM theme links in admin theme page. Don't reject AP actors with empty description. Twitter admin config description. Duplicate entry in job list page. nl-NL broken admin config page. Bad tracker client IP when using a reverse proxy.
3.0.008 Jan 2021 13:05 minor feature: Update the default configuration to not federate unlisted videos. We recommend to admins to update this setting. Update the default configuration to remove remote video views to reduce DB size and improve performances. We recommend to admins to update this setting. Remove deprecated video abuse API. Refresh nginx configuration #3313. Replace traefik by nginx in our docker-compose template: Better consistency with our default setup (we now use the same stack) Use our default nginx template enabling many optimizations Update the documentation to take into account this change: https://docs.joinpeertube.org/install-docker . Better consistency with our default setup (we now use the same stack). Use our default nginx template enabling many optimizations. Update the documentation to take into account this change: https://docs.joinpeertube.org/install-docker. Add ability for auth plugins to redirect user on logout #32 #33. Add input-password setting to plugins #3375. Add server plugin hooks (https://docs.joinpeertube.org/api-plugins): filter:api.accounts.videos.list.params filter:api.accounts.videos.list.result filter:api.video-channels.videos.list.params filter:api.video-channels.videos.list.result . filter:api.accounts.videos.list.params. filter:api.accounts.videos.list.result. filter:api.video-channels.videos.list.params. filter:api.video-channels.videos.list.result. Authenticate the user if possible in plugin router #3400. Support live streaming #3250. Create a live video using the PeerTube interface and start streaming using your favorite streaming software (OBS, ffmpeg...) If the admin allows it, add ability for users to save a replay of their live Support live transcoding in multiple resolutions Admins can set a limit of created lives per user/instance and a duration limit This is the first step of live streaming, we'll consolidate the feature next year . Create a live video using the PeerTube interface and start streaming using your favorite streaming software
3.0.0-rc.117 Dec 2020 09:25 minor feature: The minimum ffmpeg version required is now 4.1. Deprecate static routes that will be removed in 3.0 (you may not have to do anything if you used paths returned by the video REST API): /static/avatars/: use /lazy-static/avatars/ instead. /static/previews/: use /lazy-static/previews/ instead. /static/video-captions/: use /lazy-static/video-captions/ instead. . /static/avatars/: use /lazy-static/avatars/ instead. /static/previews/: use /lazy-static/previews/ instead. /static/video-captions/: use /lazy-static/video-captions/ instead. Use playlistPosition URL parameter for playlists instead of videoId to set the current playlist position. Better error message on PostgreSQL connection error. Add ssl option support for PostgreSQL connection. Player video annotation (alpha). Add embed API (https://docs.joinpeertube.org/#/api-embed-player): playNextVideo method playPreviousVideo method getCurrentPosition method . playNextVideo method. playPreviousVideo method. getCurrentPosition method. Embed URL parameters Add ability to disable PeerTube link in embed using an URL param (peertubeLink=0) . Add ability to disable PeerTube link in embed using an URL param (peertubeLink=0). Add plugins support in embed. Add client plugin hooks (https://docs.joinpeertube.org/#/api-plugins): action:embed.player.loaded (for embed) . action:embed.player.loaded (for embed). Add custom fields in video update/upload form using registerVideoField (https://docs.joinpeertube.org/#/contribute-plugins?id=add-custom-fields-to-video-form). Moderation: Add ability to report comments and accounts. Add messaging system between local reporter of an abuse and moderators so they can easily communicate. Users can now see their abuse reports, and have notifications when an abuse state changed (accepted/rejected) or when moderators added a new message. Add embed to block list details @rigelk in #2926 . Add ability to report comments and accounts. Add messaging system between local reporter of an a
2.4.009 Sep 2020 13:25 minor feature: The minimum ffmpeg version required is now 4.1. Deprecate static routes that will be removed in 3.0 (you may not have to do anything if you used paths returned by the video REST API): /static/avatars/: use /lazy-static/avatars/ instead. /static/previews/: use /lazy-static/previews/ instead. /static/video-captions/: use /lazy-static/video-captions/ instead. . /static/avatars/: use /lazy-static/avatars/ instead. /static/previews/: use /lazy-static/previews/ instead. /static/video-captions/: use /lazy-static/video-captions/ instead. Use playlistPosition URL parameter for playlists instead of videoId to set the current playlist position. Better error message on PostgreSQL connection error. Add ssl option support for PostgreSQL connection. Player video annotation (alpha). Add embed API (https://docs.joinpeertube.org/#/api-embed-player): playNextVideo method playPreviousVideo method getCurrentPosition method . playNextVideo method. playPreviousVideo method. getCurrentPosition method. Embed URL parameters Add ability to disable PeerTube link in embed using an URL param (peertubeLink=0) . Add ability to disable PeerTube link in embed using an URL param (peertubeLink=0). Add plugins support in embed. Add client plugin hooks (https://docs.joinpeertube.org/#/api-plugins): action:embed.player.loaded (for embed) . action:embed.player.loaded (for embed). Add custom fields in video update/upload form using registerVideoField (https://docs.joinpeertube.org/#/contribute-plugins?id=add-custom-fields-to-video-form). Moderation: Add ability to report comments and accounts. Add messaging system between local reporter of an abuse and moderators so they can easily communicate. Users can now see their abuse reports, and have notifications when an abuse state changed (accepted/rejected) or when moderators added a new message. Add embed to block list details @rigelk in #2926 . Add ability to report comments and accounts. Add messaging system between local reporter of an a
2.4.0-rc.128 Aug 2020 06:45 minor feature: Add client_overrides directory in configuration file. You must configure it in your production.yaml. Deprecate /videos/abuse endpoint. A new endpoint to report videos will be created in PeerTube 2.4 and will also allow to report accounts and comments (/videos/abuse will be removed in 3.0). Renamed videos blacklist feature to videos blocks/blocklist. Add feeds routes to the openapi spec @rigelk. Add notifications routes to the openapi spec @rigelk. Add redundancy routes to the openapi spec @rigelk. Add plugins routes to the openapi spec @rigelk. Add examples, descriptions and missing filters for abuses routes in the openapi spec @rigelk. Update CentOS insutructions in dependencies.md @cgarwood82 in 2904. Switched image processing library from native dependency sharp to pure JS implementation jimp. Admins don't have to compile sharp anymore and jimp is lighter. Provide specific engine boundaries for NodeJS and Yarn @rigelk in 0c4bacb. Add ability to set database.name config option @gramakri in #2898. POSTGRES env variables in docker-compose. OpenDKIM permissions in docker-compose setup @kimsible in #2868. Auto block videos (alpha). Add ability to override client assets: logo - favicon - PWA icons - PWA manifest name and description @kimsible in #2897. Add global search support (has to be explicitely enabled by admins). Add ability for admins to display a banner on their instance. Support Vietnamese and Kabyle languages. Also re-establish Occitan language locale despite lack of support in Angular. Federation: Make federation of unlisted videos an instance-level server preference @Tak in #2802 Sort ActivityPub video object files by resolution in descending order Send complete video description in ActivityPub video objects . Make federation of unlisted videos an instance-level server preference @Tak in #2802. Sort ActivityPub video object files by resolution in descending order. Send complete video description in ActivityPub video objects. Moderation: Add abilit
2.3.022 Jul 2020 06:05 minor feature: Add client_overrides directory in configuration file. You must configure it in your production.yaml. Deprecate /videos/abuse endpoint. A new endpoint to report videos will be created in PeerTube 2.4 and will also allow to report accounts and comments (/videos/abuse will be removed in 3.0). Renamed videos blacklist feature to videos blocks/blocklist. Add feeds routes to the openapi spec @rigelk. Add notifications routes to the openapi spec @rigelk. Add redundancy routes to the openapi spec @rigelk. Add plugins routes to the openapi spec @rigelk. Add examples, descriptions and missing filters for abuses routes in the openapi spec @rigelk. Update CentOS insutructions in dependencies.md @cgarwood82 in 2904. Switched image processing library from native dependency sharp to pure JS implementation jimp. Admins don't have to compile sharp anymore and jimp is lighter. Provide specific engine boundaries for NodeJS and Yarn @rigelk in 0c4bacb. Add ability to set database.name config option @gramakri in #2898. POSTGRES env variables in docker-compose. OpenDKIM permissions in docker-compose setup @kimsible in #2868. Auto block videos (alpha). Add ability to override client assets: logo - favicon - PWA icons - PWA manifest name and description @kimsible in #2897. Add global search support (has to be explicitely enabled by admins). Add ability for admins to display a banner on their instance. Support Vietnamese and Kabyle languages. Also re-establish Occitan language locale despite lack of support in Angular. Federation: Make federation of unlisted videos an instance-level server preference @Tak in #2802 Sort ActivityPub video object files by resolution in descending order Send complete video description in ActivityPub video objects . Make federation of unlisted videos an instance-level server preference @Tak in #2802. Sort ActivityPub video object files by resolution in descending order. Send complete video description in ActivityPub video objects. Moderation: Add abilit
2.3.0-rc.107 Jul 2020 19:05 minor feature: /! VERY IMPORTANT /! We added a unique index on actors usernames to some federation. Please check now if you have conflicts: Go inside your database using sudo -u postgres psql peertube_prod and run select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) 1; If you have some results, it seems you have duplicate channels/accounts. For every entry, you'll have to change the preferredUsername of the entry you want (so they are unique). The updated actors could have some federations. Go inside your database using sudo -u postgres psql peertube_prod and run select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) 1;. If you have some results, it seems you have duplicate channels/accounts. For every entry, you'll have to change the preferredUsername of the entry you want (so they are unique). The updated actors could have some federations. Changed auto_follow_index setting configuration: you now have to use the complete URL in index_url. If you used the default one, you now need to use https://instances.joinpeertube.org/api/v1/instances/hosts. This way, you can also use a direct raw URL (Gitlab, Github, pastebin, etc.) using a simple text format and easily maintain small communities or instance recommendation lists. PeerTube requires NodeJS v10 or v12. Add redundancy CLI: https://docs.joinpeertube.org/#/maintain-tools?id=peertube-redundancyjs. Add ability to pass remaining options to youtube-dl binary in peertube-import script. Important HLS storage configuration: https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/config/production.yaml#L48. Add DKIM support to Docker. Add nginx configuration to redirect videos to an S3 bucket and update of the corresponding documentation. Add embed API (https://docs.joinpeertube.org/#/api-embed-player): playbackState can be ended playbackStatusUpdate has a duration field setCaption and getCaptions method
2.2.003 Jun 2020 18:25 minor feature: /! VERY IMPORTANT /! We added a unique index on actors usernames to some federation. Please check now if you have conflicts: Go inside your database using sudo -u postgres psql peertube_prod and run select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) 1; If you have some results, it seems you have duplicate channels/accounts. For every entry, you'll have to change the preferredUsername of the entry you want (so they are unique). The updated actors could have some federations. Go inside your database using sudo -u postgres psql peertube_prod and run select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) 1;. If you have some results, it seems you have duplicate channels/accounts. For every entry, you'll have to change the preferredUsername of the entry you want (so they are unique). The updated actors could have some federations. Changed auto_follow_index setting configuration: you now have to use the complete URL in index_url. If you used the default one, you now need to use https://instances.joinpeertube.org/api/v1/instances/hosts. This way, you can also use a direct raw URL (Gitlab, Github, pastebin, etc.) using a simple text format and easily maintain small communities or instance recommendation lists. PeerTube requires NodeJS v10 or v12. Add redundancy CLI: https://docs.joinpeertube.org/#/maintain-tools?id=peertube-redundancyjs. Add ability to pass remaining options to youtube-dl binary in peertube-import script. Important HLS storage configuration: https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/config/production.yaml#L48. Add DKIM support to Docker. Add nginx configuration to redirect videos to an S3 bucket and update of the corresponding documentation. Add embed API (https://docs.joinpeertube.org/#/api-embed-player): playbackState can be ended playbackStatusUpdate has a duration field setCaption and getCaptions method
2.2.0-rc.119 May 2020 19:45 minor feature: Youtube-dl in docker image. Playlist creation/update. Fetch of instance config in client. Manual approves followers only for the instance (and not accounts/channels). Avatar update. CSP for embeds. Scroll of the menu on mobile. CPU usage of PostgreSQL. Embed for iOS.
2.1.128 Feb 2020 14:45 minor feature: Youtube-dl in docker image. Playlist creation/update. Fetch of instance config in client. Manual approves followers only for the instance (and not accounts/channels). Avatar update. CSP for embeds. Scroll of the menu on mobile. CPU usage of PostgreSQL. Embed for iOS.
2.1.012 Feb 2020 20:25 minor feature: /! VERY IMPORTANT /! You need to execute manually a script (can be executed after your upgrade, while your PeerTube instance is running) to create HLS video torrents: cd /var/www/peertube/peertube-latest sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-2.1.js . cd /var/www/peertube/peertube-latest sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-2.1.js. /! VERY IMPORTANT /! In the next PeerTube release (v2.2.0), we'll add a unique index on actors usernames to some federation. Please check now if you have conflicts using: Go inside your database using sudo -u postgres psql peertube_prod and run select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) 1; If you have some results, it seems you have duplicate channels/accounts. For every entry, you'll have to change the preferredUsername of the entry you want (so they are unique). The updated actors could have some federations. Go inside your database using sudo -u postgres psql peertube_prod and run select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) 1;. If you have some results, it seems you have duplicate channels/accounts. For every entry, you'll have to change the preferredUsername of the entry you want (so they are unique). The updated actors could have some federations. We now use Buster for the docker image, so the image name changed: production-stretch becomes production-buster v2.x.x-stretch becomes v2.x.x-buster . production-stretch becomes production-buster. v2.x.x-stretch becomes v2.x.x-buster. Users cannot create more than 20 channels now to avoid UX and actor name squatting. We added a warning if the videos directory is the same than the redundancy one in your configuration file: it can create some. S3 remote storage: https://docs.joinpeertube.org/#/admin
2.1.0-rc.128 Jan 2020 13:45 minor feature: Removed old JSON LD signature implementation. There will be some federation incompatibilities with forwarded activities sent by PeerTube instances v2.0.0. Replaced configuration key email.object with email.subject: 916937d. Add plugin hook on registration filter:api.user.signup.allowed.result. traefik version docker compose (you need to update your docker-compose.yml file: f1b3888). Add --tmpdir, --first, --last and --verbose level parameters to peertube-import-videos script (Yetangitu). Improve REST API documentation. Improve plugin management documentation. Better instance admin responsibility: Add ability to set more information about your instance. This will be used in the future on https://joinpeertube.org to help people find the appropriate PeerTube instance on which they can register: Main Categories Languages you/your moderators speak Code of Conduct Moderation information (who moderates your instance, NSFW policy etc) Who is behind the instance (a single person? non-profit?) Why did the admin create this instance How long the admin plan to maintain the instance How the administrator will finance the PeerTube server Hardware information Add these information in the about page and in the signup page. Add a welcome modal at first admin login with some explanations of PeerTube and some useful links Add warning modal when administrators enable or enabled signup but did not fill some important instance information (for now the instance name, terms, administrator and maintenance lifetime information). . Add ability to set more information about your instance. This will be used in the future on https://joinpeertube.org to help people find the appropriate PeerTube instance on which they can register: Main Categories Languages you/your moderators speak Code of Conduct Moderation information (who moderates your instance, NSFW policy etc) Who is behind the instance (a single person? non-profit?) Why did the admin create this instance How long the admin plan to m
2.0.013 Nov 2019 13:35 major feature: Features Better instance admin responsibility: Add ability to set more information about your instance. This will be used in the future on https://joinpeertube.org to help people find the appropriate PeerTube instance on which they can register: Main Categories Languages you/your moderators speak Code of Conduct Moderation information (who moderates your instance, NSFW policy etc) Who is behind the instance (a single person? non-profit?) Why did the admin create this instance How long the admin plan to maintain the instance How the administrator will finance the PeerTube server Hardware information Add these information in the about page and in the signup page Add a welcome modal at first admin login with some explanations of PeerTube and some useful links Add warning modal when administrators enable or enabled signup but did not fill some important instance information (for now the instance name, terms, administrator and maintenance lifetime information) Add ability to automatically follow back other instances Add ability to automatically follow the public registry instances Add Most liked videos page (@alcalyn) Add a drag drop delay on playlist videos to allow user scroll on small screens (@alcalyn) Allow to toggle video publication date to display absolute date (@alcalyn) Add statistics in about page (@alcalyn) Improve the feature table in about page Add contributors in about page Clearer warning of IP address leaking on embedded videos (@robinkooli) Case insensitive search on video tags Add video name in "video publish notification" Add ability to autoplay next recommended video (opt in) (@LoveIsGrief) Add link behind the subscribe via RSS button (@frankstrater) Support text/plain caption files Speedup theme injection Add ability to enable H