Debian 12 server, Peertube v6.2.1: Plugin Menu Bug/Lost with Plugin Registration

I installed Peertube using a Docker tutorial uploaded by Chipio Industries: (https://www.youtube.com/watch?v=qpkHvnkB4IQ) but have encountered three persistent issues regarding the plugin search menu and with plugin registration.

Issue 1:
The plugin search consistently times out whenever I try to access it, even though I can directly access it using curl:

error[6/4/2025, 12:27:36 PM] Cannot list available plugins from index https://packages.joinpeertube.org/api/v1/plugins.
{
  "err": {
    "stack": "RequestError: Timeout awaiting 'request' for 7000ms\n    at ClientRequest.<anonymous> (file:///app/node_modules/got/dist/source/core/index.js:792:61)\n    at Object.onceWrapper (node:events:632:26)\n    at ClientRequest.emit (node:events:529:35)\n    at TLSSocket.socketErrorListener (node:_http_client:501:9)\n    at TLSSocket.emit (node:events:517:28)\n    at emitErrorNT (node:internal/streams/destroy:151:8)\n    at emitErrorCloseNT (node:internal/streams/destroy:116:3)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\n    at Timeout.timeoutHandler [as _onTimeout] (file:///app/node_modules/got/dist/source/core/timed-out.js:42:25)\n    at listOnTimeout (node:internal/timers:571:11)\n    at process.processTimers (node:internal/timers:512:7)",
    "message": "Timeout awaiting 'request' for 7000ms",
    "name": "TimeoutError",
    "requestHeaders": {
      "user-agent": "PeerTube/6.2.1 (+https://***)",
      "date": "Wed, 04 Jun 2025 19:27:12 GMT",
      "accept": "application/json",
      "accept-encoding": "gzip, deflate, br",
      "host": "packages.joinpeertube.org"
    }
  }

This also happens during plugin update checks. curl -v https://packages.joinpeertube.org/api/v1/plugins also works both inside and outside the container, while curl -v https://packages.joinpeertube.org/api/v1/plugins/available gives a 400 error outside the container and a 503 error with « curl -H ». I have no idea if it is a DNS issue or an internal PeerTube error. After looking at this page, I disabled ipv6 on the docker-compose.yml and it didn’t work: https://framacolibri.org/t/theme-search-causes-message-plugin-index-is-not-available/16041

Issue 2:
When I build a test plugin and try to install it, for example, the « hello-world » plugin, the plugin will not show up in the menu unless I install the plugin directly into the Postgres database, enabling the plugin there. But that only works for plugins accessible from the npm registry, not a plugin activated from the server logs. Is this expected behavior for locally developed plugins?

Issue 3:
When I try to register another plugin, I get this error:

Client log: Cannot import or register plugin video-open-button
{
  "tags": [
    "client"
  ],
  "username": "root",
  "userAgent": "***",
  "stackTrace": "l.register is not a function\nTypeError: l.register is not a function\n    at https://***/client/en-US/chunk-CLFJUPDM.js:11:65841\n    at o.invoke (https://***/client/en-US/polyfills-V7PT2CCL.js:1:119357)\n    at Object.onInvoke (https://***/client/en-US/chunk-CLFJUPDM.js:7:65198)\n    at o.invoke (https://***/client/en-US/polyfills-V7PT2CCL.js:1:119297)\n    at D.run (https://***/client/en-US/polyfills-V7PT2CCL.js:1:114647)\n    at https://***/client/en-US/polyfills-V7PT2CCL.js:2:560\n    at o.invokeTask (https://***/client/en-US/polyfills-V7PT2CCL.js:1:119985)\n    at Object.onInvokeTask (https://***/client/en-US/chunk-CLFJUPDM.js:7:65012)\n    at o.invokeTask (https://***/client/en-US/polyfills-V7PT2CCL.js:1:119906)\n    at D.runTask (https://***/client/en-US/polyfills-V7PT2CCL.js:1:115264)",
  "url": "https://***/admin/plugins/list-installed?pluginType=1"
}

This error prevents proper plugin registration but also allows me to access the local plugin’s settings. I don’t have a good idea how to run the plugin as intended or how it should be formatted, nor do I know if this is an error related to installing local plugins without a corresponding registry or not.

I don’t have much experience as a web programmer, so I’ve included as much detail as possible in case they prove to be useful in reproducing these errors (or if I made errors myself).

Thanks in advance for your assistance.