Commit Graph

263 Commits

Author SHA1 Message Date
Chocobozzz 7fa9004f4c
Add note to split audio/video config 2024-09-13 08:58:55 +02:00
Chocobozzz d24d221550
Add SSRF protection 2024-08-14 15:33:57 +02:00
Chocobozzz e6de476ae8
Add ability to disable federation 2024-08-14 14:12:37 +02:00
Chocobozzz 38dbafcf63
Support youtube-dl executables
Also disable youtube tests in CI due to youtube blocking
2024-08-13 14:20:08 +02:00
Chocobozzz 5439a591e0
Add ability to set proxies to youtube-dl 2024-08-13 10:49:31 +02:00
Chocobozzz a955a11e4b
Better config comments for instance categories/languages 2024-08-13 09:38:36 +02:00
Chocobozzz bbaf96d60d
Support max FPS configuration 2024-08-13 09:38:36 +02:00
Chocobozzz 816f346a60 Separate HLS audio and video streams
Allows:
  * The HLS player to propose an "Audio only" resolution
  * The live to output an "Audio only" resolution
  * The live to ingest and output an "Audio only" stream

 This feature is under a config for VOD videos and is enabled by default for lives

 In the future we can imagine:
  * To propose multiple audio streams for a specific video
  * To ingest an audio only VOD and just output an audio only "video"
    (the player would play the audio file and PeerTube would not
    generate additional resolutions)

This commit introduce a new way to download videos:
 * Add "/download/videos/generate/:videoId" endpoint where PeerTube can
   mux an audio only and a video only file to a mp4 container
 * The download client modal introduces a new default panel where the
   user can choose resolutions it wants to download
