Nitter

Nitter is een gratis en open source alternatieve Twitter front-end die zich richt op privacy en prestaties. Het project is geïnspireerd door het Invidious-project.

Functies

  • Geen JavaScript vereist: Werkt volledig zonder JavaScript.
  • Geen advertenties: Volledig vrij van reclame.
  • Privacybescherming: Alle verzoeken verlopen via de backend; de cliënt communiceert nooit rechtstreeks met Twitter. Dit voorkomt dat Twitter je IP-adres of JavaScript-fingerprint kan tracken.
  • Geen ontwikkelaarsaccount nodig: Maakt gebruik van de onofficiële API van Twitter.
  • Lichtgewicht: Geschreven in Nim (60KB vergeleken met 784KB van twitter.com).
  • RSS-feeds: Beschikbaar per instantie (vaak uitgeschakeld vanwege misbruik).
  • Thema's: Ondersteuning voor verschillende visuele thema's.
  • Mobiele ondersteuning: Responsief design voor gebruik op smartphones.
  • Licentie: AGPLv3 gelicenseerd; commerciële/propriëtaire instanties zijn niet toegestaan.

Roadmap

  • Embeds: (Zie de Embeds-gids op de wiki).
  • Account-systeem: Ondersteuning voor een persoonlijke tijdlijn.
  • Archivering: Mogelijkheid tot het archiveren van tweets en profielen.

Waarom Nitter?

Het is onmogelijk om Twitter te gebruiken zonder JavaScript ingeschakeld, en sinds 2024 is een account verplicht. Voor privacybewuste gebruikers is het essentieel om JavaScript-analyses en IP-gebaseerde tracking te voorkomen. Zelfs met een VPN en tools zoals uBlock of uMatrix is volledige anonimiteit lastig; men kan namelijk nog steeds nauwkeurig worden getrackt via browser-fingerprinting, zelfs zonder JavaScript. Dit werd extra urgent nadat Twitter de mogelijkheid voor gebruikers om te bepalen of hun gegevens naar adverteerders worden verzonden, heeft verwijderd.

Door een eigen instantie van Nitter te gebruiken (bijvoorbeeld gehost op een VPS), kun je Twitter bezoeken zonder JavaScript en met behoud van je privacy. Naast privacy is Nitter gemiddeld ongeveer 15 keer lichter dan Twitter en laden pagina's (zoals tijdlijnen) in de meeste gevallen 2 tot 4 keer sneller.

In de toekomst wordt een eenvoudig account-systeem toegevoegd waarmee je Twitter-gebruikers kunt volgen. Hierdoor kun je een schone, chronologische tijdlijn hebben zonder dat je een Twitter-account nodig hebt.

Installatie

Afhankelijkheden

  • libpcre
  • libsass
  • redis of valkey

Om Nitter te compileren is een Nim-installatie vereist (zie nim-lang.org voor details). Dit kan systeembreed of in een specifieke gebruikersmap worden geïnstalleerd.

Voor het compileren van de SCSS-bestanden is libsass nodig. Op Ubuntu en Debian kan hiervoor libsass-dev worden gebruikt.

Redis is vereist voor caching en in de toekomst voor accountinformatie. Aangezien Redis sinds 2024 niet meer open source is, wordt het gebruik van de fork Valkey aanbevolen. Dit is op de meeste distributies beschikbaar als redis of redis-server (Ubuntu/Debian), of valkey/valkey-server. De standaardconfiguratie volstaat; Nitter is standaard ingesteld op localhost en de standaardpoort.

Handmatige build-instructies

Hieronder volgt de procedure om een Nitter-gebruiker aan te maken, de repository te klonen en het project inclusief SCSS- en MD-bestanden te bouwen:

# useradd -m nitter
# su nitter
$ git clone https://github.com/zedeus/nitter
$ cd nitter
$ nimble -l build -d:danger --mm:refc
$ nimble -l scss
$ nimble -l md
$ cp nitter.example.conf nitter.conf

