Foundry VTT unter Ubuntu als Service installieren

Bei Foundry VTT handelt es sich um eine Virtual Tabletop-Plattform, welche selbst gehostet werden kann. Daneben existieren Versionen für macOS und Windows. Soll Foundry VTT unter Ubuntu gehostet werden, muss im ersten Schritt Node.js installiert werden:

apt install -y libssl-dev
curl -sL https://deb.nodesource.com/setup_14.x | bash -
apt install -y nodejs

Anschließend kann ein Nutzer für Foundry VTT angelegt werden und in diesen gewechselt werden:

adduser --disabled-login --gecos "" foundryvtt
su - foundryvtt
mkdir foundry

Nachdem das aktuelle Release von Foundry VTT heruntergeladen wurde, sollte dieses im Ordner foundry entpackt werden:

cd foundry
unzip foundryvtt.zip
rm foundryvtt.zip

Anschließend wird der Kontext des Nutzers foundryvtt verlassen und eine neue Service-Unit für systemd angelegt:

exit
nano /etc/systemd/system/foundryvtt.service

Diese wird mit folgendem Inhalt befüllt:

[Unit]
Description=Foundry VTT
After=syslog.target
After=network.target

[Service]
Type=simple
User=foundryvtt
Group=foundryvtt
ExecStart=/usr/bin/node /home/foundryvtt/foundry/resources/app/main.js --dataPath=/home/foundryvtt/foundrydata
Restart=always

[Install]
WantedBy=multi-user.target

Nachdem die Datei angelegt wurde, kann der Service aktiviert und gestartet werden:

systemctl enable foundryvtt
systemctl start foundryvtt

Lokal ist der Service nun per HTTP unter dem Port 30000 erreichbar. Damit der Service auch von außen erreichbar ist, kann Nginx als Reverse Proxy konfiguriert werden. Dazu muss die entsprechende Konfiguration hinterlegt werden:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate        /etc/letsencrypt/live/example.org/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/example.org/privkey.pem;

    server_name example.org;

    client_max_body_size 512m;

    location / {

        # Set proxy headers
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # These are important to support WebSockets
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

        # Make sure to set your Foundry VTT port number
        proxy_pass http://localhost:30000;
    }
}

Damit steht Foundry VTT auch von außen unter der entsprechenden Domain zur Verfügung und kann benutzt werden.

Downloads über youtube-dl auf MP4-Dateien beschränken

Wer die Kommandozeilenanwendung youtube-dl nutzt um YouTube-Videos herunterzuladen, sieht das diese jeweils den besten Audio-Stream und den besten Video-Stream nutzt. Im Normalfall wird dann meist der WebM-Stream und der M4A-Stream heruntergeladen. Soll nur der MP4-Stream heruntergeladen werden, kann dies über einen entsprechenden Parameter eingestellt wird:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' videoId123

Damit wird immer noch der beste Stream ausgewählt, allerdings beschränkt auf die Erweiterung MP4 bzw. M4A. Nach dem Download der beiden Streams, werden diese dann, mittels FFmpeg, in einer MP4-Datei gemergt.

ffmpeg wird von zsh beendet

Beim Aufruf von ffmpeg im Terminal kam es unter macOS Big Sur auf einem M1-Mac zu folgender Fehlermeldung:

zsh: killed     ffmpeg

Installiert war ffmpeg über den Paketmanager Homebrew. In diesem Fall half es ffmpeg mitsamt seiner Abhängigkeiten wieder neu zu installieren:

rew reinstall $(brew deps ffmpeg) ffmpeg

Nach dieser Prozedur konnte ffmpeg im Terminal wieder normal benutzt werden.

Zeilenendung bestimmer Dateitypen korrigieren

Wer die Zeilenenden einer Datei von Windows-Zeilenenden zu Unix-Zeilenenden korrigieren möchte, der kann, neben einem Editor, hierfür auch das Kommandozeilenwerkzeug dos2unix benutzen. Sollen mehrere Dateien eines Ordners umgewandelt werden, kann das ganze mit dem Befehl find kombiniert werden:

find . -name '*.groovy' -type f -print0 | xargs -0 dos2unix

Über die Filterfunktion des Befehls find, werden in diesem Fall nur Dateien mit der Endung groovy gefunden und anschließend die entsprechenden Zeilenendungen umgewandelt.

Mittels FFmpeg Videos aus Bilderreihen zu machen

Aus einer Bilderreihe wollte ich vor einigen Tagen ein Zeitraffer-Video erstellen. Zur Umsetzung auf der Kommandozeile entschied ich mich für FFmpeg. Dort sieht der entsprechende Aufruf wie folgt aus:

ffmpeg -start_number 1 -i img_%d.jpg -vcodec mpeg4 video.mp4

In diesem Fall ist die Bilderreihe in fortlaufenden Bilddateien nach dem Schema img_1.jpg, img_2.jpg usw. abgelegt. Das fertige Video wird in der Datei video.mp4 gespeichert. Die Startnummer kann frei gewählt werden; die Nummerierung muss hierbei ununterbrochen sein, damit die komplette Bilderreihe im Video landet.