Nitter is een open source alternatieve front-end voor Twitter, specifiek ontworpen om de privacy van gebruikers te beschermen en de snelheid van de interface te verhogen. Door gebruik te maken van een onofficiële API en het volledig elimineren van JavaScript en advertenties, voorkomt Nitter dat Twitter gebruikers kan tracken via IP-adressen of browser-fingerprinting.
De belangrijkste kenmerken zijn:
- Privacy: Geen JavaScript vereist en alle verzoeken lopen via een backend.
- Prestaties: Geschreven in Nim, waardoor het aanzienlijk lichter en sneller is dan de officiële website.
- Functionaliteit: Ondersteuning voor RSS-feeds, diverse visuele thema's en een responsief mobiel design.
- Licentie: Beschikbaar onder de AGPLv3-licentie.
Het artikel biedt uitgebreide technische instructies voor installatie, waaronder handmatige build-instructies met Nim, configuratie van Redis (of de open source fork Valkey), en implementatiemogelijkheden via Docker en systemd. Ondanks juridische waarschuwingen van X Corp. wordt het project voortgezet.
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.
- 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.
- Builden en draaien:
``bash docker build -t nitter:latest . docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host nitter:latest ``
- Prebuilt image gebruiken:
``bash docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host zedeus/nitter:latest ``
- 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.
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.
- 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.
- Builden en draaien:
``bash docker build -t nitter:latest . docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host nitter:latest ``
- Prebuilt image gebruiken:
``bash docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host zedeus/nitter:latest ``
- 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.