- https://docs.joinpeertube.org/maintain/tools#peertube-runner
- https://docs.joinpeertube.org/admin/remote-runners
- curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
- ai nodejs ffmpeg pipx
- npm install -g @peertube/peertube-cli @peertube/peertube-runner
- useradd -m -d /srv/prunner -s /bin/bash -p prunner prunner
- su prunner
- pipx install openai-whisper ensurepath yt-dlp torch torchvision torchaudio --include-deps
- peertube-runner server
- ID=at1
- 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())
- vim /etc/systemd/system/prunner.service
- sc-daemon-reload; sc-enable prunner; sc-restart prunner; sc-status prunner
- sudo -u prunner peertube-runner register --url https:// --registration-token ptrrt-* --runner-name $ID
- sudo -u prunner peertube-runner list-registered
- journalctl -feu prunner.service
- 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
- sc-daemon-reload
- sc-enable prunner-restart.timer
- sc-start prunner-restart.timer
- sc-status prunner-restart.timer prunner-restart.service
update
- npm outdated -g @peertube/peertube-runner
- npm update -g @peertube/peertube-runner
- systemctl restart prunner.service