Context: Would YOU donate your idle CPU cycles to TankieTube?


Linux Steps

*Feel free to ask me any questions by PM, email, or commenting here.*

1. Install dependencies

Debian

$ sudo apt update
$ sudo apt install nodejs npm ffmpeg
$ sudo npm install -g @peertube/peertube-runner 

Arch Linux

$ sudo pacman -Syu nodejs npm ffmpeg
$ sudo npm install -g @peertube/peertube-runner 

2. Create the dedicated system user

$ sudo useradd -m -d /srv/prunner -s /bin/bash -p <random_password> prunner

3. Create the systemd unit

$ sudo nano /etc/systemd/system/prunner.service

Paste and save this.

spoiler
[Unit]
After=network.target
Description=PeerTube runner daemon

[Service]
CapabilityBoundingSet=~CAP_SYS_ADMIN
Environment=NODE_ENV=production
ExecStart=peertube-runner server --enable-job vod-web-video-transcoding --enable-job vod-hls-transcoding --enable-job vod-audio-merge-transcoding
Group=prunner
LockPersonality=true
NoNewPrivileges=true
PrivateDevices=false
PrivateMounts=true 
PrivateTmp=true
ProtectClock=true 
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ProtectSystem=strict
ReadWritePaths=/srv/prunner
Restart=always
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 
RestrictNamespaces=true
RestrictSUIDSGID=true
SyslogIdentifier=prunner
SystemCallArchitectures=native
Type=simple
User=prunner
WorkingDirectory=/srv/prunner

[Install]
WantedBy=multi-user.target

4. Enable & start the systemd unit

Starting the process for the first time will generate the config file.

$ sudo systemctl daemon-reload
$ sudo systemctl enable prunner.service
$ sudo systemctl restart prunner.service

5. Edit the config file

$ sudo nano /srv/prunner/.config/peertube-runner-nodejs/default/config.toml

a. Under [jobs], set concurrency equal to the number of virtual cores your CPU has.

b. Under, [ffmpeg], set threads = 1.

c. Save and exit.

6. Restart to load the configuration changes

$ sudo systemctl restart prunner.service

7. Email TankieTanuki@tankie.tube

a. OpSec: Use an email detached from your legal identity. Attachment to your Hexbear/Lemmy username is optional.

b. Put "TinyTanks" in the subject line.

c. In the body, request a nickname for your runner.

d. I'll reply with the final command to enter, which includes your secret token!



Windows/MacOS/Docker

*Comrades are welcome to contribute steps for alternate installations. I'm only good with Linux.*


Source

  • TankieTanuki [he/him]
    hexagon
    ·
    edit-2
    6 days ago
    --no-pager
    Do not pipe output into a pager.
    

    What's a pager? You mean those things people used to wear on their belts before cellphones were commonplace?

    • As the name implies, roughly a pager is a piece of software that helps the user get the output one page at a time, by getting the size of rows of the terminal and displaying that many lines.

      The most popular pagers in a UNIX text environment are more and less. The latter is kind of a joke as less can actually do more then more.

      https://unix.stackexchange.com/questions/144016/what-is-a-pager

      • TankieTanuki [he/him]
        hexagon
        ·
        6 days ago

        Oh, I see! Page like in pagination. Now I know the proper name for less's function. 🙂 Thanks!