Commit Graph

998 Commits

Author SHA1 Message Date
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
Chocobozzz 89aa333110
Add ability to force transcoding 2023-07-28 11:09:03 +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 f18003d0ac
Improve runner management
* Add ability to remove runner jobs
 * Add runner job state quick filter
 * Merge registration tokens and runners tables in the same page
 * Add copy button to copy registration token
2023-07-27 14:17:12 +02:00
Chocobozzz f5af5feb5a
Use built in toc doc
As we mainly use this file on https://docs.joinpeertube.org/contribute/plugins
2023-07-26 11:47:00 +02:00
Chocobozzz 12dc3a942a
Implement replace file in server side 2023-07-21 17:38:13 +02:00
Chocobozzz c6867725fb
Add p2p info to metrics 2023-07-21 11:42:52 +02:00
Chocobozzz 4e5da193d0
Keep old docker path for web videos
Avoid breaking existing peertube instances on upgrade
2023-07-20 11:26:33 +02:00
Chocobozzz 4f8b623668
Add missing storyboard directory to docker 2023-07-19 11:42:00 +02:00
Chocobozzz 9a26d00e5e
Add nginx comment for webseed redirection 2023-07-17 11:31:46 +02:00
Chocobozzz c5ad375a2c
Use web-videos for webseed redirection 2023-07-12 11:26:01 +02:00
Chocobozzz 34555bebf8
Migrate from webseed to web-videos 2023-07-11 11:39:59 +02:00
Chocobozzz d732ec7b46
Rename "videos" config to "web-videos" 2023-07-11 11:23:51 +02:00
Chocobozzz 76824f522a
Reword runner registration 2023-07-11 10:10: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 c3030e944a
Fix build 2023-07-10 16:41:08 +02:00
Chocobozzz 83b42f5a32
Add note for peertube runner dependencies 2023-07-06 16:59:20 +02:00
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