Commit Graph

980 Commits (0af1cb0254b66e3ff3665f003a6e0e2ee61db72e)

Author SHA1 Message Date
Chocobozzz 89becbcb37
Add missing playbackRate URL param doc 2023-06-29 10:19:33 +02:00
Chocobozzz bafaba0bcd
Support lazy download of remote video miniatures 2023-06-29 10:19:33 +02:00
Chocobozzz f162d32da0
Support lazy download thumbnails 2023-06-29 10:19:33 +02:00
Chocobozzz c37e305342
Fix CI tests 2023-06-29 10:19:05 +02:00
Chocobozzz 9c5cc50133
Add script to generate storyboards 2023-06-29 10:16:57 +02:00
Chocobozzz d8f39b126d
Add storyboard support 2023-06-29 10:16:55 +02:00
Wicklow 40346ead2b
Feature/password protected videos (#5836)
* Add server endpoints

* Refactoring test suites

* Update server and add openapi documentation

* fix compliation and tests

* upload/import password protected video on client

* add server error code

* Add video password to update resolver

* add custom message when sharing pw protected video

* improve confirm component

* Add new alert in component

* Add ability to watch protected video on client

* Cannot have password protected replay privacy

* Add migration

* Add tests

* update after review

* Update check params tests

* Add live videos test

* Add more filter test

* Update static file privacy test

* Update object storage tests

* Add test on feeds

* Add missing word

* Fix tests

* Fix tests on live videos

* add embed support on password protected videos

* fix style

* Correcting data leaks

* Unable to add password protected privacy on replay

* Updated code based on review comments

* fix validator and command

* Updated code based on review comments
2023-06-29 09:48:55 +02:00
Chocobozzz ca91a74b87
Improve responsive on medium destkop screens 2023-05-26 11:18:02 +02:00
Chocobozzz a4c49a17ea
Add missing tests env doc 2023-05-26 09:52:50 +02:00
Chocobozzz f474a519dc
Specify runner name when unregistering the runner 2023-05-26 09:04:22 +02:00
Alecks Gates cb0eda5602
Add Podcast RSS feeds (#5487)
* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Add correct feed image to RSS channel

* Prefer HLS videos for podcast RSS

Remove video/stream titles, add optional height attribute to podcast RSS

* Prefix podcast RSS images with root server URL

* Add optional video query support to include captions

* Add transcripts & person images to podcast RSS feed

* Prefer webseed/webtorrent files over HLS fragmented mp4s

* Experimentally adding podcast fields to basic config page

* Add validation for new basic config fields

* Don't include "content" in podcast feed, use full description for "description"

* Initial test implementation of Podcast RSS

This is a pretty simple implementation to add support for The Podcast Namespace in RSS -- instead of affecting the existing RSS implementation, this adds a new UI option.

I attempted to retain compatibility with the rest of the RSS feed implementation as much as possible and have created a temporary fork of the "pfeed" library to support this effort.

* Update to pfeed-podcast 1.2.2

* Add correct feed image to RSS channel

* Prefer HLS videos for podcast RSS

Remove video/stream titles, add optional height attribute to podcast RSS

* Prefix podcast RSS images with root server URL

* Add optional video query support to include captions

* Add transcripts & person images to podcast RSS feed

* Prefer webseed/webtorrent files over HLS fragmented mp4s

* Experimentally adding podcast fields to basic config page

* Add validation for new basic config fields

* Don't include "content" in podcast feed, use full description for "description"

* Add medium/socialInteract to podcast RSS feeds. Use HTML for description

* Change base production image to bullseye, install prosody in image

* Add liveItem and trackers to Podcast RSS feeds

Remove height from alternateEnclosure, replaced with title.

* Clear Podcast RSS feed cache when live streams start/end

* Upgrade to Node 16

* Refactor clearCacheRoute to use ApiCache

* Remove unnecessary type hint

* Update dockerfile to node 16, install python-is-python2

* Use new file paths for captions/playlists

* Fix legacy videos in RSS after migration to object storage

* Improve method of identifying non-fragmented mp4s in podcast RSS feeds

* Don't include fragmented MP4s in podcast RSS feeds

* Add experimental support for podcast:categories on the podcast RSS item

* Fix undefined category when no videos exist

Allows for empty feeds to exist (important for feeds that might only go live)

* Add support for podcast:locked -- user has to opt in to show their email

* Use comma for podcast:categories delimiter

* Make cache clearing async

* Fix merge, temporarily test with pfeed-podcast

* Syntax changes

* Add EXT_MIMETYPE constants for captions

* Update & fix tests, fix enclosure mimetypes, remove admin email

* Add test for podacst:socialInteract

* Add filters hooks for podcast customTags

* Remove showdown, updated to pfeed-podcast 6.1.2

* Add 'action:api.live-video.state.updated' hook

* Avoid assigning undefined category to podcast feeds

* Remove nvmrc

* Remove comment

* Remove unused podcast config

* Remove more unused podcast config

* Fix MChannelAccountDefault type hint missed in merge

* Remove extra line

* Re-add newline in config

* Fix lint errors for isEmailPublic

* Fix thumbnails in podcast feeds

* Requested changes based on review

* Provide podcast rss 2.0 only on video channels

* Misc cleanup for a less messy PR

* Lint fixes

* Remove pfeed-podcast

* Add peertube version to new hooks

* Don't use query include, remove TODO

* Remove film medium hack

* Clear podcast rss cache before video/channel update hooks

* Clear podcast rss cache before video uploaded/deleted hooks

* Refactor podcast feed cache clearing

* Set correct person name from video channel

* Styling

* Fix tests

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-05-22 16:00:05 +02:00
Chocobozzz def4ea4f38
More robust chunk handler 2023-05-19 13:52:38 +02:00
Chocobozzz d381e967c4
Add nginx config to receive runner job results 2023-05-17 14:58:29 +02:00
Chocobozzz 77666e3433
Fix docker compose guide 2023-05-16 10:38:04 +02:00
Chocobozzz 0d6a8289fb
Better runner error UX when server is not run 2023-05-16 09:27:49 +02:00
Chocobozzz 76ad705ecb
Add peertube-runner CLI doc 2023-05-09 11:20:08 +02:00
Chocobozzz 6a49056026 Add TMP persistent directory
To store files that must be preserved between peertube restarts
2023-05-09 08:57:34 +02:00
Chocobozzz 94bb740b49 Add runner jobs openapi 2023-05-09 08:57:34 +02:00
Chocobozzz 18c53ef949 Fix activitypub doc URL 2023-05-09 08:57:34 +02:00
Chocobozzz b708c9e464 Update tools doc 2023-05-09 08:57:34 +02:00
Chocobozzz 3f9f1bceb6
Breaking: docker requires compose v2 2023-04-14 09:31:04 +02:00
Wicklow 2a4c0d8bbe
Feature/filter already watched videos (#5739)
* filter already watched videos

* Updated code based on review comments
2023-04-12 09:32:20 +02:00
Joël Galeran 3458e8ba0d
feat(docker): make database name configurable (#5734)
* feat(docker): make database name configurable

WIP
Related https://github.com/Chocobozzz/PeerTube/issues/5708

* Update .env

* PEERTUBE_DB_NAME & add comments
2023-04-07 10:52:49 +02:00
Wicklow b302c80dc0
feature/ability to disable video history by default (#5728)
* draft: ability to disable video history by default

* Update configuration and add tests

* Updated code based on review comments

* Add tests on registration and video quota

* Remove required video quotas in query

* Fix tests
2023-04-07 10:09:54 +02:00
Chocobozzz 00ee545c24
Remove $ for bash commands
It prevents easy copy
2023-04-04 09:18:06 +02:00
Wicklow 05a60d8599
Feature/Add replay privacy (#5692)
* Add replay settings feature

* Fix replay settings behaviour

* Fix tests

* Fix tests

* Fix tests

* Update openapi doc and fix tests

* Add tests and fix code

* Models correction

* Add migration and update controller and middleware

* Add check params tests

* Fix video live middleware

* Updated code based on review comments
2023-03-31 09:12:21 +02:00
Chocobozzz 47d883de2e
Merge branch 'release/5.1.0' into develop 2023-03-16 14:24:50 +01:00
Chocobozzz 016b887802
Add custom sequelize model types documentation 2023-03-16 14:24:26 +01:00
Chocobozzz 11c834bdba
Add server code new feature walkthrough 2023-03-16 14:15:33 +01:00
Chocobozzz c3441b0320
Add video AP hooks 2023-03-16 10:36:33 +01:00
Chocobozzz ca829e9a83
Deprecate node 14 2023-03-15 09:38:24 +01:00
Chocobozzz 4857f887f7
Fix plugin guide 2023-03-10 10:06:29 +01:00
Chocobozzz a3e5f7e732
Add missing docker env for object storage config 2023-03-07 10:32:43 +01:00
Chocobozzz 393f9d396c
Add redis version note 2023-02-28 11:45:57 +01:00
Chocobozzz 5b94394a1a
Fix E2E with firefox 2023-02-27 11:58:35 +01:00
Wicklow 700e24197a Add missing requirements on email in OpenAPI 2023-02-23 16:07:44 +01:00
Wicklow 16ccb43767 Fix filters on playlists 2023-02-23 16:07:44 +01:00
Chocobozzz f44cd95c01
Update doc anchor links 2023-02-23 09:46:43 +01:00
Chocobozzz c5c95361e6
Move to new documentation links 2023-02-22 16:15:14 +01:00
Chocobozzz 6a160a0c9d
Fix embed doc title hierarchy 2023-02-22 16:06:25 +01:00
Chocobozzz 2426fe16ae
Typo 2023-02-22 10:50:01 +01:00
Chocobozzz 1ab94472d5
Prefer absolute links in doc 2023-02-22 10:46:12 +01:00
Chocobozzz 954dcefab3
Fix translation doc 2023-02-22 10:40:11 +01:00
Chocobozzz aaaaa0090e
Fix list registrations api doc 2023-02-16 16:24:47 +01:00
Chocobozzz 597032cbd5
Fix channel update/create openapi doc 2023-02-15 16:08:37 +01:00
Nuño Sempere c092b8637f Pointer to Debian guide on how to add a sudo user 2023-02-13 09:31:12 +01:00
ruvilonix 85ae729151 Update docker.md
1. I don't know if you're supposed to do something other than enter `$EDITOR ./docker-compose.yml` into terminal, but when I did that it gave a permission error, so I just used nano. Same with `.env`.

2. Newer versions of Docker Compose use the command `docker compose`, not `docker-compose`. 

3. Grepping the password from logs was not working. I looked at the full logs, and I didn't see anything about a password. I added how to set a custom password. Maybe the grepping part should be removed or changed to make it work.
2023-02-13 09:30:51 +01:00
Chocobozzz 4115f20084
Add ability to not send an email for registration 2023-01-20 15:34:01 +01:00
Chocobozzz 3e5716dd3a Add signup approval API REST doc 2023-01-19 13:53:40 +01:00
Chocobozzz 6905da7ae9
Add note regarding changelog for docker upgrade 2023-01-09 10:46:21 +01:00
Chocobozzz 60b880acdf
External auth can update user on login 2023-01-04 11:41:29 +01:00
Chocobozzz cf7045bfd7
Remove dead link 2022-12-30 15:33:05 +01:00
Chocobozzz 7a07da01c4
Improve upgrade documentation 2022-12-28 10:29:37 +01:00
Chocobozzz 7dcd45a9a2
Don't not autoplay live without autoplay setting 2022-12-14 14:06:12 +01:00
Chocobozzz 71e3e879c0
Support reinjecting token in private m3u8 playlist 2022-12-02 15:25:20 +01:00
Chocobozzz 3299c9e124
Add missing uuids search query doc 2022-11-23 15:50:42 +01:00
John Livingston fbe3fa54b4 Fix: missing peertube version in documentation 2022-11-02 10:39:40 +01:00
Chocobozzz 9e5cf66be7
Breaking API: Consistency with role id/label 2022-10-28 16:34:08 +02:00
Chocobozzz 6689214920
Add a note about worker_connections in doc 2022-10-26 11:22:30 +02:00
Chocobozzz 216fa9d579
Update nginx template
Add rate limit to download and private static files
2022-10-25 15:48:00 +02:00
Chocobozzz 3545e72c68 Put private videos under a specific subdirectory 2022-10-24 14:48:24 +02:00
Chocobozzz 9d4c60dccc
Add ability for plugins to register ws routes 2022-10-11 11:11:04 +02:00
Chocobozzz 1ea868a945
Fill documentation with required secret conf 2022-10-10 11:19:45 +02:00
Chocobozzz a69ea13086
Add open api doc for two factor auth 2022-10-07 14:53:30 +02:00
kontrollanten 6c5f0d3aeb
server: serve files from storage/well-known (#5214)
* server: serve files from storage/well-known

closes #5206

* well-known: add tests

* test: try to skip new tests

* test: another try

* fix(config/prod): well_known path

* test: fix broken tests

* Update misc-endpoints.ts

* Use getDirectoryPath for tests

* Fix tests

Co-authored-by: Chocobozzz <me@florianbigard.com>
2022-10-04 10:53:00 +02:00
Chocobozzz cfd57d2ca0
Live supports object storage
* Sync live files (segments, master playlist, resolution playlist,
   segment sha file) into object storage
 * Automatically delete them when the live ends
 * Segment sha file is now a file on disk, and not stored in memory
   anymore
2022-10-04 10:03:17 +02:00
Chocobozzz e76daa7301
Update doc
We use IMPORTANT NOTES instead of BREAKING CHANGES now
2022-09-28 08:29:39 +02:00
Chocobozzz aca96f8007
Support only ffmpeg >= 4.3
We have issues with video import when merging vp9 in mp4 container with
lower versions
2022-09-27 11:12:40 +02:00
Chocobozzz 9ef3aeac37
Update dependencies version supported by peertube 2022-09-27 10:45:50 +02:00
John Livingston 56162c6a06 Adding peertube-plugin-quickstart-typescript in the documentation. 2022-09-16 10:20:04 +02:00
Thomas Kuntz 927d14bd26 Escape % signs in crontab example (CLI tools docs)
% is a special character for crontab. From man 5 crontab: A "%" character in the command, unless escaped with a backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
2022-09-16 10:19:41 +02:00
Chocobozzz 9f244885f0
Update release.md process 2022-09-13 10:33:57 +02:00
Chocobozzz a3de59ab72
Update dependencies to use node 16 2022-09-09 14:10:02 +02:00
Chocobozzz 914af0d9e4
Add missing removeEventListener doc 2022-09-09 11:40:14 +02:00
Chocobozzz e15ce63041
Add @peertube/embed-api release doc 2022-09-09 11:38:51 +02:00
Chocobozzz fd3c2e8705
Add playback metric endpoint sent to OTEL 2022-08-16 10:33:27 +02:00
Florent 045224d5eb Allow continusously printing logs through tail and parse-log 2022-08-16 10:32:53 +02:00
Chocobozzz b1053a30f6
Add ability to use docker on local 2022-08-11 10:43:31 +02:00
Chocobozzz 87cd93970d
Add missing openapi 2022-08-10 14:57:26 +02:00
Chocobozzz a3b472a12e
Add ability to list imports of a channel sync 2022-08-10 14:32:00 +02:00
Florent 2a491182e4
Channel sync (#5135)
* Add external channel URL for channel update / creation (#754)

* Disallow synchronisation if user has no video quota (#754)

* More constraints serverside (#754)

* Disable sync if server configuration does not allow HTTP import (#754)

* Working version synchronizing videos with a job (#754)

TODO: refactoring, too much code duplication

* More logs and try/catch (#754)

* Fix eslint error (#754)

* WIP: support synchronization time change (#754)

* New frontend #754

* WIP: Create sync front (#754)

* Enhance UI, sync creation form (#754)

* Warning message when HTTP upload is disallowed

* More consistent names (#754)

* Binding Front with API (#754)

* Add a /me API (#754)

* Improve list UI (#754)

* Implement creation and deletion routes (#754)

* Lint (#754)

* Lint again (#754)

* WIP: UI for triggering import existing videos (#754)

* Implement jobs for syncing and importing channels

* Don't sync videos before sync creation + avoid concurrency issue (#754)

* Cleanup (#754)

* Cleanup: OpenAPI + API rework (#754)

* Remove dead code (#754)

* Eslint (#754)

* Revert the mess with whitespaces in constants.ts (#754)

* Some fixes after rebase (#754)

* Several fixes after PR remarks (#754)

* Front + API: Rename video-channels-sync to video-channel-syncs (#754)

* Allow enabling channel sync through UI (#754)

* getChannelInfo (#754)

* Minor fixes: openapi + model + sql (#754)

* Simplified API validators (#754)

* Rename MChannelSync to MChannelSyncChannel (#754)

* Add command for VideoChannelSync (#754)

* Use synchronization.enabled config (#754)

* Check parameters test + some fixes (#754)

* Fix conflict mistake (#754)

* Restrict access to video channel sync list API (#754)

* Start adding unit test for synchronization (#754)

* Continue testing (#754)

* Tests finished + convertion of job to scheduler (#754)

* Add lastSyncAt field (#754)

* Fix externalRemoteUrl sort + creation date not well formatted (#754)

* Small fix (#754)

* Factorize addYoutubeDLImport and buildVideo (#754)

* Check duplicates on channel not on users (#754)

* factorize thumbnail generation (#754)

* Fetch error should return status 400 (#754)

* Separate video-channel-import and video-channel-sync-latest (#754)

* Bump DB migration version after rebase (#754)

* Prettier states in UI table (#754)

* Add DefaultScope in VideoChannelSyncModel (#754)

* Fix audit logs (#754)

* Ensure user can upload when importing channel + minor fixes (#754)

* Mark synchronization as failed on exception + typos (#754)

* Change REST API for importing videos into channel (#754)

* Add option for fully synchronize a chnanel (#754)

* Return a whole sync object on creation to avoid tricks in Front (#754)

* Various remarks (#754)

* Single quotes by default (#754)

* Rename synchronization to video_channel_synchronization

* Add check.latest_videos_count and max_per_user options (#754)

* Better channel rendering in list #754

* Allow sorting with channel name and state (#754)

* Add missing tests for channel imports (#754)

* Prefer using a parent job for channel sync

* Styling

* Client styling

Co-authored-by: Chocobozzz <me@florianbigard.com>
2022-08-10 09:53:39 +02:00
Florent ed09acf14b document parallel depedency and how to install it
Also document how to install exiftool
2022-08-01 16:06:39 +02:00
Chocobozzz f9079a78bd
Add studio API documentation 2022-08-01 15:50:15 +02:00
Chocobozzz 12d84abeca
Include video file id in API 2022-07-29 11:33:27 +02:00
Chocobozzz a6c554fb6e
Remove redundant section 2022-07-20 15:56:51 +02:00
Chocobozzz 42b4063699
Add ability for client to create server logs 2022-07-18 11:37:18 +02:00
Chocobozzz b44b5a83eb
Add /server/stats API documentation 2022-07-12 14:17:37 +02:00
Chocobozzz 9452d4fd33
/!\ Use a dedicated config file for development
It means you have to replace NODE_ENV=test to NODE_ENV=dev if you use it
npm run dev:* commands are already updated
2022-07-06 16:12:17 +02:00
Chocobozzz 4c8336af67
Update embed URL query doc 2022-06-28 14:49:05 +02:00
slendermon 383dbdec67
Centos 8 (#5075)
* Centos 8

Centos 8

* Document

Document centos 8 fixing

* Document fix centos 8 

Bad spacing fix
2022-06-23 12:00:33 +02:00
kontrollanten 2e401e8575
store uploaded video filename (#4885)
* store uploaded video filename

closes #4731

* dont crash if videos channel exist

* migration: use raw query

* video source: fixes after code review

* cleanup

* bump migration

* updates after code review

* refactor: use checkUserCanManageVideo

* videoSource: add openapi doc

* test(check-params/video-source): fix timeout

* Styling

* Correctly set original filename as source

Co-authored-by: Chocobozzz <me@florianbigard.com>
2022-06-21 15:31:25 +02:00
J Webb dec4952155
Ensure peertube root directory is setup to be traversed by nginx (#5028)
* Update production.md

On Ubuntu 22.04, the dir `/var/www/peertube` is restricted to user peertube & group peertube. This causes issues with many of the subsequent sudo commands, and also results in white-screen on initial visit to the site due to JS files not being accessible. This PR loosens those requirements, but maybe would be better if nginx is just added to peertube group? This is my first time installing PeertTube, so I'll defer to someone with more knowledge of this framework to vet the approach here.

* Set specific mode on peertube root directory

* Minor fixup

* Prefer ls instead of chmod to check directory

Co-authored-by: Chocobozzz <me@florianbigard.com>
2022-06-21 14:40:53 +02:00
Chocobozzz 2b621ac0eb
Merge branch 'release/4.2.0' into develop 2022-06-21 09:03:20 +02:00
Chocobozzz 5b2ede7d55
Fix docker user entrypoint 2022-06-21 08:47:39 +02:00
John Livingston 7f6ff46222 Implement 5036: more readable diff on configuration file when upgrading. 2022-06-13 15:59:22 +02:00
dingycle ac30ddd739 fix(doc): fix links to 'anchors' in install doc 2022-06-10 11:15:19 +02:00
luz paz 7a4fd56ccd Fix various typos
Found via `codespell -q 3 -S ./CREDITS.md,./CHANGELOG.md,./client/src/locale,./yarn.lock,./client/yarn.lock -L doubleclick,followings,nd,ot,ro,serie,splitted,tread,truthy`
2022-06-07 16:41:21 +02:00
Florian CUNY c6f8ca4d65
Added "total views" in the my channels list (#5007)
* Added "total views" in the my channels list

Implements https://github.com/Chocobozzz/PeerTube/issues/4331

* Fix lint

* applied suggested change

* updated openAPI spec for the use "withStats" when getting video channels

* applied code change

* removed GROUP BY in query

* Fixed test
2022-05-31 16:01:11 +02:00
Chocobozzz c501cdef27
Add nginx update to changelog 2022-05-24 16:39:19 +02:00
Chocobozzz 09f33366a7
Add note about dev mode when testing a plugin 2022-05-23 09:09:31 +02:00