2024-08-05 08:31:59 +02:00
Chocobozzz af73531e3a
Add large-v2 model info 2024-07-15 08:27:37 +02:00
Chocobozzz f81bc3d3dc
Relax client log rate limiting 2024-07-02 09:43:07 +02:00
Chocobozzz 1bfb791e05
Integrate transcription in PeerTube 2024-06-28 08:44:58 +02:00
kontrollanten ca26687e1f
feat: config option object_storage.max_request_attempts (#6418)
* feat: config option object_storage.max_attempts

Backblaze recommends to have a high amount of attempts since they've
designed their architecture so that it will return 5xx errors to
indicate that the client should do a new attempt.

https://www.backblaze.com/blog/b2-503-500-server-error/

closes #6415

* Rephrase comment

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-06-11 13:57:18 +02:00
Chocobozzz 1e3a5b25c3
Plan to have multiple sizes in the future 2024-05-31 09:02:34 +02:00
Chocobozzz 5e01c9c9a7
Check latest plugin versions every 4 hours
12 hours is too much for important plugin releases
2024-05-30 16:59:38 +02:00
Chocobozzz 29329d6c45 Implement auto tag on comments and videos
* Comments and videos can be automatically tagged using core rules or
   watched word lists
 * These tags can be used to automatically filter videos and comments
 * Introduce a new video comment policy where comments must be approved
   first
 * Comments may have to be approved if the user auto block them using
   core rules or watched word lists
 * Implement FEP-5624 to federate reply control policies
2024-05-29 15:03:14 +02:00
Skid 0a43de655a Fix typo at log.rotation.enabled 2024-05-15 16:16:25 +02:00
Chocobozzz 5cb3e6a0b8
Use sessionId instead of IP to identify viewer
Breaking: YAML config `ip_view_expiration` is renamed `view_expiration`
Breaking: Views are taken into account after 10 seconds instead of 30
seconds (can be changed in YAML config)

Purpose of this commit is to get closer to other video platforms where
some platforms count views on play (mux, vimeo) or others use a very low
delay (instagram, tiktok)

We also want to improve the viewer identification, where we no longer
use the IP but the `sessionId` generated by the web browser. Multiple
viewers behind a NAT can now be able to be identified as independent
viewers (this method is also used by vimeo or mux)
2024-04-04 16:27:40 +02:00
Chocobozzz 302fd93c49
Disable http metrics by default
Can lead to performance issues on prometheus side and peertube side if
many different URLs have been called on peertube side (google indexation
for example)
2024-03-19 14:52:41 +01:00
chagai95 e57c3024f4
Add config option to keep original video file (basic first version) (#6157)
* testing not removing old file and adding columb to db

* implement feature

* remove unnecessary config changes

* use only keptOriginalFileName, change keptOriginalFileName to keptOriginalFilename for consistency with with videoFile table, slight refactor with basename()

* save original video files to dedicated directory original-video-files

* begin implementing object storage (bucket) support

---------

Co-authored-by: chagai.friedlander <chagai.friedlander@fairkom.eu>
Co-authored-by: Ian <ian.kraft@hotmail.com>
Co-authored-by: Chocobozzz <me@florianbigard.com>
2024-03-15 15:47:18 +01:00
Chocobozzz 10e78bb778
Remove twitter whitelisted option
It doesn't seem to be required
2024-03-08 10:54:29 +01:00
Chocobozzz 68d006b6fc
Add config to disable storing lives in s3 2024-02-26 16:14:40 +01:00
Chocobozzz 0165786f65
Add total moderators/admins in stats 2024-02-23 15:04:18 +01:00
Chocobozzz db69d9491e
Add abuse and registration requests stats 2024-02-21 14:57:20 +01:00
Chocobozzz 8573e5a80a Implement user import/export in server 2024-02-21 13:49:08 +01:00
Chocobozzz 9489b536a2
Add warning for s3 provider support 2024-01-26 17:20:07 +01:00
Chocobozzz 4cbea51255
Add subdivision to viewer stats 2023-12-28 09:56:05 +01:00
Chocobozzz b9077c83fc
Add ability to disable storyboards 2023-12-27 10:39:09 +01:00
Chocobozzz fe37e5232b
Add ability to customize views/playback interval 2023-12-20 10:55:47 +01:00
Chocobozzz 2bc4d26b94
Add ability to customize frames to analyze 2023-11-08 10:18:39 +01:00
Chocobozzz 1ba8bbded0
Also use 127.0.0.1 for database and redis
Node 18 can resolve localhost to IPv6 address, where postgresql and/or
redis may listen on IPv4 only
2023-11-07 10:41:08 +01:00
Chocobozzz 90db2b3aed
Add ability to disable HTTP logs 2023-10-24 10:57:41 +02:00
Wicklow ea6c2b064f
Allow to change the default channel name (#6000)
* Allow to change the default channel name

* Fix tests

* Fix tests

* Fix tests
2023-10-19 15:22:00 +02:00
Chocobozzz 822872aacd
Don't display admin email in security.txt 2023-08-18 10:35:45 +02:00
Chocobozzz 3a4992633e
Migrate server to ESM
Sorry for the very big commit that may lead to git log issues and merge
conflicts, but it's a major step forward:

 * Server can be faster at startup because imports() are async and we can
   easily lazy import big modules
 * Angular doesn't seem to support ES import (with .js extension), so we
   had to correctly organize peertube into a monorepo:
    * Use yarn workspace feature
    * Use typescript reference projects for dependencies
    * Shared projects have been moved into "packages", each one is now a
      node module (with a dedicated package.json/tsconfig.json)
    * server/tools have been moved into apps/ and is now a dedicated app
      bundled and published on NPM so users don't have to build peertube
      cli tools manually
    * server/tests have been moved into packages/ so we don't compile
      them every time we want to run the server
 * Use isolatedModule option:
   * Had to move from const enum to const
     (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums)
   * Had to explictely specify "type" imports when used in decorators
 * Prefer tsx (that uses esbuild under the hood) instead of ts-node to
   load typescript files (tests with mocha or scripts):
     * To reduce test complexity as esbuild doesn't support decorator
       metadata, we only test server files that do not import server
       models
     * We still build tests files into js files for a faster CI
 * Remove unmaintained peertube CLI import script
 * Removed some barrels to speed up execution (less imports)
2023-08-11 15:02:33 +02:00
mira.bat f862be2749
Add an option to sign federated fetches for mastodon compatibility (#5898)
* Fix player error modal

Not hidden when we change the video

* Correctly dispose player components

* Sign cross-server fetch requests for mastodon AUTHORIZED_FETCH compatibilty

* Add a remote fetch sign configuration knob

* Federated fetches refactoring

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
Co-authored-by: ira <ira@foxgirl.space>
2023-07-27 17:01:15 +02:00
Chocobozzz 97583d0023
Add more rate limits 2023-07-26 08:37:50 +02:00
Chocobozzz 12dc3a942a
Implement replace file in server side 2023-07-21 17:38:13 +02:00
Chocobozzz d732ec7b46
Rename "videos" config to "web-videos" 2023-07-11 11:23:51 +02:00
Chocobozzz c57ad141a9
Rename webtorrent config to web_videos 2023-07-11 09:52:14 +02:00
Chocobozzz 784e2ad5c3
Prefer web videos in favour of webtorrent 2023-07-11 09:21:13 +02:00
Chocobozzz d8f39b126d
Add storyboard support 2023-06-29 10:16:55 +02:00
kontrollanten 674f8ddd41
feat(server): add redis sentinel support (#5593)
* feat(server): add redis sentinel support

closes #5141

* Styling

---------

Co-authored-by: Chocobozzz <me@florianbigard.com>
2023-05-10 09:52:50 +02:00
Chocobozzz 5e47f6ab98 Support studio transcoding in peertube runner 2023-05-09 08:57:34 +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 0c9668f779 Implement remote runner jobs in server
Move ffmpeg functions to @shared
2023-05-09 08:57:34 +02:00
Chocobozzz 7b59f76e82
Remove extra space 2023-05-02 10:33:50 +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
ar9708 b5f38b7898 Correct API docs link in `./config/production.yaml.example`
Just a broken link. :)
2023-04-03 11:08:32 +02:00
Chocobozzz 8d1f78044c
Add ability to disable http duration OTEL metrics 2023-02-27 13:53:54 +01:00
Chocobozzz 4765348107
Add x-powered-by header 2023-02-27 09:22:59 +01:00