Przejdź do głównej treści

Dodanie możliwości wyszukiwania na Mastodonie po adresie e-mail

Zawartość

W trakcie ostatnio „ciekawych” dni, kiedy ludzie zaczęli migrować na Mastodona, natrafiłem na dość interesujący toot jednego z jego użytkowników, w którym wspomniał o dodaniu odkrywalności Mastodona dla dowolnej domeny przy użyciu protokołu WebFinger.

Bardzo zainteresowało mnie, jak to zaimplementować po mojej stronie, ponieważ wolę, aby ludzie odnajdywali mnie poprzez mój długoletni adres e-mail, zamiast nowo utworzonej nazwy użytkownika na wybranym serwerze Mastodon.

Ponieważ moja strona jest hostowana na Netlify, postanowiłem sprawdzić, czy mogę to wdrożyć. Oto jak to zrobiłem.


Aby lepiej zrozumieć, jak Scott to osiągnął po swojej stronie, odwołałem się do jego oryginalnego wpisu1. Przeczytałem też więcej informacji o protokole WebFinger na Wikipedii, a następnie przypomniałem sobie wpis Johna Muellera sprzed niedawna, w którym znalazłem rozstrzygające rozwiązanie dla siebie.


Zanim zaczniemy, muszę wyjaśnić kilka rzeczy.

Jak wspomniano na początku, chciałbym, aby osoby w sieci Mastodon mogły mnie odnaleźć za pomocą mojego adresu e-mail, a nie konkretnej nazwy użytkownika w sieci Mastodon (obecnie @dariusz_wieckiewicz@mastodon.social).

Nie używam mojej głównej domeny dla strony. Moja strona jest serwowana na subdomenie dariusz domeny wieckiewicz.org, która jest także używana do obsługi mojego adresu e-mail.

Mastodon używa protokołu WebFinger do odnajdywania użytkowników.

Używając narzędzi takich jak Lookup WebFinger, znajdującego się w prawym górnym rogu strony WebFinger, możesz wpisać adres e-mail, aby sprawdzić, jak jest rozwiązywany.

Jak zobaczysz na początku, Lookup WebFinger sprawdzi domenę, która jest częścią Twojego adresu e-mail, w następujący sposób:

GET https://wieckiewicz.org/.well-known/webfinger?resource=acct%3Adariusz%40wieckiewicz.org

Ponieważ moja strona jest statyczna i korzysta z Hugo, nie mam prawdziwej funkcjonalności serwera, aby dodać dynamiczne odpowiedzi. Aby obsłużyć to dynamiczne żądanie WebFinger, postanowiłem skorzystać z tego, co John wspomniał w sekcji Apache & co — przekierowań.

Metoda przekierowań

Mam już ustawione pewne przekierowania dla mojej głównej domeny. Jeśli wpiszesz wieckiewicz.org w pasku adresu przeglądarki, zostaniesz przekierowany (kod 301) na dariusz.wieckiewicz.org. Robię to za pomocą pliku _redirects umieszczonego w folderze /static mojej strony opartej na Hugo.

https://wieckiewicz.org https://dariusz.wieckiewicz.org 301!
https://wieckiewicz.org/* https://dariusz.wieckiewicz.org/:splat                      301!

Te dwie reguły nie tylko przekierują główną domenę, ale też wszystkie linki, w których w adresie URL brakuje subdomeny dariusz..

Oryginalne żądanie wysyłane przez WebFinger wygląda następująco:

https://wieckiewicz.org/.well-known/webfinger?resource=acct:dariusz@wieckiewicz.org

Jak zauważyłeś, symbole takie jak : i @ są zastępowane ich odpowiednikami Unicode ze względów zgodności.

Trzeba o tym pamiętać przy tworzeniu reguły przekierowania w pliku _redirects, aby nic nie zostało przypadkowo zepsute.

Teoretycznie odniesienie do .well-known/webfinger powinno wystarczyć, ale niektóre źródła, w tym John, odnoszą się również do Web Host Metadata (.well-known/host-meta) i Node Info (.well-known/nodeinfo), więc uwzględnię je także.

Pomiędzy dwiema wymienionymi wcześniej regułami wstawiłem następujące:

