Tags
  1. https://docs.joinpeertube.org/maintain/tools#peertube-runner 
  2. https://docs.joinpeertube.org/admin/remote-runners 
  3. curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
  4. ai nodejs ffmpeg pipx
  5. npm install -g @peertube/peertube-cli @peertube/peertube-runner
  6. useradd -m -d /srv/prunner -s /bin/bash -p prunner prunner
  7. su prunner
  8. pipx install openai-whisper ensurepath yt-dlp torch torchvision torchaudio --include-deps
  9. peertube-runner server
  10. ID=at1
  11. mkdir ~/.config/peertube-runner-nodejs/$ID

vim ~/.config/peertube-runner-nodejs/$ID/config.toml

[jobs]
concurrency = 1

[ffmpeg]
threads = 2
nice = 20

[transcription]
engine = "openai-whisper"
enginePath = "/srv/prunner/.local/bin/whisper"
model = "medium"

vim /srv/prunner/.local/bin/whisper

#!/srv/prunner/.local/share/pipx/venvs/openai-whisper/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from whisper.transcribe import cli
if __name__ == '__main__':
   sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
   sys.argv.insert(1, '--device')
   sys.argv.insert(2, 'cuda')
   sys.exit(cli())
  1. vim /etc/systemd/system/prunner.service
  2. sc-daemon-reload; sc-enable prunner; sc-restart prunner; sc-status prunner
  3. sudo -u prunner peertube-runner register --url https:// --registration-token ptrrt-* --runner-name $ID
  4. sudo -u prunner peertube-runner list-registered
  5. journalctl -feu prunner.service
  6. yt-dlp -c --extract-audio https://www.youtube.com/watch?v=

/etc/systemd/system/prunner-restart.service

[Unit]
Description=Restart PeerTube runner service
[Service]
Type=oneshot
ExecStartPre=/bin/bash -c 'pgrep -ns 1 -x "ffmpeg" && exit 1 || true; pgrep -ns 1 -x "whisper" && exit 1 || true'
ExecStart=/bin/systemctl restart prunner.service

/etc/systemd/system/prunner-restart.timer

[Unit]
Description=Timer to restart prunner service every hour
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
  1. sc-daemon-reload
  2. sc-enable prunner-restart.timer
  3. sc-start prunner-restart.timer
  4. sc-status prunner-restart.timer prunner-restart.service

update

  1. npm outdated -g @peertube/peertube-runner
  2. npm update -g @peertube/peertube-runner
  3. systemctl restart prunner.service