tovotu

2. Februar 20201
Nitter auf einem Uberspace einrichten
Sprache:Nimble - OS:Uberspace

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.

Für den Betrieb von Nitter wird ein Redis-Server benötigt, den wir gemäß der Anleitung auf lab.uberspace.de installieren. Anders als dort beschrieben, betreiben wir dafür aber keinen Socket, sondern wir gestalten unsere $HOME/.redis/conf wie folgt:

daemonize no
dir /home/$USER/.redis
dbfilename temp.rdb

Für die eigentliche Installation von Nitter müssen wir nun einige 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 bei den Zeilen für replaceTwitter und hostname im Nitter-Verzeichnis ein. Die Zeile mit redisHost belassen wir unverändert bei dem Standardwert localhost.

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. Falls wir eine externe Domain benutzen, geben wir diese anstelle des Schrägstrichs / an.

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