Shitter is een gratis, open-source alternatieve interface voor Twitter, geïnspireerd door projecten als Nitter en Invidious. Het project is specifiek ontworpen om privacy te waarborgen en prestaties te verbeteren door JavaScript en advertenties volledig uit te sluiten, waardoor browser-fingerprinting en tracking door Twitter worden voorkomen.
Belangrijkste kenmerken:
- Privacy: Verzoeken verlopen via een backend, waardoor het IP-adres van de gebruiker verborgen blijft.
- Efficiëntie: Geschreven in de taal Nim, wat resulteert in een zeer compacte client die pagina's tot vier keer sneller laadt dan de officiële website.
- Toegankelijkheid: Er is geen Twitter-account of ontwikkelaarsaccount vereist.
- Functionaliteit: Ondersteunt RSS-feeds, diverse thema's en responsive design.
Technische implementatie: Het project kan worden geïnstalleerd via Docker (in combinatie met Redis of Valkey) of handmatig worden gecompileerd vanuit de broncode. Voor beheer op Linux-systemen wordt het gebruik van systemd ondersteund, en het wordt aanbevolen om de applicatie achter een reverse proxy zoals Nginx of Apache te plaatsen voor optimale beveiliging.
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.
- 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.
- 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 ``
- Gebruik van de prebuilt Docker-image:
``bash docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host mv12star/shitter:latest ``
- 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
- Gebruiker aanmaken en repo klonen:
``bash # useradd -m nitter # su nitter $ git clone https://codeberg.org/shitter/shitter $ cd nitter ``
- Compileren:
``bash $ nimble -l build -d:danger --mm:refc $ nimble -l scss $ nimble -l md $ cp nitter.example.conf nitter.conf ``
- Configuratie:
Stel in nitter.conf de hostname, poort, HMAC-sleutel, HTTPS-instellingen (essentieel voor cookies) en Redis-informatie in.
- 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.
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.
- 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.
- 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 ``
- Gebruik van de prebuilt Docker-image:
``bash docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host mv12star/shitter:latest ``
- 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
- Gebruiker aanmaken en repo klonen:
``bash # useradd -m nitter # su nitter $ git clone https://codeberg.org/shitter/shitter $ cd nitter ``
- Compileren:
``bash $ nimble -l build -d:danger --mm:refc $ nimble -l scss $ nimble -l md $ cp nitter.example.conf nitter.conf ``
- Configuratie:
Stel in nitter.conf de hostname, poort, HMAC-sleutel, HTTPS-instellingen (essentieel voor cookies) en Redis-informatie in.
- 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.