diff options
-rw-r--r-- | .github/workflows/benchmark.yml | 2 | ||||
-rw-r--r-- | .github/workflows/nightly.yml | 2 | ||||
-rw-r--r-- | .github/workflows/test.yml | 2 | ||||
-rw-r--r-- | packages/peertube-runner/.gitignore | 1 | ||||
-rw-r--r-- | packages/peertube-runner/.npmignore | 6 | ||||
-rw-r--r-- | packages/peertube-runner/package.json | 5 | ||||
-rw-r--r-- | packages/peertube-runner/peertube-runner.ts | 5 | ||||
-rwxr-xr-x | scripts/build/peertube-runner.sh | 2 | ||||
-rw-r--r-- | server/tests/api/live/live-save-replay.ts | 2 | ||||
-rw-r--r-- | support/doc/tools.md | 84 |
10 files changed, 79 insertions, 32 deletions
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 2566f5ba8..ab1780c74 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml | |||
@@ -35,7 +35,7 @@ jobs: | |||
35 | 35 | ||
36 | - uses: './.github/actions/reusable-prepare-peertube-build' | 36 | - uses: './.github/actions/reusable-prepare-peertube-build' |
37 | with: | 37 | with: |
38 | node-version: '14.x' | 38 | node-version: '16.x' |
39 | 39 | ||
40 | - uses: './.github/actions/reusable-prepare-peertube-run' | 40 | - uses: './.github/actions/reusable-prepare-peertube-run' |
41 | 41 | ||
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 0bb685ff1..bb1f27a6b 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml | |||
@@ -18,7 +18,7 @@ jobs: | |||
18 | 18 | ||
19 | - uses: './.github/actions/reusable-prepare-peertube-build' | 19 | - uses: './.github/actions/reusable-prepare-peertube-build' |
20 | with: | 20 | with: |
21 | node-version: '14.x' | 21 | node-version: '16.x' |
22 | 22 | ||
23 | - name: Build | 23 | - name: Build |
24 | run: npm run nightly | 24 | run: npm run nightly |
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 678b0674b..407907e53 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml | |||
@@ -55,7 +55,7 @@ jobs: | |||
55 | 55 | ||
56 | - uses: './.github/actions/reusable-prepare-peertube-build' | 56 | - uses: './.github/actions/reusable-prepare-peertube-build' |
57 | with: | 57 | with: |
58 | node-version: '14.x' | 58 | node-version: '16.x' |
59 | 59 | ||
60 | - uses: './.github/actions/reusable-prepare-peertube-run' | 60 | - uses: './.github/actions/reusable-prepare-peertube-run' |
61 | 61 | ||
diff --git a/packages/peertube-runner/.gitignore b/packages/peertube-runner/.gitignore index f06235c46..6426ab063 100644 --- a/packages/peertube-runner/.gitignore +++ b/packages/peertube-runner/.gitignore | |||
@@ -1,2 +1,3 @@ | |||
1 | node_modules | 1 | node_modules |
2 | dist | 2 | dist |
3 | meta.json | ||
diff --git a/packages/peertube-runner/.npmignore b/packages/peertube-runner/.npmignore new file mode 100644 index 000000000..f38d9947c --- /dev/null +++ b/packages/peertube-runner/.npmignore | |||
@@ -0,0 +1,6 @@ | |||
1 | register | ||
2 | server | ||
3 | shared | ||
4 | meta.json | ||
5 | peertube-runner.ts | ||
6 | tsconfig.json | ||
diff --git a/packages/peertube-runner/package.json b/packages/peertube-runner/package.json index dde0e2d62..f04d0b64f 100644 --- a/packages/peertube-runner/package.json +++ b/packages/peertube-runner/package.json | |||
@@ -1,7 +1,8 @@ | |||
1 | { | 1 | { |
2 | "name": "peertube-runner", | 2 | "name": "@peertube/peertube-runner", |
3 | "version": "1.0.0", | 3 | "version": "0.0.2", |
4 | "main": "dist/peertube-runner.js", | 4 | "main": "dist/peertube-runner.js", |
5 | "bin": "dist/peertube-runner.js", | ||
5 | "license": "AGPL-3.0", | 6 | "license": "AGPL-3.0", |
6 | "dependencies": {}, | 7 | "dependencies": {}, |
7 | "devDependencies": { | 8 | "devDependencies": { |
diff --git a/packages/peertube-runner/peertube-runner.ts b/packages/peertube-runner/peertube-runner.ts index f02526ef9..9c3e498d6 100644 --- a/packages/peertube-runner/peertube-runner.ts +++ b/packages/peertube-runner/peertube-runner.ts | |||
@@ -1,9 +1,14 @@ | |||
1 | #!/usr/bin/env node | ||
2 | |||
1 | import { Command, InvalidArgumentError } from '@commander-js/extra-typings' | 3 | import { Command, InvalidArgumentError } from '@commander-js/extra-typings' |
2 | import { listRegistered, registerRunner, unregisterRunner } from './register' | 4 | import { listRegistered, registerRunner, unregisterRunner } from './register' |
3 | import { RunnerServer } from './server' | 5 | import { RunnerServer } from './server' |
4 | import { ConfigManager, logger } from './shared' | 6 | import { ConfigManager, logger } from './shared' |
5 | 7 | ||
8 | const packageJSON = require('./package.json') | ||
9 | |||
6 | const program = new Command() | 10 | const program = new Command() |
11 | .version(packageJSON.version) | ||
7 | .option( | 12 | .option( |
8 | '--id <id>', | 13 | '--id <id>', |
9 | 'Runner server id, so you can run multiple PeerTube server runners with different configurations on the same machine', | 14 | 'Runner server id, so you can run multiple PeerTube server runners with different configurations on the same machine', |
diff --git a/scripts/build/peertube-runner.sh b/scripts/build/peertube-runner.sh index 9c326747b..7f6ad5ede 100755 --- a/scripts/build/peertube-runner.sh +++ b/scripts/build/peertube-runner.sh | |||
@@ -10,4 +10,4 @@ rm -rf ./dist | |||
10 | rm -rf ./dist | 10 | rm -rf ./dist |
11 | mkdir ./dist | 11 | mkdir ./dist |
12 | 12 | ||
13 | ./node_modules/.bin/esbuild ./peertube-runner.ts --bundle --platform=node --target=node14 --external:"./lib-cov/fluent-ffmpeg" --external:pg-hstore --outfile=dist/peertube-runner.js | 13 | ./node_modules/.bin/esbuild ./peertube-runner.ts --bundle --platform=node --target=node16 --external:"./lib-cov/fluent-ffmpeg" --external:pg-hstore --outfile=dist/peertube-runner.js |
diff --git a/server/tests/api/live/live-save-replay.ts b/server/tests/api/live/live-save-replay.ts index 3a9a84f7e..676d0af69 100644 --- a/server/tests/api/live/live-save-replay.ts +++ b/server/tests/api/live/live-save-replay.ts | |||
@@ -217,7 +217,7 @@ describe('Save replay setting', function () { | |||
217 | }) | 217 | }) |
218 | 218 | ||
219 | it('Should correctly terminate the stream on blacklist and delete the live', async function () { | 219 | it('Should correctly terminate the stream on blacklist and delete the live', async function () { |
220 | this.timeout(40000) | 220 | this.timeout(60000) |
221 | 221 | ||
222 | await publishLiveAndBlacklist({ permanent: false, replay: false }) | 222 | await publishLiveAndBlacklist({ permanent: false, replay: false }) |
223 | 223 | ||
diff --git a/support/doc/tools.md b/support/doc/tools.md index ae52f2c7d..c86f0d12b 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md | |||
@@ -1,30 +1,8 @@ | |||
1 | # CLI tools guide | 1 | # CLI tools guide |
2 | 2 | ||
3 | <!-- START doctoc generated TOC please keep comment here to allow auto update --> | 3 | [[toc]] |
4 | <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | 4 | |
5 | **Table of Contents** | 5 | ## Remote PeerTube CLI |
6 | |||
7 | - [Remote Tools](#remote-tools) | ||
8 | - [Dependencies](#dependencies) | ||
9 | - [Installation](#installation) | ||
10 | - [CLI wrapper](#cli-wrapper) | ||
11 | - [peertube-import-videos.js](#peertube-import-videosjs) | ||
12 | - [peertube-upload.js](#peertube-uploadjs) | ||
13 | - [peertube-plugins.js](#peertube-pluginsjs) | ||
14 | - [peertube-redundancy.js](#peertube-redundancyjs) | ||
15 | - [Server tools](#server-tools) | ||
16 | - [parse-log](#parse-log) | ||
17 | - [regenerate-thumbnails.js](#regenerate-thumbnailsjs) | ||
18 | - [create-import-video-file-job.js](#create-import-video-file-jobjs) | ||
19 | - [create-move-video-storage-job.js](#create-move-video-storage-jobjs) | ||
20 | - [prune-storage.js](#prune-storagejs) | ||
21 | - [update-host.js](#update-hostjs) | ||
22 | - [reset-password.js](#reset-passwordjs) | ||
23 | - [plugin install/uninstall](#plugin-installuninstall) | ||
24 | |||
25 | <!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
26 | |||
27 | ## Remote Tools | ||
28 | 6 | ||
29 | You need at least 512MB RAM to run the script. | 7 | You need at least 512MB RAM to run the script. |
30 | Scripts can be launched directly from a PeerTube server, or from a separate server, even a desktop PC. | 8 | Scripts can be launched directly from a PeerTube server, or from a separate server, even a desktop PC. |
@@ -371,3 +349,59 @@ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production np | |||
371 | cd /var/www/peertube-docker | 349 | cd /var/www/peertube-docker |
372 | docker-compose exec -u peertube peertube npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin | 350 | docker-compose exec -u peertube peertube npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin |
373 | ``` | 351 | ``` |
352 | |||
353 | ## PeerTube runner | ||
354 | |||
355 | PeerTube >= 5.2 supports VOD or Live transcoding by a remote PeerTube runner. | ||
356 | |||
357 | |||
358 | ### Installation | ||
359 | |||
360 | ```bash | ||
361 | sudo npm install -g @peertube/peertube-runner | ||
362 | ``` | ||
363 | |||
364 | ### Configuration | ||
365 | |||
366 | The runner uses env paths like `~/.config`, `~/.cache` and `~/.local/share` directories to store runner configuration or temporary files. | ||
367 | |||
368 | Multiple PeerTube runners can run on the same OS by using the `--id` CLI option (each runner uses its own config/tmp directories): | ||
369 | |||
370 | ```bash | ||
371 | peertube-runner [commands] --id instance-1 | ||
372 | peertube-runner [commands] --id instance-2 | ||
373 | peertube-runner [commands] --id instance-3 | ||
374 | ``` | ||
375 | |||
376 | |||
377 | ### Run the server | ||
378 | |||
379 | Run the runner in server mode so it can run transcoding jobs of registered PeerTube instances: | ||
380 | |||
381 | ```bash | ||
382 | peertube-runner server | ||
383 | ``` | ||
384 | |||
385 | ### Register | ||
386 | |||
387 | To register the runner on a new PeerTube instance so the runner can process its transcoding job: | ||
388 | |||
389 | ```bash | ||
390 | peertube-runner register --url http://peertube.example.com --registration-token ptrrt-... --runner-name my-runner-name | ||
391 | ``` | ||
392 | |||
393 | The runner will then use a websocket connection with the PeerTube instance to be notified about new available transcoding jobs. | ||
394 | |||
395 | ### Unregister | ||
396 | |||
397 | To unregister a PeerTube instance: | ||
398 | |||
399 | ```bash | ||
400 | peertube-runner unregister --url http://peertube.example.com | ||
401 | ``` | ||
402 | |||
403 | ### List registered instances | ||
404 | |||
405 | ```bash | ||
406 | peertube-runner list-registered | ||
407 | ``` | ||