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.