Kako ne izgubiti svojega Bluesky računa, če PDS izgine
Ta objava je nadaljevanje širšega razmisleka o Blueskyju, ATmosferičnih orodjih in selitvah na alternativne PDS-je, zlasti Eurosky. Osredotoča se na zelo konkretno vprašanje: kako poskrbeti, da račun ostane prenosljiv tudi, če trenutni PDS odpove.
Iz različnih razlogov se lahko zgodi, da strežnik PDS, na katerem gostuje tvoj račun, izgine ali preneha delovati. Če se to zgodi nepričakovano, lahko ostaneš brez možnosti, da svoj račun in podatke preseliš drugam.1 Protokol AT takšno selitev načeloma omogoča, vendar ni samodejna, niti trivialna. Zato je smiselno vnaprej urediti nekaj ključnih stvari.
PDS, handle in DID
Kratka razlaga osnovnih pojmov:
- PDS: Strežnik, na katerem gostuje tvoj račun in prek katerega se tvoje objave ter podatki širijo v omrežje.
- Handle: Človeku prijazno uporabniško ime, na primer
ime.bsky.socialali lastna domena. Ni trajen in se lahko spremeni. - DID: Dejanska, trajna identiteta računa v protokolu AT. Je edinstveni identifikator in, za razliko od handla, ni spremenljiv.
Kaj gre lahko narobe
Če PDS, na katerem trenutno gostuješ, izgine ali preneha delovati, lahko tvoj račun hitro postane precej manj prenosljiv, kot se morda zdi na prvi pogled. V protokolu AT je namreč trenutni gostitelj računa zapisan v tvojem DID-dokumentu.2 Dokler ta kaže na PDS, ki je dosegljiv in ima delujoč repozitorij, je tvoj račun aktiven in ga je mogoče normalno uporabljati ali preseliti.
Ko pa PDS izgine, se situacija zaplete: če DID-dokument kaže na strežnik, ki ne obstaja več, ali če repozitorija ni mogoče več prebrati, je račun na ravni protokola "pokvarjen". Ni nujno izgubljen, je pa bistveno težje obnovljiv, selitev pa ni več trivialna. Za varno selitev tako ni dovolj, da poznaš svoje geslo; če želiš račun preseliti tudi v primeru, ko stari PDS ni več dosegljiv, moraš pravočasno urediti dve stvari:
- nadzor nad identiteto računa (torej nad DID‑om in ključi, ki ga podpisujejo),
- ločeno kopijo svojih podatkov (repozitorija), ki ni vezana na delovanje trenutnega PDS.
Rotacijski ključ in varnostna kopija CAR
V protokolu AT obstajata dva nivoja "lastništva" oziroma nadzora nad računom. Prvi je nadzor nad identiteto računa, drugi pa nadzor nad vsebino računa.
Rotacijski ključ je ključ, s katerim lahko potrjuješ spremembe v svojem DID-dokumentu. To pomeni, da z njim ne "odklepaš svojih objav", temveč dokazuješ, da imaš pravico svoj račun preusmeriti na drug PDS.
Uradna dokumentacija to jasno loči od običajnega podpisnega ključa:
- Podpisni ključ preverja in podpisuje repozitorij uporabnika (objave, všečke, sledenja …). Ta ključ je običajno v rokah trenutnega PDS‑ja.
- Rotacijski ključ pa je namenjen spremembam DID-dokumenta. To v praksi pomeni, da lahko njegov zasebni del hraniš ti sam, namesto da bi bil odvisen samo od trenutnega PDS-ja; prav zato lahko račun preseliš tudi takrat, ko stari PDS ni več dosegljiv ali ne sodeluje.
Varnostna kopija CAR rešuje drugo težavo: tvoje podatke. Izvoz repozitorija v .car datoteko vsebuje trenutne zapise tvojega računa, npr. objave, všečke, sledenja in druge javne zapise, ne vsebuje pa nujno vsega. Slike in drugi medijski blobi3 niso shranjeni neposredno v repozitoriju, zato sam CAR še ni popoln izvoz celotnega javnega računa. Za bolj poln izvoz javnega računa potrebuješ še blobe.
Skratka: rotacijski ključ ti pomaga rešiti račun, varnostna kopija CAR pa vsebino.
Ko si dodaš svoj rotacijski ključ, računa ne preseliš nikamor. Trenutni PDS ostane isti, handle ostane isti in v aplikaciji se praviloma ne zgodi nič vidnega. Sprememba je predvsem ta, da DID-dokument tvojega računa od tega trenutka dalje vsebuje še tvoj javni rotacijski ključ. S tem si vnaprej pripraviš dodatno pot za spremembo gostitelja računa, če bi jo kdaj potreboval.
Praktično gledano to pomeni naslednje:
- lokalno ustvariš nov par ključev,
- javni del dodaš v DID-dokument,
- zasebni del shraniš pri sebi,
- narediš še izvoz repozitorija in po možnosti blobov.
Če trenutni PDS nekoč izgine, lahko s tem zasebnim ključem dokažeš, da imaš pravico račun preusmeriti na nov PDS. Z varnostno kopijo CAR in blobov pa si pomagaš obnoviti vsebino računa.
Kako to nastaviš korak za korakom
1. Namestiš goat. Za delo z računom, PLC ukazi in izvozi repozitorija je priročno uporabiti goat, uradni ukaznovrstični pripomoček iz atproto/Bluesky ekosistema.
Če uporabljaš WSL/Ubuntu, je najlažja pot običajno prek .deb paketa iz GitHub Releases.4 Najprej v terminalu preveri arhitekturo:
uname -m
Če dobiš x86_64, potrebuješ paket za amd64. Če dobiš aarch64, potrebuješ paket za arm64.
Nato v brskalniku odpri bluesky-social/goat/releases in prenesi ustrezen .deb paket za Linux. Ko je datoteka prenesena v mapo Downloads, jo v WSL namestiš takole:
cd /mnt/c/Users/TVOJE_WINDOWS_UPORABNISKO_IME/Downloads
ls
sudo apt update
sudo apt install ./goat*.deb
Preveriš še, ali ukaz deluje:
goat --help
2. Prijaviš se v svoj račun. Ko je goat nameščen, se prijaviš z app passwordom, ne z glavnim geslom računa.5
goat account login -u TVOJ_HANDLE -p 'TVOJE_APP_GESLO'
Po prijavi se verjetno ne zgodi nič posebej vidnega. To je normalno.
3. Shraniš trenutno stanje DID/PLC dokumenta. Preden karkoli spreminjaš, je smiselno shraniti trenutno stanje:
goat account plc current > plc-before.json
Ta datoteka ti kasneje omogoča primerjavo med stanjem pred spremembo in po njej.
4. Lokalno ustvariš nov par ključev. Zdaj ustvariš nov par ključev:
goat key generate > rotation-key.txt
cat rotation-key.txt
V tej datoteki se nahajata dve pomembni stvari:
- Secret Key – zasebni ključ, ki ga moraš hraniti pri sebi,
- Public Key (DID Key Syntax) – javni ključ v obliki
did:key:....
Zasebni ključ shrani na vsaj dve ločeni varni mesti, idealno izven samega PDS-ja. Dober minimum je upravljalnik gesel (password manager) in še ena dodatna varna kopija.
5. Zahtevaš potrditveni token po e-pošti. Ker gre za spremembo, povezano z identiteto računa, je potreben še dodaten potrditveni token:
goat account plc request-token
Na e-poštni naslov računa prejmeš kodo.
6. Javni ključ dodaš med dovoljene rotacijske ključe. Ko dobiš token, med dovoljene rotacijske ključe dodaš javni did:key:... iz prejšnjega koraka:
goat account plc add-rotation-key --token TVOJ_EMAIL_TOKEN did:key:TVOJ_JAVNI_KLJUC
Če dobiš Success, to pomeni, da je bil nov javni ključ uspešno dodan v DID-dokument računa.
7. Preveriš, da je ključ res dodan. Po uspešnem ukazu si ponovno shraniš stanje:
goat account plc current > plc-after.json
Zdaj lahko primerjaš plc-before.json in plc-after.json ali pa preprosto odpreš plc-after.json in preveriš, ali se tvoj novi did:key:... pojavi v seznamu rotationKeys.
8. Narediš še varnostno kopijo repozitorija in blobov. Rotacijski ključ rešuje identiteto, ne pa vsebine. Zato je smiselno takoj narediti še izvoz repozitorija v formatu CAR in po možnosti še izvoz blobov:
goat repo export TVOJ_HANDLE
goat blob export TVOJ_HANDLE
Prvi ukaz ti ustvari .car datoteko z repozitorijem, drugi pa prenese vse javne blobe računa v mapo TVOJ_HANDLE_blobs, če ne določiš druge poti. Če želiš izvoz usmeriti drugam, lahko uporabiš goat blob export -o moja-mapa-z-blobi TVOJ_HANDLE, če želiš prej samo preveriti seznam blobov, pa goat blob ls TVOJ_HANDLE.
To je dober trenutek, da si te datoteke spraviš nekam varno in ločeno od računalnika, na katerem si jih ustvaril. Po koncu se lahko po želji še odjaviš z goat account logout.
Kaj se zgodi, če PDS res izgine
Če PDS, na katerem gostuješ, nekoč res ugasne, si z zgornjim postopkom pripraviš precej boljšo izhodiščno točko za migracijo. V idealnem primeru je pot potem približno taka:
- izbereš nov PDS,
- s svojim zasebnim rotacijskim ključem dokažeš nadzor nad identiteto računa,
- DID-dokument preusmeriš na nov PDS,
- na novem PDS obnoviš podatke iz varnostne kopije CAR,
- po potrebi dodaš še blobe.
To pomeni, da ne rešuješ samo "imena" računa, ampak hkrati tudi njegovo identiteto in vsebino.
(Sicer pa ne vem, kako to v praksi poteka; s tem delom, k sreči, nimam izkušenj. Moj testni PDS je sicer ugasnil, a se mi, očitno, ni zdelo vredno vnaprej pripraviti ustreznih ključev, tako da sta oba tamkajšnja računa verjetno odplavala v pozabo.)
Kratek seznam opravil (checklist)
Če želiš zelo kratek povzetek, preveri naslednje:
- razumem razliko med identiteto računa in podatki računa,
- imam dostop do e-pošte na računu,
- nameščen imam
goat, - ustvarjen imam nov rotacijski ključ,
- zasebni ključ je shranjen na varnem,
- javni ključ je dodan med
rotationKeys, - ključ je preverjeno res v DID-dokumentu,
- imam varnostno kopijo CAR,
- po možnosti imam še kopijo blobov.
To je to. Ni ravno najbolj opazen del uporabe odprtega omrežja, je pa eden najbolj uporabnih. Če gostuješ zunaj bsky.social ali če preprosto nočeš biti popolnoma odvisen od enega samega PDS-ja, je to ena izmed najbolj smiselnih stvari, ki jih lahko urediš vnaprej.
Povzeto tudi po prispevku Bryana Newbolda.
To seveda ni težava, omejena na Eurosky; enak problem lahko nastane pri kateremkoli PDS-ju.↩
DID-dokument je javni zapis o identiteti računa: pove, za kateri račun gre, kateri javni ključi veljajo zanj in na katerem PDS-ju trenutno gostuje. Svojega lahko običajno pogledaš z ukazom
goat account plc current; pridid:plctudi prek PLC Directory nahttps://plc.directory/TVOJ_DID/data, pridid:webpa je objavljen na sami domeni.↩Blob je ločena datoteka oziroma medijski objekt, ki ga zapis v repozitoriju samo referencira, ne vsebuje pa ga neposredno. Sem sodijo npr. slike, video ali drug priložen medij.↩
Če ne uporabljaš Ubuntu/WSL, obstajajo tudi drugi načini namestitve, npr. prek Homebrew ali z
go install. Tu opisujem postopek, ki ga uporabljam jaz.↩Uradni
goatREADME priporoča uporabo app passworda. Opozarja tudi, dagoattrenutno app password in avtentikacijske tokene shrani v domačo mapo v cleartext obliki;goat account logoutte podatke pobriše.↩