Configureer in nitter.conf je hostname, poort, HMAC-sleutel, HTTPS-instellingen (deze moeten correct zijn voor cookies) en de Redis-informatie.

Om Redis te starten, gebruik je redis-server --daemonize yes of systemctl enable --now redis (of redis-server, afhankelijk van de distributie). Start Nitter door ./nitter uit te voeren of via de onderstaande systemd-service. Het wordt sterk aangeraden om Nitter achter een reverse proxy zoals Nginx of Apache te plaatsen voor veiligheid en prestaties.

Docker

De Docker-image is beschikbaar op: https://hub.docker.com/r/zedeus/nitter Opmerking: De gepubliceerde image is multi-arch; zedeus/nitter:latest draait native op zowel amd64 als arm64.

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

  1. Configuratiebestand maken:

De Docker-commando's mounten het configuratiebestand in de container, dus dit moet vooraf op de host bestaan.

  • Als je de repo hebt gekloond: cp nitter.conf nitter.example.conf
  • Als je de prebuilt image gebruikt: download nitter.example.conf en bewaar deze als nitter.conf.
  1. Builden en draaien:

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

  1. Prebuilt image gebruiken:

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

  1. Docker-compose (Nitter en Redis als aparte containers):

Wijzig redisHost in nitter.conf van localhost naar nitter-redis en voer uit: ``bash docker-compose up -d ` Let op: De Docker-commando's mounten nitter.conf (en sessions.jsonl` bij docker-compose) vanuit de huidige directory. Als het bestand niet bestaat, maakt Docker er stilzwijgend een directory van, waardoor de container faalt. Verwijder in dat geval de directory en maak het bestand aan zoals beschreven.

systemd

Om Nitter via systemd te draaien, kan het volgende servicebestand worden gebruikt:

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

[Service]
Type=simple
# set user and group
User=nitter
Group=nitter
# configure location
WorkingDirectory=/home/nitter/nitter
ExecStart=/home/nitter/nitter/nitter
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

Activeer en start de service vervolgens met: systemctl enable --now nitter.service

Logging

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

  • Via systemd: journalctl -u nitter.service (voeg --follow toe om de laatste 15 regels live te volgen).
  • Via Docker: docker logs --follow <container_id>

Contact en Donaties

Contact

  • Matrix: Je kunt het Matrix-kanaal joinen.
  • Persoonlijk: Email naar zedeus@pm.me.
  • Juridisch: Voor juridische vragen en DMCA-verzoeken, contacteer legal@poast.org.

Donaties

  • BTC: bc1qpqpzjkcpgluhzf7x9yqe7jfe8gpfm5v08mdr55
  • ETH: 0x24a0DB59A923B588c7A5EBd0dBDFDD1bCe9c4460
  • XMR: 42hKayRoEAw4D6G6t8mQHPJHQcXqofjFuVfavqKeNMNUZfeJLJAcNU19i1bGdDvcdN6romiSscWGWJCczFLe9RFhM3d1zpL
  • SOL: FF5bheiD5AqPEdc3eyjymJ8AoMRF1hS78Ht6FiSZZF1t
  • $Nitter: 4fSxCKc91ELQYVdv3tmHW8R15KoALPwEngyoQe1Xpump
  • ZEC: u1vndfqtzyy6qkzhkapxelel7ams38wmfeccu3fdpy2wkuc4erxyjm8ncjhnyg747x6t0kf0faqhh2hxyplgaum08d2wnj4n7cyu9s6zhxkqw2aef4hgd4s6vh5hpqvfken98rg80kgtgn64ff70djy7s8f839z00hwhuzlcggvefhdlyszkvwy3c7yw623vw3rvar6q6evd3xcvveypt

Bronnen

De wiki bevat een lijst met actieve instanties en browser-extensies die door de community worden beheerd.