https://wieckiewicz.org/.well-known/webfinger?resource=acct%3Adariusz%40wieckiewicz.org         https://mastodon.social/.well-known/webfinger?resource=acct%3Adariusz_wieckiewicz%40mastodon.social     301!

https://wieckiewicz.org/.well-known/host-meta?resource=acct%3Adariusz%40wieckiewicz.org         https://mastodon.social/.well-known/host-meta?resource=acct%3Adariusz_wieckiewicz%40mastodon.social     301!

https://wieckiewicz.org/.well-known/nodeinfo?resource=acct%3Adariusz%40wieckiewicz.org          https://mastodon.social/.well-known/nodeinfo?resource=acct%3Adariusz_wieckiewicz%40mastodon.social     301!

Może to wyglądać nieco skomplikowanie, ale jeśli masz na swojej domenie więcej użytkowników, którzy korzystają z różnych serwerów w fediverse, będzie łatwiej dodać ich bez ograniczania do jednej instancji (serwera).

Widać tutaj, że kiedy WebFinger zażąda odpowiedzi z /.well-known/webfinger?resource=acct:dariusz@wieckiewicz.org na mojej domenie, zostanie ono przekierowane na mastodon.social oraz moją nazwę użytkownika tam — dariusz_wieckiewicz@mastodon.social.

Gdy przekierowanie będzie aktywne, serwis WebFinger Lookup (https://webfinger.net) powinien zwrócić odpowiedź dla właściwego użytkownika na serwerze mastodon.social.

Pamiętaj, zanim zastosujesz jakiekolwiek reguły w _redirects na produkcji, przetestuj je w Netlify Playground!

Metoda pojedynczego pliku

Użycie metody przekierowań jest dość ambitne. Jeśli szukasz szybkiego i prostego rozwiązania, Alex Guyot na Mastodonie zaproponował bardzo proste rozwiązanie polegające na sfałszowaniu odpowiedzi protokołu WebFinger serwowanej z naszej domeny.

Rozwiązanie polega na utworzeniu pliku webfinger wewnątrz folderu .well-known (z kropką na początku).

Uzyskując odpowiedź z tego samego pliku na wybranym serwerze Mastodon, wystarczy ją skopiować, wkleić i zapisać w naszym pliku zastępczym.

Korzystając z następującej części ścieżki, możemy otrzymać odpowiedź JSON z serwera Mastodon:

/.well-known/webfinger?resource=acct:yourusername@mastodon.host

Na przykład:

https://mastodon.social/.well-known/webfinger?resource=acct:dariusz_wieckiewicz@mastodon.social

To da prostą odpowiedź:

{"subject":"acct:dariusz_wieckiewicz@mastodon.social","aliases":["https://mastodon.social/@dariusz_wieckiewicz","https://mastodon.social/users/dariusz_wieckiewicz"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"https://mastodon.social/@dariusz_wieckiewicz"},{"rel":"self","type":"application/activity+json","href":"https://mastodon.social/users/dariusz_wieckiewicz"},{"rel":"http://ostatus.org/schema/1.0/subscribe","template":"https://mastodon.social/authorize_interaction?uri={uri}"}]}

Skopiowanie, zapisanie i serwowanie pliku w /.well-known/webfinger załatwi sprawę.

Brudno proste, ale działa dobrze — warto spróbować.


Czas sprawdzić, czy inni użytkownicy mogą nas wyszukać (znaleźć) w sieci Mastodon, używając naszego oryginalnego adresu e‑mail, bez konieczności znajomości serwera, na którym mamy konto.

Spróbuj wyszukać mnie, wpisując mój adres strony, ale wstaw znak @ między moim imieniem (dariusz) a moim nazwiskiem‑domeną (wieckiewicz.org).

Daje to elastyczność przechodzenia między instancjami, a osoby, które nas nie obserwują, nadal mogą nas znaleźć, korzystając z oryginalnego adresu e‑mail. Oczywiście działa to dopóki będziemy aktualizować nasz plik WebFinger.

Czemu by nie spróbować, znaleźć mnie i powiedzieć cześć!

Udostępnij na Threads
Udostępnij na Bluesky
Udostępnij na Linkedin
Udostępnij przez WhatsApp
Udostępnij przez Email

Komentarze i Reakcje

Kategorie