Chocobozzz / PeerTube

ActivityPub-federated video streaming platform using P2P directly in your web browser
https://joinpeertube.org/
GNU Affero General Public License v3.0
13.06k stars 1.5k forks source link

Configurable public URL for remote-runner job payloads #6683

Open jDmacD opened 1 week ago

jDmacD commented 1 week ago

Describe the problem to be solved

Our peertube instance is configured with remote-runners connecting via a local address peertube.lan

peertube-runner \
  register \
  --url http://peertube.lan \
  --registration-token ptrrt-xxxx \
  --runner-name local-runner

When a job is submitted he payload for the runner contains the public URL peertube.io

{
  "input": {
    "videoFileUrl": "https://peertube.io/api/v1/runners/jobs/6da7ce67-870f-43d8-9bdf-74990ee48efe/files/videos/b2e4826d-8a11-43a5-be51-19239578e200/max-quality",
    "separatedAudioFileUrl": []
  },
  "output": {
    "fps": 25,
    "resolution": 576,
    "separatedAudio": false
  }
}

The runner pulls the job from the public URL

[10:10:55.829] INFO (1): Connected to http://peertube.lan/runners socket                                                    
[10:10:55.831] INFO (1): Checking available jobs on http://peertube.lan
[10:24:29.854] INFO (1): [http://peertube.lan] Processing job of type vod-web-video-transcoding: 648ae271-545c-4e34-a34d-15
[10:24:29.857] INFO (1): Downloading input file https://peertube.io/api/v1/runners/jobs/648ae271-545c-4e34-a34d-15c6d2df6ae7/files/videos/b2e4

Our instance is behind Cloudflare, which provides load balancing, TLS termination and a CDN. The preferable situation would be for the runners to pull jobs and files from peertube.lan, as opposed to the longer, more expensive, trip via Cloudflare to peertube.io.

Describe the solution you would like

A configuration option that would allow the setting of a base FQDN and scheme for the videoFileUrl that is supplied to the remote-runners. For instance:

PEERTUBE_REMOTE_RUNNER_JOB_BASE_URL: "http://peertube.lan"
jDmacD commented 1 week ago

The same result could be achieved purely on the peertube-runner side. Either have the --url flag dictate which address it pulls assets from, or introduce another flag.