Shitter - een Nitter-fork

Kenmerken

  • Geen JavaScript of advertenties: De interface is schoon en vrij van tracking.
  • Privacy-bescherming: Alle verzoeken verlopen via de backend; de client communiceert nooit rechtstreeks met Twitter. Dit voorkomt dat Twitter het IP-adres of de JavaScript-fingerprint van de gebruiker kan volgen.
  • Geen account vereist: Maakt gebruik van de onofficiële API van Twitter, waardoor een ontwikkelaarsaccount niet nodig is.
  • Lichtgewicht: Dankzij het gebruik van de programmeertaal Nim is de client zeer compact (60KB tegenover 784KB bij twitter.com).
  • Extra functionaliteiten: Ondersteuning voor RSS-feeds, diverse thema's en een responsive design voor mobiele apparaten.

Waarom Shitter?

Sinds 2024 is het onmogelijk om Twitter te gebruiken zonder JavaScript ingeschakeld en is een accountverplichting ingevoerd. Voor privacybewuste gebruikers is het essentieel om JavaScript-analyses en tracking op basis van IP-adressen te voorkomen.

Zelfs met een VPN en zware adblockers (zoals uBlock of uMatrix) kan een browser via 'fingerprinting' nauwkeurig gevolgd worden, zonder dat daar JavaScript voor nodig is. Dit is extra relevant geworden nadat Twitter de mogelijkheid voor gebruikers om controle uit te oefenen over het verzenden van data naar adverteerders heeft verwijderd.

Door een instantie van Nitter/Shitter te gebruiken (bijvoorbeeld gehost op een VPS), kan men Twitter browsen zonder JavaScript en met behoud van privacy. Daarnaast is Nitter gemiddeld ongeveer 15 keer lichter dan Twitter en laden pagina's (zoals tijdlijnen) in de meeste gevallen 2 tot 4 keer sneller.

Bronnen

De wiki bevat de volgende informatie:

  • Een lijst met publieke instanties.
  • Forks van de Nitter-coderepository.
  • Browser-extensies voor automatische doorverwijzing naar Nitter.
  • Handleiding: Het zelf hosten van een Nitter-instantie.
  • Handleiding: Hoe je sessie-tokens verkrijgt.
  • Handleiding: Het gebruik van Nitter-embeds.

Bijdragen

Deze repository accepteert geen Pull Requests. Bijdragen zijn echter welkom in de vorm van Patch-bestanden. Deze kunnen worden ingediend via een 'issue' en zijn eenvoudiger te mergen en te verwerken.

Installatie

Docker

De Docker-image is beschikbaar op: https://hub.docker.com/r/mv12star/shitter

Let op: De gepubliceerde image is multi-arch; mv12star/shitter:latest draait native op amd64, armv7 en arm64.

Om Nitter met Docker te draaien, moet Redis apart geïnstalleerd en gestart zijn voordat de container kan worden opgestart.

  1. Configuratiebestand aanmaken:

Het configuratiebestand moet op de host bestaan voordat de Docker-commando's het bestand mounten in de container.

  • Als u de repo heeft gekloond: cp nitter.example.conf nitter.conf
  • Als u de prebuilt image gebruikt zonder lokale clone: download nitter.example.conf en sla dit op als nitter.conf.
  1. Bouwen en draaien in Docker:

``bash docker build -t nitter:latest . docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host nitter:latest ``

  1. Gebruik van de prebuilt Docker-image:

``bash docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host mv12star/shitter:latest ``

  1. Gebruik van docker-compose (voor Nitter en Redis):

Wijzig redisHost in nitter.conf van localhost naar nitter-redis, en voer vervolgens uit: ``bash docker-compose up -d ` Waarschuwing: Als een gemount bestand (zoals nitter.conf of sessions.jsonl) niet bestaat, maakt Docker er stilzwijgend een directory van, waardoor de container faalt met de melding: not a directory`. Verwijder in dat geval de directory en maak het bestand aan zoals beschreven.

systemd

Om Nitter via systemd te draaien, kan het volgende service-bestand worden gebruikt:

[Unit]
Description=Nitter (An alternative Twitter front-end)
After=syslog.target
After=network.target

[Service]
Type=simple
# Stel gebruiker en groep in
User=nitter
Group=nitter
# Configureer locatie
WorkingDirectory=/home/nitter/nitter
ExecStart=/home/nitter/nitter/nitter
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

Activeer en start de service met:

systemctl enable --now nitter.service

Logging

Nitter print momenteel enkele fouten naar stdout; er is geen volledige logging geïmplementeerd.

  • Bij systemd: Controleer de output met journalctl -u nitter.service (voeg --follow toe voor de laatste 15 regels).
  • Bij Docker: Gebruik docker logs --follow <container id>.

Bouwen vanuit broncode

Afhankelijkheden

  • libpcre
  • libsass
  • redis of valkey

Voor het compileren van Nitter is een Nim-installatie vereist (zie nim-lang.org). Voor het compileren van de SCSS-bestanden is libsass nodig (op Ubuntu/Debian: libsass-dev).

Redis/Valkey: Redis is vereist voor caching en toekomstige accountinformatie. Omdat Redis sinds 2024 niet meer open source is, wordt het gebruik van de fork Valkey aanbevolen. Dit is meestal beschikbaar als redis of redis-server (Ubuntu/Debian) of valkey/valkey-server.

Stappenplan voor build

  1. Gebruiker aanmaken en repo klonen:

``bash # useradd -m nitter # su nitter $ git clone https://codeberg.org/shitter/shitter $ cd nitter ``

  1. Compileren:

``bash $ nimble -l build -d:danger --mm:refc $ nimble -l scss $ nimble -l md $ cp nitter.example.conf nitter.conf ``

  1. Configuratie:

Stel in nitter.conf de hostname, poort, HMAC-sleutel, HTTPS-instellingen (essentieel voor cookies) en Redis-informatie in.

  1. Uitvoeren:

Start Redis via redis-server --daemonize yes of systemctl enable --now redis. Start Nitter door ./nitter uit te voeren of via de systemd-service.

Aanbeveling: Draai Nitter achter een reverse proxy zoals Nginx of Apache voor betere beveiliging en prestaties.

Communicatie

Gebruikers kunnen zich aansluiten bij het Matrix-kanaal voor verdere interactie.