Cannot install plugin. Error: Expected status 200, got 400.
The server responded this error: "Cannot install plugin /peertube-plugin-nttw6/".
You may take a closer look at the logs. To see how to do so, check out this page: https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/development/tests.md#debug-server-logs
at /dist/shared/server-commands/requests/requests.js:136:19
at /node_modules/supertest/lib/test.js:306:17
at Test._assertFunction (/node_modules/supertest/lib/test.js:285:13)
at Test.assert (/node_modules/supertest/lib/test.js:164:23)
at localAssert (/node_modules/supertest/lib/test.js:120:14)
at /node_modules/supertest/lib/test.js:125:7
at Test.Request.callback (/node_modules/superagent/lib/node/index.js:928:3)
at /node_modules/superagent/lib/node/index.js:1145:18
at IncomingMessage.<anonymous> (/node_modules/superagent/lib/node/parsers/json.js:22:7)
at IncomingMessage.emit (node:events:402:35)
despite being the example plugin. I’m wondering if it’s possible to do so or if it’s limited to a local test instance (maybe due to copying files, hence the full path requirement).
To clarify, my goal here is to provide a discovery environment for people wanting to discover plugin development for PeerTube. I thought I’d provide a working instance for participants to a workshop so that they can focus on solely extending through plugin but not the setup part.
The hope here also is to avoid the 24h npm review process, which is obviously not practical for a workshop format.
As argued before Manually check for plugin/theme updates · Issue #4735 · Chocobozzz/PeerTube · GitHub I believe this is not a security concern if it is not a default configuration setting but rather than an instance administrator has to first enable explicitly that behavior and because a person with access to install plugins anyway could do anything already.
Well I must have another problem because I get the same error, 400, on a local development server. Logs don’t seem to clarify more beside being unable to find files despite directory being in the same file system, no container involved. I’ll double check permissions.
Hi, I have the same pb, except I’m trying to install a local plugin (the quickstart plugin I cloned from Framasoft / PeerTube / peertube-plugin-quickstart · GitLab) to a local Peertube instance on Docker. Everything’s fine following this tut until the « Then, you can install or reinstall your local plugin/theme by running » which breaks on the same « Error: Expected status 200, got 400 » error. To be precise my command is
It’s a plugin I need to install, it’s not on the Peertube instance yet, so I don’t understand @Chocobozzz answer. I attempted moving the plugin folder among my peertube instance files to try with a relative path, but it breaks with « Path should be absolute » error.
I understand this 400 error comes from the path argument as it shows too when the path is deliberately wrong, but I don’t know how I should set its value.
Here the path ../peertube-plugin-livechat/ is relative to your docker-compose file.
This will make your plugin dir available in the container, using the path /peertube-plugin-livechat.
I added the :ro option at the end, so the mount is read-only (the docker container won’t be able to change files in your dev directory).
Then, to install the plugin, you have 2 solutions.
If you want to use the CLI embedded in the docker container
I’m not using this method, so I’m not sure that it is the correct command, but it should look like (you must be in your docker dir):
docker-compose exec -u peertube node dist/server/tools/peertube.js plugins install --path '/peertube-plugin-livechat' # and maybe others parameters, I don't know if there are required here
Additionnal notes
Installing many times plugins can make the yarn cache to grow quickly.
You can flush it with:
Sometime, by doing so, Peertube won’t work for a few seconds/minutes after restart, saying there is a missing plugin-globals.css file.
I did not understand yet why I have this error. I think it is because Peertube tries to update the plugins packages, and it can last a while.
To avoid that, just wait.
Or, if you don’t want, you can for example try:
One easy way to remember, is to write a script to install your plugin. I use this one:
#!/bin/bash
set -euo pipefail
cd ~/dev/peertube_stuff/PeerTube
node ./dist/server/tools/peertube.js plugins uninstall --npm-name 'peertube-plugin-livechat' --url "http://localhost:9000" --username root --password '**********' && node ./dist/server/tools/peertube.js plugins install --path '/peertube-plugin-livechat' --url "http://localhost:9000" --username root --password '*************'
cd -
cd ~/dev/peertube_stuff/docker
docker-compose exec -u peertube peertube rm -rf /home/peertube/.cache/yarn
cd -
Where ~/dev/peertube_stuff/docker is the dev docker directory, and ~/dev/peertube_stuff/Peertube the directory where I built the CLI (you can replace the first command by the docker-compose equivalent).
PS: I always uninstall the plugin before installing it, because in some rare case I had bugs if I don’t do this. I don’t know if it is still the case with recent Peertube version, but I kept the uninstall command to avoid wasting time.