Nitter auf einem Uberspace einrichten

Wie so viele große moderne Webseiten ist auch Twitter vollgepackt mit JavaScript-Code, der Besucherinnen ausspäht, ausbremst, nervt, mit Werbung bombadiert und viel zu viele Ressourcen (Speicher, CPU) auf dem Client verbraucht. Außerdem ist so eine JavaScript-basierte Benutzeroberfläche oft noch nicht mal besonders komfortabel zu bedienen.

Glücklicherweise gibt es mit Nitter eine alternative Benutzeroberfläche für YouTube, die als Open-Source-Projekt entwickelt wird. In diesem Artikel stelle ich vor, wie man diese Proxy-artige Software auf einem Uberspace einrichtet und betreibt.

Leider ist die offizielle Installationsanleitung für Nitter etwas knapp gehalten. Da Accounts auf Uberspace einfache User-Accounts auf einem Multiuser-System sind, müssen wir die Abhängigkeiten aus verschiedenen Quellen zusammensuchen und im Benutzerverzeichnis unterbringen.

Zuerst fügen wir die folgenden Zeilen der $HOME/.bash_profile hinzu:

# nim Environment
export PATH=$PATH:$HOME/.nimble/bin
 
# libsass Environment
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/opt/libsass/lib
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$HOME/opt/libsass/lib/pkgconfig

Anschließend setzen wir mit dem einfachen Befehl curl https://nim-lang.org/choosenim/init.sh -sSf | sh eine Umgebung für die Programmiersprache Nim auf, in der Nitter geschrieben ist.

Für die Kompilierung werden wir außerdem die C-Bibliothek libsass benötigen, die wir wie folgt einbinden:

$ mkdir $HOME/opt
$ cd $HOME/opt
$ git clone https://github.com/sass/libsass
$ cd libsass
$ BUILD="shared" make

Jetzt loggen wir uns einmal aus und wieder ein. Dann können wir endlich Nitter aus dem offiziellen Git-Repository beziehen und kompilieren:

$ cd $HOME/opt
$ git clone https://github.com/zedeus/nitter
$ cd nitter
$ nimble build -d:release
$ nimble scss
$ mkdir ./tmp

Unsere Domain bzw. Subdomain tragen wir in die Konfigurationsdatei nitter.conf im Nitter-Verzeichnis ein.

Nitter soll im Produktivbetrieb als Hintergrundprozess laufen, was wir mit supervisord sicherstellen können. Dazu legen wir die Datei $HOME/etc/services.d/nitter.ini mit dem folgenden Inhalt an:

[program:nitter]
environment=PATH="%(ENV_PATH)s:%(ENV_HOME)s/.nimble/bin"
directory=%(ENV_HOME)s/opt/nitter
command=%(ENV_HOME)s/opt/nitter/nitter
stdout_logfile=%(ENV_HOME)s/logs/nitter.out.log
stderr_logfile=%(ENV_HOME)s/logs/nitter.err.log
autostart=yes
autorestart=yes

Schließlich können wir den Prozess mit supervisorctl reread starten und den Status mit supervisorctl status überprüfen.

Wenn alles gut gegangen ist, lauscht Nitter jetzt auf Port 8080. Damit das auch von draußen sichtbar ist, richten wir mit uberspace web backend set / --http --port 8080 einen entsprechenden Reverse-Proxy ein.

Nitter lässt sich übrigens besonders komfortabel in Kombination mit der Firefox-Erweiterung Invidition verwenden. Dort lässt sich auch die alternative YouTube-Oberfläche Invidious aktivieren, deren Installation auf Uberspace ich in einem weiteren Artikel vorstelle.

2. Februar 2020