I looked at the logs from the PeerTube server when delegating the job to the RemoteRunner. Without knowing the cause, the server always uses the right network IP of the runner. But just before the error appears, the server uses the TAILSCALE IP of the runner. Since the tailscale ip is the windows machine and not the virtual Ubuntu running on it, i guess this is why the job leads into an error.
WHY is the server using a TAILSCALE IP all of a sudden? How do i stop this?
[PeerTube-IP:443] 2025-09-11 12:35:14.499 info: Remote runner RemoteRunner has accepted job [job ID] (video-transcription)
[PeerTube-IP:443] 2025-09-11 12:35:14.500 info: [valid network IP of Remote Runner] - - [11/Sep/2025:10:35:14 +0000] "POST /api/v1/runners/jobs/[job ID]/accept HTTP/1.1" 200 621 "-" "-"
[PeerTube-IP:443] 2025-09-11 12:35:14.539 info: Get max quality separated audio file of video [video ID] of job [job ID] for runner RemoteRunner
[PeerTube-IP:443] 2025-09-11 12:35:14.541 info: [valid network IP of Remote Runner] - - [11/Sep/2025:10:35:14 +0000] "POST /api/v1/runners/jobs/[job ID]/update HTTP/1.1" 204 - "-" "-"
[PeerTube-IP:443] 2025-09-11 12:35:15.092 info: [valid network IP of Remote Runner] - - [11/Sep/2025:10:35:15 +0000] "POST /api/v1/runners/jobs/request HTTP/1.1" 200 20 "-" "-"
[PeerTube-IP:443] 2025-09-11 12:35:16.324 info: [valid TAILSCALE IP of Remote Runner] - - [11/Sep/2025:10:35:16 +0000] "POST /api/v1/runners/jobs/[job ID]/files/videos/[video ID]/max-quality/audio HTTP/1.1" 200 175153130 "-" "-"
[PeerTube-IP:443] 2025-09-11 12:35:16.669 error: Remote runner RemoteRunner had an error with job [job ID] (video-transcription)
{
"errorMessage": "Command failed with ENOENT: whisper-ctranslate2 /srv/prunner/.cache/peertube-runner-nodejs/default/transcoding/**[job ID that has never been mentioned before]** --model small --word_timestamps True --vad_filter true --vad_min_silence_duration_ms 5000 --output_format all --output_dir /srv/prunner/.cache/peertube-runner-nodejs/default/transcription/neb4kSzCTxhf4LydcqxeCD\nspawn whisper-ctranslate2 ENOENT",
"totalFailures": 1
}
I made a complete overhaul of installing whisper-ctranslate2 by creating the prunner user with a nonprotected /home/prunner folder, installed the whisper-venv inside there and modified the directories inside /etc/systemd/system/prunner.service and /home/prunner/.config/peertube-runner-nodejs/default/config.toml (here i entered enginePath = « /home/prunner/whisper/bin/whisper-ctranslate2 »).
When handing over a transcription job, the RemoteRunner quits now with
[PeerTube-IP:443] 2025-09-11 17:18:01.914 error: Remote runner RyzenRunner had an error with job [job ID] (video-transcription) {
"errorMessage": "Command was killed with SIGABRT (Aborted): /home/prunner/whisper/bin/whisper-ctranslate2 /home/prunner/.cache/peertube-runner-nodejs/default/transcoding/3e91b982-cb36-4e8c-91c7-9caf07b8e48d --model small --word_timestamps True --vad_filter true --vad_min_silence_duration_ms 5000 --output_format all --output_dir /home/prunner/.cache/peertube-runner-nodejs/default/transcription/xeggfx1GUiYFCcWNoXDcCN\n\nUnable to load any of {libcudnn_ops.so.9.1.0, libcudnn_ops.so.9.1, libcudnn_ops.so.9, libcudnn_ops.so}\nInvalid handle. Cannot load symbol cudnnCreateTensorDescriptor",
"totalFailures": 5
}
Please note: The whole process of enabling transcriptions via RemtoeRunners is a total mess. There are no tutorials. There is no proper instruction. Yes, there are documents on joinpeertube.org, but everything is cryptic, nothing is clear. If you ask questions about it, there is nobody answering you. There are dozens of people successfully working with RemoteRunners, but nobody, just NOBODY gives a hand of help to someone trying to get this working.
I’m into open source projects for many years. But regarding this project, i’m totally frustrated about how little help this community is sharing. I’m out of ideas here. And i’m sure i read everything google has to offer regarding the simple task of starting a functional transcription runner. I hope someone will exit the shadows and help people like me, even if there is no personal benefit for them.
I’m joining this thread as I’m having issue with remote runner transcription as well. Maybe same issue as @Gekko , log verbosity has maybe evolve by the time.
My peertube server is installed with docker on my NAS. It works fine, it can transcode and create transcription.
Remote runner on my main PC (Debian 13 with KDE) can transcode but fail at transcription.
Here is issue in my peertube server log :
error[29/03/2026 16:18:30] Remote runner my-runner-ramirez had an error with job 4c4b6b5a-5285-4a7e-b473-67c6b45f1079 (video-transcription)
{
"errorMessage": "Command failed with exit code 1: /srv/prunner/.local/pipx/venvs/whisper-ctranslate2/bin/whisper-ctranslate2 /srv/prunner/.cache/peertube-runner-nodejs/default/transcoding/37cab368-3d55-4f4e-9cb9-77a846e3349a --model medium --word_timestamps True --vad_filter true --vad_min_silence_duration_ms 5000 --output_format all --output_dir /srv/prunner/.cache/peertube-runner-nodejs/default/transcription/rvSBcLn5be745wdSqSqkvj\n\nTraceback (most recent call last):\n File \"/srv/prunner/.local/pipx/venvs/whisper-ctranslate2/bin/whisper-ctranslate2\", line 5, in <module>\n from src.whisper_ctranslate2.whisper_ctranslate2 import main\nModuleNotFoundError: No module named 'src'",
"totalFailures": 1,
"tags": [
"api",
"runner",
"my-runner-ramirez",
"4c4b6b5a-5285-4a7e-b473-67c6b45f1079",
"video-transcription"
]
}
I don’t know is something is broken on my install or if there is something missing in whisper-ctranslate2. I followed install steps from https://docs.joinpeertube.org/maintain/tools#peertube-runner and run it as Systemd service (I’m not on my PC right now, I can’t show my prunner.service config file).
If I remember well what I did a while ago, I install whisper-ctranslate2 with my system account then to not have a to big /home/ folder copy it to /var/prunner/ and modify config to use “/var/prunner/.local/pipx/venvs/whisper-ctranslate2/bin/whisper-ctranslate2“. I guess that was the mistake.
So I have uninstall whisper-ctranslate2 from my main account.
Then install it with user prunner:
sudo -u prunner pipx install whisper-ctranslate2
Use the command for pipx to add “/var/prunner/.local/bin/” to path as recommended at the end of install.
I think it is:
sudo -u prunner pipx ensurepath
Then removed enginePath from config file as whisper-translate2 it is now in accessible from PATH
And now it works with user prunner and whisper-translate2 is not weighing in my /home directory.