X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdoc%2Ftools.md;h=526cc98b1fd062120b91da5a3817898e11eb7695;hb=4e29f4fe23b413cc8c55ac0d8373f36bcd60b47a;hp=175c22cd81cce5bad10169cac4351cf19bfb43ef;hpb=e62f03ae0412f4efa62917d8741bc1a39e8ed7fc;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/doc/tools.md b/support/doc/tools.md index 175c22cd8..526cc98b1 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -10,7 +10,6 @@ - [CLI wrapper](#cli-wrapper) - [peertube-import-videos.js](#peertube-import-videosjs) - [peertube-upload.js](#peertube-uploadjs) - - [peertube-watch.js](#peertube-watchjs) - [peertube-plugins.js](#peertube-pluginsjs) - [peertube-redundancy.js](#peertube-redundancyjs) - [Server tools](#server-tools) @@ -18,16 +17,11 @@ - [regenerate-thumbnails.js](#regenerate-thumbnailsjs) - [create-transcoding-job.js](#create-transcoding-jobjs) - [create-import-video-file-job.js](#create-import-video-file-jobjs) + - [create-move-video-storage-job.js](#create-move-video-storage-jobjs) - [prune-storage.js](#prune-storagejs) - - [optimize-old-videos.js](#optimize-old-videosjs) - [update-host.js](#update-hostjs) - [reset-password.js](#reset-passwordjs) - [plugin install/uninstall](#plugin-installuninstall) - - [REPL (Read Eval Print Loop)](#repl-read-eval-print-loop) - - [.help](#help) - - [Lodash example](#lodash-example) - - [YoutubeDL example](#youtubedl-example) - - [Models examples](#models-examples) @@ -76,8 +70,6 @@ You can access it as `peertube` via an alias in your `.bashrc` like `alias peert auth [action] register your accounts on remote instances to use them with other commands upload|up upload a video import-videos|import import a video from a streaming platform - watch|w watch a video in the terminal ✩°。⋆ - repl initiate a REPL to access internals plugins|p [action] manage instance plugins redundancy|r [action] manage video redundancies help [cmd] display help for [cmd] @@ -101,12 +93,6 @@ You can now use that account to upload videos without feeding the same parameter $ peertube up ``` -And now that your video is online, you can watch it from the confort of your terminal (use `peertube watch --help` to see the supported players): - -```bash -$ peertube watch https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10 -``` - To list, install, uninstall dynamically plugins/themes of an instance: ```bash @@ -170,22 +156,6 @@ $ cd ${CLONE} $ node dist/server/tools/peertube-upload.js --help ``` -#### peertube-watch.js - -You can use this script to play videos directly from the CLI. - -It provides support for different players: - -- ascii (default ; plays in ascii art in your terminal!) -- mpv -- mplayer -- vlc -- stdout -- xbmc -- airplay -- chromecast - - #### peertube-plugins.js Install/update/uninstall or list local or NPM PeerTube plugins: @@ -239,26 +209,43 @@ These scripts should be run on the server, in `peertube-latest` directory. To parse PeerTube last log file: ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run parse-log -- --level info + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run parse-log -- --level info ``` `--level` is optional and could be `info`/`warn`/`error` -You can also remove SQL or HTTP logs using `--not-tags`: +You can also remove SQL or HTTP logs using `--not-tags` (PeerTube >= 3.2): -``` +```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run parse-log -- --level debug --not-tags http sql + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run parse-log -- --level debug --not-tags http sql ``` ### regenerate-thumbnails.js +**PeerTube >= 3.2** + Regenerating local video thumbnails could be useful because new PeerTube releases may increase thumbnail sizes: -``` +```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run regenerate-thumbnails + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run regenerate-thumbnails ``` ### create-transcoding-job.js @@ -266,23 +253,41 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production You can use this script to force transcoding of an existing video. PeerTube needs to be running. To generate transcoding jobs depending on the instance configuration: + ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run create-transcoding-job -- -v [videoUUID] ``` Or to transcode to a specific resolution: + ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] -r [resolution] + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run create-transcoding-job -- -v [videoUUID] -r [resolution] ``` + The resolution should be an integer (`1080`, `720`, `480`, etc.) To generate an HLS playlist for a video: ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- --generate-hls -v [videoUUID] + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run create-transcoding-job -- --generate-hls -v [videoUUID] ``` ### create-import-video-file-job.js @@ -290,30 +295,52 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production You can use this script to import a video file to replace an already uploaded file or to add a new resolution to a video. PeerTube needs to be running. ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-import-video-file-job -- -v [videoUUID] -i [videoFile] + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run create-import-video-file-job -- -v [videoUUID] -i [videoFile] ``` -### prune-storage.js +### create-move-video-storage-job.js -Some transcoded videos or shutdown at a bad time can leave some unused files on your storage. -Stop PeerTube and delete these files (a confirmation will be demanded first): +**PeerTube >= 4.0** + +Use this script to move all video files or a specific video file to object storage. ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest -$ sudo systemctl stop peertube && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run prune-storage +$ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-move-video-storage-job -- --to-object-storage -v [videoUUID] + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run create-move-video-storage-job -- --to-object-storage -v [videoUUID] +``` + +The script can also move all video files that are not already in object storage: + +```bash +$ # Basic installation +$ cd /var/www/peertube/peertube-latest +$ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-move-video-storage-job -- --to-object-storage --all-videos + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run create-move-video-storage-job -- --to-object-storage --all-videos ``` -### optimize-old-videos.js -Before version v1.0.0-beta.16, Peertube did not specify a bitrate for the -transcoding of uploaded videos. This means that videos might be encoded into -very large files that are too large for streaming. This script re-transcodes -these videos so that they can be watched properly, even on slow connections. +### prune-storage.js + +Some transcoded videos or shutdown at a bad time can leave some unused files on your storage. +Stop PeerTube and delete these files (a confirmation will be demanded first): ```bash $ cd /var/www/peertube/peertube-latest -$ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run optimize-old-videos +$ sudo systemctl stop peertube && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run prune-storage ``` @@ -325,8 +352,13 @@ invalid torrent files and invalid URLs in your database. To fix this, you have to run the command below (keep in mind your follower instances will NOT update their URLs). ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run update-host ``` ### reset-password.js @@ -334,8 +366,13 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production To reset a user password from CLI, run: ```bash +$ # Basic installation $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u target_username + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run reset-password -- -u target_username ``` @@ -349,6 +386,10 @@ To install/update a plugin or a theme from the disk: ```bash $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run plugin:install -- --plugin-path /local/plugin/path + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run plugin:install -- --plugin-path /local/plugin/path ``` From NPM: @@ -356,6 +397,10 @@ From NPM: ```bash $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run plugin:install -- --npm-name peertube-plugin-myplugin + +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run plugin:install -- --npm-name peertube-plugin-myplugin ``` To uninstall a plugin or a theme: @@ -363,135 +408,8 @@ To uninstall a plugin or a theme: ```bash $ cd /var/www/peertube/peertube-latest $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin -``` - -### REPL (Read Eval Print Loop) - -If you want to interact with the application libraries and objects even when PeerTube is not running, there is a REPL for that. - -usage: `node ./dist/server/tools/peertube-repl.js` - -"The default evaluator will, by default, assign the result of the most recently evaluated expression to the special variable `_` (underscore). Explicitly setting `_` to a value will disable this behavior." - -- type `.help` to list commands available in the repl, notice it starts with a dot -- type `.exit` to exit, note that you still have to press CTRL-C to actually exit, or press CTRL-C (3 times) without typing `.exit` to exit -- type `context` to list all available objects and libraries in the context, note: `Promise` is also available but it's not listed in the context, in case you need promises for something -- type `env` to see the loaded environment variables -- type `path` to access path library -- type `lodash` to access lodash library -- type `uuidv1` to access uuid/v1 library -- type `uuidv3` to access uuid/v3 library -- type `uuidv4` to access uuid/v4 library -- type `uuidv5` to access uuid/v5 library -- type `YoutubeDL` to access youtube-dl library -- type `cli` to access the cli helpers object -- type `logger` to access the logger; if you log to it, it will write to stdout and to the peertube.log file -- type `constants` to access the constants loaded by the server -- type `coreUtils` to access the core-utils helpers object -- type `ffmpegUtils` to access the ffmpeg-utils helpers object -- type `peertubeCryptoUtils` to access the peertube-crypto helpers object -- type `signupUtils` to access the signup helpers object -- type `utils` to access the utils helpers object -- type `YoutubeDLUtils` to access the youtube-dl helpers object -- type `sequelizeTypescript` to access sequelizeTypescript -- type `modelsUtils` to access the models/utils -- type `models` to access the shortcut to sequelizeTypescript.models -- type `transaction` to access the shortcut to sequelizeTypescript.transaction -- type `query` to access the shortcut to sequelizeTypescript.query -- type `queryInterface` to access the shortcut to sequelizeTypescript.queryInterface - -#### .help - -``` -PeerTube [1.0.0] (b10eb595)> .help -.break Sometimes you get stuck, this gets you out -.clear Break, and also clear the local context -.editor Enter editor mode -.exit Exit the repl -.help Print this help message -.load Load JS from a file into the REPL session -.r Reset REPL -.reset Reset REPL -.save Save all evaluated commands in this REPL session to a file -PeerTube [1.0.0] (b10eb595)> -``` - -#### Lodash example -``` -PeerTube [1.0.0] (b10eb595)> lodash.keys(context) -[ 'global', - 'console', - 'DTRACE_NET_SERVER_CONNECTION', - 'DTRACE_NET_STREAM_END', - 'DTRACE_HTTP_SERVER_REQUEST', - 'DTRACE_HTTP_SERVER_RESPONSE', - 'DTRACE_HTTP_CLIENT_REQUEST', - 'DTRACE_HTTP_CLIENT_RESPONSE', - 'process', - 'Buffer', - 'clearImmediate', - 'clearInterval', - 'clearTimeout', - 'setImmediate', - 'setInterval', - 'setTimeout', - 'XMLHttpRequest', - 'compact2string', - 'module', - 'require', - 'path', - 'repl', - 'context', - 'env', - 'lodash', - 'uuidv1', - 'uuidv3', - 'uuidv4', - 'uuidv5', - 'cli', - 'logger', - 'constants', - 'Sequelize', - 'sequelizeTypescript', - 'modelsUtils', - 'models', - 'transaction', - 'query', - 'queryInterface', - 'YoutubeDL', - 'coreUtils', - 'ffmpegUtils', - 'peertubeCryptoUtils', - 'signupUtils', - 'utils', - 'YoutubeDLUtils' ] -PeerTube [1.0.0] (b10eb595)> -``` - -#### YoutubeDL example -``` -YoutubeDL.getInfo('https://www.youtube.com/watch?v=I5ZN289jjDo', function(err, data) {console.log(err, data)}) -``` - -#### Models examples -``` -PeerTube [1.0.0] (b10eb595)> new models.ActorModel({id: 3}).getVideoChannel().then(function(data){console.log(data.dataValues.name)}) -Promise { - _bitField: 0, - _fulfillmentHandler0: undefined, - _rejectionHandler0: undefined, - _promise0: undefined, - _receiver0: undefined } -PeerTube [1.0.0] (b10eb595)> Main root channel -PeerTube [1.0.0] (b10eb595)> let out; new models.UserModel({id: 1}).getAccount().then(function (data) {out = data.dataValues.id}) -Promise { - _bitField: 0, - _fulfillmentHandler0: undefined, - _rejectionHandler0: undefined, - _promise0: undefined, - _receiver0: undefined } -PeerTube [1.0.0] (b10eb595)> out -2 -PeerTube [1.0.0] (b10eb595)> +$ # Docker installation +$ cd /var/www/peertube-docker +$ docker-compose exec -u peertube peertube npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin ```