Mastodonissa on vallalla jonkun verrankin tiettyä yksityisyysajattelua. Tosin ei sen enempää kuin muuallakaan somessa, jossa liikutaan nimimerkeillä. Mutta minusta Mastodonissa on enemmän ns. lukittuja profiileja. Sitä en tiedä, että johtuuko se Mastodonin mahdollistamasta toiminnallisuudesta vai onko ihmisillä, jotka hakeutuvat Mastodoniin, määrätty bias.
Eräänlainen fakta kuitenkin on, että siinä vaiheessa kun alkaa ärsyttämään tai mietityttämään some-yritysten harrastama vakoilu, profilointi ja algoritmien pakkosyöttämä syöte, niin suunta on hyvin nopeasti lähimmälle Mastodon-instanssille.
Siitä on hyvin lyhyt loikka tilanteeseen, että mietityttää muut säädöt. Minä vaihdoin nimipalvelinkäyttöni Googlelta EU:n DNS-palveluun. Toki sitäkin pyörittää yksityinen yritys, mutta se on vahvasti EU:n kontrollissa. Käytän kohtuullisen usein omaa VPN:ää muuhun selailuun.
Pro tip: minulla VPN-tarve ei ole rikkoa (täysin turhaa) Netflixin maarajoitusta – tosin, en ole heidän asiakkaansa – tai päästä PirateBayhin, vaan käytän sitä heikentämään seurantaa ja tuomaan wifi-turvaa (Suomessa aika harvinaista, jos on laskuliittymä). Siksi se antaa suomalaisen IP:n, jolloin myös pankit toimivat, ja Yle.
Seurannan kampittamisessa se on hieman heikko, koska IP ei muutu. Mutta IP:lle annetaan muutenkin totaalisen arvoton merkitys. Ei se ole millään tavalla oleellinen asia seurannassa, ja muuttuu useimmilla joko usein tai todella usein. Olen vakaasti sitä mieltä, että IP-osoitteista puhuminen kertoo ammattitaidottomuudesta tai on savuverho, jolla ihmisiä harhautetaan olemaan miettimättä merkityksellisiä asioita.
Olen osa ongelmaa, koska minulla on Googlen mainoksia esittäviä sivustoja. Mutta jonkun täytyy maksaa laskut, ja minulla ei sitä rahaa ole. Kävijämääristä päätellen sisältö kiinnostaa, mutta siitä ei olla valmiita maksamaan minulle. Ilmaisia lounaita on melkoisen harvakseltaan, joten maksaminen tapahtuu sitten Googlen kautta.
Enkä tunne edes huonoa omatuntoa, koska valtaosa kävijöistä on jo myynyt itsensä ja sielunsa Googlelle, Facebookille ja monelle muullekin yritykselle.
Silti yritän hieman keventää tuota eräänlaista seurantajalanjälkeä.
Olen siirtänyt kävijätilastoinnin pois Googlelta ja sen tekee itsehostattu Matomo. Se ei seuraa eikä profiloi. Käytän hakuihin omaa SearXNG-metahakukonetta (parempi, eikä kerro kuka hakee).
Hostaan tor-bridgeä omaan selailuun (on se eräällä tavalla julkinen). Samaten tarjoan kaksi entry nodea tor-verkkoon – exitejä tarvittaisiin lisää, mutta siihen leikkiin minulla ei riitä rahkeet eikä talous. Ja se on sitten ihan tor-käyttäjien oma vika. Tai oikeammin – pienen vähemmistön vika, jotka aiheuttavat valtavasti ongelmia.
Siirsin valokuvani (räpsyjä ne ovat) itsehostaamaani Pixelfediin ja some-toimintani Mastodoniin, itsehostattuun siinäkin. Molemmat ovat samalla avoimia, mutta kuten olen aina sanonut, niin isompiakin on tarjolla. Mutta federoidussa ja algoritmivapaassa somessa suuruus auttaa talouden hoidossa. Näkyvyyden suhteen ei ole eroa.
Sivustoni on peilattu onion-verkkoon. Ne toimivat, mutta määrätyillä rajoitteilla. Kuten että Youtuben upotukset eivät toimi, koska Google ei sitä salli. SearXNG-instanssini ei ole onion-osoitteella, koska en osaa tehdä sitä. Mutta koska se ei paljasta käyttäjää hakukoneille, niin en osaa pitää tuota aitona akuutisti ratkaistavana ongelmana.
Nykyään myös Mastodon-instanssini kvarkki.nexus on löydettävissä onio-osoitteella. Sekin on mirror, koska federointi nyt ei vaan toimi tor-verkossa. Mutta sen käyttö estää muuta maailmaa näkemästä kävijän kulun ja saapumisen Mastodoniin. Eikä federointi per se kerro käyttäjästä paljoakaan – ainakaan silloin kun hieman miettii mitä profiilissaan kertoo ja mitä julkaisee.
Kysyn Mastodonissa:
Onionin salliminen ja Mastodon? Ymmärrän toisaalta, että vahvasti anonyymissä ympäristössä, jossa lukollisten profiilien määrä näyttäisi olevan kasvussa, saattaisi olla tilausta kytkeä instanssi ja onion yhteen. Mutta… onko se samalla kutsukortti boteille ja hörhöille tulla roskaamaan ja häritsemään? Ja miten moisessa moderointia edes hoidettaisiin (vaikka IP-filtteröinti on lähtökohtaisesti aika onnetonta ja kohdistuu vain taviksiin ja script grand-kiddieihin).
Joten uhka vai mahdollisuus?
Sain vastauksen, että moisia on. Mastodon-instansseja, joilla on onion-osoite.
Pengoin hetken ja vanha tuttu mirror-liikennehän siellä taustalla on. Joten käärin hihat ylös (pientä liioittelua… siihen meni 10 minuuttia ja toinen lisää, kun en saanut heti ulkopuolisia kuvia näkyviin).
Joten kvarkki.nexus on saavutettavissa myös urlilla
http://nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion
Mastodonin tor-mirror
Näin toteutin oman ratkaisuni. En tiedä onko se oikein ja olisiko parempikin ratkaisu, mutta muutakaan tapaa en osaa.
VPS on Ubuntu. Ohjeet ovat suoraan kopio siitä miten minä tein, joten muuta oleelliset asiat, kuten hostit. Olen yrittänyt muistaa laittaa mukaan sudon kun sitä tarvitaan, mutta koska itse teen töitä rootin roolissa, niin jostain se on varmasti unohtunut. Samaten osassa pitää olla mastodon-käyttäjänä. Mutta oletan, että instanssin adminina suurin piirtein tiedät kaiken tuon.
Ohjeet eivät ole dockerille, mutta ne saa sovellettua. Hieman joutunee säätämään proxyjen ja docker-compose.yml
kanssa. Se on kuitenkin maailma, josta tiedän heikosti ja jota ymmärrän huomattavan vähän.
Tor: asennus ja asetukset
Tästä se alkaa, kuten aina. Asennetaan tor. Siihen voi suhtautua kuin web-serveriin tässä tilanteessa.
sudo apt update
sudo apt install tor -y
Asetukset kuntoon:
sudo nano /etc/tor/torrc
Poista kaikki ja lisää:
# Mastodon onion -palvelu
HiddenServiceDir /var/lib/tor/mastodon_onion/
HiddenServiceVersion 3
# web (Nginx onion-frontend kuuntelee 127.0.0.1:8091)
HiddenServicePort 80 127.0.0.1:8091
- portti saa olla jokin muukin. Minä vain laitoin tuon, koska se tuli ensimmäisenä mieleen. Pitäisi varmaan kehittää jokin systeemi milloin mitäkin porttia käyttää
Otetaan tor käyttöön
sudo systemctl enable --now tor
tor.service
on ylin tyyppi, jonka ainoa tehtävä on pitää kaikki muut tor-servicet käynnissä. Joten jatkossa kannattaa, uskoisin, käyttää sitä varsinaista vastuussa olevaa kaveria:tor@default.system
Nyt luotiin vaadittavat avaimet hostille, jota onion käyttää. Eräällä tavalla Nginxin tai Apache2:den vhostia vastaava, jos tuo vertaus sallitaan. Vertaus on kylläkin väärä, koska se aito vhost tarvitaan myös. Ehkä tuon voisi mieltää vhostin aluksi, jossa kerrotaan listen ja ssl?
Instanssin host, tai url, löytyy täältä:
cat /var/lib/tor/mastodon-onion/hostname
Nginx ja tor-mirror
Tehdään onion-verkossa näkyvälle mirrorille oma vhost:
sudo nano /etc/nginx/sites-available/mastodon-onion.conf
Lisää ja vaihda oma host /var/lib/tor/hostaname
mukaisesti:
server {
listen 127.0.0.1:8091;
server_name nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion;
server_tokens off;
client_max_body_size 40M;
root /home/mastodon/live/public;
# Static ja niille cache
location ^~ /packs/ { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri @proxy; }
location ^~ /system/ { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri @proxy; }
location ^~ /emoji/ { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri @proxy; }
location ^~ /avatars/ { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri @proxy; }
location ^~ /headers/ { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri @proxy; }
location = /sw.js { add_header Cache-Control "public, max-age=0, must-revalidate"; try_files $uri @proxy; }
location = /favicon.ico { try_files $uri @proxy; }
location = /manifest.json { try_files $uri @proxy; }
# Streaming (WebSocket)
location ^~ /api/v1/streaming {
proxy_pass http://127.0.0.1:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion;
proxy_set_header X-Forwarded-Host nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
# Mastodon-app
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion;
proxy_set_header X-Forwarded-Host nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
}
}
- huomaa: onion ei aseta CSP:tä. Se käyttää clearnetin sääntöjä. En näe siinä ongelmaa tai riskiä.
Otetaan vhost käyttöön:
sudo ln -s /etc/nginx/sites-available/mastodon-onion.conf /etc/nginx/sites-enabled/
Lisätään https-maailman Mastodoniin vinkki, että onion-versiokin löytyy. Se sallii tor-selaimen vaihtaa onion-osoitteeseen, jos on saavuttu clearnet-urlilla. Joten avaa varsinainen host ja lisää sinne nämä, mutta toki omalla urlilla.
Ihan alkuun ennen server {
lisätään map onion-osoitteelle. Sillä saadaan hieman varmuutta vhostin pomppimisiin eri proxyjen, http/2 ja muiden ihmeellisyyksien välillä. Eikä tarvita if-lauseita, koska onion-badge esitetään vain https-sisällölle.
map $sent_http_content_type $onion_location {
"~*text/html" "http://nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion$request_uri";
default "";
}
Tämä laitetaan kahteen lohkoon. Ai miksikö kahteen? Koska en ole varma riittääkö vain yksi. Kokeile, jos kiinnostaa.
Lohkot ovat location /
ja location @proxy
add_header Onion-Location $onion_location always;
add_header Vary "Accept, Accept-Encoding" always;
Vary
on aika oleellinen sille, että onion-ilmoituksen klikkaaminen avaisikin onion-linkin, eikä vaan laittaisi osoitepalkkiin pelkän urlin ilman http://
. Minä en tuota keksinyt, vaan tuli aikoinaan vastaan, kun vastaavaa ongelmaa selvittelin. Jos oikein ymmärrän, niin se potkaisee cachea ja käskee tehdä mitä on määrätty.
Perään tuttu Nginxin uudelleenkäynnistys.
Mastodonin tor-säädöt
Lisää Mastodonin .env.production
tiedostoon:
sudo -u mastodon nano /home/mastodon/live/.env.production
# Canonical
LOCAL_DOMAIN=kvarkki.nexus
WEB_DOMAIN=kvarkki.nexus
# Salli onion-host mirrorina
ALTERNATE_DOMAINS=nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion
# Mastodonin täytyy luottaa reverse proxyyn
TRUSTED_PROXY=127.0.0.1,::1
TRUSTED_PROXY_IP=127.0.0.1
# Media nopeammin läpi
MEDIA_PROXY_ENABLED=true
# HTTPS on clearnetissä, mutta .onion kulkee http:na.
LOCAL_HTTPS=true
Käynnistä Mastodon uudestaan:
sudo systemctl restart mastodon-web
sudo systemctl restart mastodon-sidekiq
sudo systemctl restart mastodon-streaming
Testataan:
# HTML
curl -I --socks5-hostname 127.0.0.1:9050 \
http://nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion/
Ja websocket:
curl --socks5-hostname 127.0.0.1:9050 -i \
-H 'Host: nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion' \
-H 'Upgrade: websocket' \
-H 'Connection: Upgrade' \
-H 'Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==' \
-H 'Sec-WebSocket-Version: 13' \
"http://nexusduxstq7u3dsc65343lf7ydhuzez7ktfcyhp3ro5oxhpqfql3kqd.onion/api/v1/streaming/?stream=public"
- tuosta vastauksena tulee 401 Unauthorized koska token puuttuu. Mutta redirect toimii.
Viimeinen testi tor-selaimella.
Näitä kannattaa seurata:
sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
ja
journalctl -u mastodon-web -u mastodon-streaming -f
Yleistä pähkäilyä
Jokainen onion-käyttäjä tietää, että selailu hidastuu hieman. Mutta omilla testeillä se vaikutti enemmältikin instanssin ensimmäiseen avautumiseen ja sitten cache hyppäsi leikkiin mukaan, ja merkityksellistä hidastelua ei enää suuremmin näkynyt. Tai näkyi, sillä viestien liitekuvat latautuivat hieman hitaasti, mutta avautumisen näki silmin.
Tämä temppu sallii nyt tor-käyttäjille mastodon-instanssin käytön ilman, että tehdäänkäyttäjänpuolelta minkäälaisia DNS-pyyntöjä mihinkään, mutta muuta merkitystä sillä ei ole. Loppu on sitten ihan normaalia tor-verkon liikenteen salausta yhdessä exit noden kuormituksen säästämisellä.
Tuo joka pätee kaikessa tor-liikenteessä ja yksityisyys varsinaisesti perustuu käyttäjän muuhun toimintaan ja mitä selaimelleen tallentaa. ActivityPub liikenne federoinnin takia jatkuu kuten normaalisti ja paljastaa sitten sen mitä paljastaa.
Minulle ylläpitäjänä se poistaa mahdollisuuden bannata onion-käyttäjän IP, mutta se on muutenkin ehkä ylimainostetuin työkalu; minusta täysin merkityksetön. Samalla median proxyaminen serverini kautta tuo hieman kuormaa lisää, mutta minun instanssillani tuo lisäys on täysin merkityksetön – varsinkin jos ja kun sitä ei kukaan käytä. Mutta onpahan optiona tarjolla.
Keskustele foorumilla Katiskan foorumi