eallion

大大的小蜗牛

机会总是垂青于有准备的人!
mastodon
github
twitter
steam
telegram
keybase
email

連邦宇宙およびMastodonの紹介

@e5n.cc@eallion

前言:連邦宇宙には敷居がない#

A_view_into_the_Fediverse

理解しようとするのではなく、感じることを試みてください。——『信条』

連邦宇宙 (Fediverse = federation + universe) は、新しいユーザーにとっては難解に感じるかもしれませんが、『信条』のこの名言のように、理解しようとするのではなく、使ってみてください!連邦宇宙の利用には敷居がなく、非常に簡単に始められます —— オープンなインスタンスを選び、アカウントを登録し、そのルールを守り、使い始めるだけです!もしそのインスタンスのルールが気に入らない場合は、別のインスタンスに切り替えればいいのです。一般的に、インスタンスは一つのドメイン名のウェブサイトです。
連邦宇宙の利用には敷居がありません!特定のインスタンスのアカウントさえあれば、他のインスタンスのユーザーやその投稿に対してフォロー、コメント、いいねができます。これらのアカウントのドメインが異なっても問題ありません。同じ連邦プロトコルを使用していれば、通信が可能です。
自分でインスタンスを構築するには敷居がありますか?自分でインスタンスを構築したいと思うことができれば、敷居はありません。ネット上には非常に多くの手順を示したチュートリアルがあります。
私は 2017 年 4 月に Mastodon サービスを自分で構築し、連邦宇宙に参加しました。以来、7 年以上が経過しました。その後、理由不明でこの Mastodon(および QQ スペース、微博、Twitter、Facebook など)を削除し、2023 年にドメイン名を変更して公開インスタンスe5n.ccを立ち上げたため、連邦宇宙について少し知見がありますので、簡単に経験を共有します。

╰(°▽°)╯:e5n = eallion の k8s の書き方;cc = Charles Chin の略。

例を挙げる 🌰#

1. 電話宇宙#

「中国移动」の携帯電話番号を持っている場合、友人の iPhone の「中国联通」の携帯電話番号に電話や SMS を送ることができ、アメリカのユーザーの Samsung 携帯の「AT&T」の番号にも電話や SMS を送ることができます。誰かの携帯電話番号を知っていて、相手の携帯電話とその番号の通信事業者が同じ通信プロトコルをサポートしていれば、電話や SMS を送ることができます。
このような携帯電話通信ネットワークは「電話宇宙」または「携帯電話宇宙」と呼ぶことができます。

2. 電子メール宇宙#

インターネットを利用する人は、ほとんどが電子メールアカウントを持っています。QQ メールを使用して、Gmail アカウントに電子メールを送信したり、网易 163 メールアカウントに電子メールを送信したり、Hotmail アカウントに電子メールを送信したりできます。相手が提供するメールアカウントが同じ電子メール通信プロトコルを使用していれば、互いにメールを送受信できます。
このような電子メール通信ネットワークは「電子メール宇宙」と呼ぶことができます。

3. まとめ (ウィキペディアからの引用)#

連邦宇宙 は、一連の自由ソフトウェアから構成されており、相互接続されたサーバーのグループ(ユーザーが構築したものまたは第三者がホスティングしたもの)が、ネットワーク発信(ソーシャルメディア、マイクロブログ、ブログ、またはウェブサイトなど)やファイルホスティング機能を提供します。各サーバーは独立して動作し、インスタンスは多様で内容も多様ですが、サーバー間で相互に通信できます。異なるサーバー(インスタンス)上で、ユーザーは異なるアカウントを作成できます。これらのアカウントはインスタンスの境界を越えて通信でき、サーバー上で動作するソフトウェアが一つまたは複数のオープンスタンダードに従った通信プロトコルをサポートしているためです。1 ユーザーは連邦宇宙内のアカウントを通じて、テキストやその他のメディアファイルを発信したり、他のユーザーをフォローしたりできます。2 特定の状況では、ユーザーはデータ(音声、動画、テキストファイルなど)を公開または共有し、すべての人または一部の人に対してオープンにし、共同編集を許可することができます(例:カレンダーや電話帳)。

Fediverse_branches_1.2

用語解説#

ウィキペディアからの引用:《連邦宇宙概論》(Web Archive

連邦宇宙 (fediverse)#

すべての連邦サービス(Federated Server)の集合を連邦宇宙と呼びます。

連邦サービス#

独立して展開されているが、互いに通信できるサービスを指します。ここでのポイントは、互いに通信できることです。機能は関係ありません:ソーシャルネットワーク、マイクロブログ、ブログ、一般的なウェブサイト、ファイルストレージなどが含まれます。通信は連邦プロトコルを基準としています。

連邦プロトコル#

連邦宇宙内の異なるインスタンス(Instance)間での通信プロトコル(Protocol)。

インスタンス (Instance)#

一つの連邦サービスを一つのインスタンスと呼びます。インスタンスを一つの Pod と呼ぶこともあります。誰でも連邦プロトコルを選択して新しいインスタンスを作成できますが、より一般的な方法は連邦宇宙ソフトウェアを選択してインスタンスを生成することです。

連邦宇宙ソフトウェア#

他の人が新しいインスタンスを迅速に展開できるようにするソフトウェアで、特定の連邦プロトコルに基づいてソフトウェア API を設計することも、独自の API を設計することもできます。
最も有名なソフトウェアは Mastodon です。

アイデンティティ (Identity)#

インスタンスに登録されたアカウントをアイデンティティと呼びます。以下では、ユーザーという言葉を使うこともあります。

プロトコル (Protocol)#

一連の合意された基準です。プロトコルが同じであることは通信が可能であることを意味し、たとえ二つのインスタンスが異なる連邦宇宙ソフトウェアに属していても、プロトコルが同じであれば通信が可能です。したがって、連邦宇宙は非常に大きな概念です。
現在の主流プロトコルは Mastodon が使用している ActivityPub プロトコルです。

API (アプリケーションプログラミングインターフェース)#

連邦宇宙内で API は、他のプログラムがそのインスタンスと通信するためにインスタンスが提供する方法を指します。完全に自分で作成したインスタンスは自分で API を設計する必要がありますが、連邦宇宙ソフトウェアを使用して生成されたインスタンスは一般的に連邦宇宙ソフトウェアが設計した API をそのまま使用します。

プロトコルと API の違いについて:プロトコルは単なる基準であり、API はプロトコルの具体的な実装です。API はプロトコルを完全に遵守することも、一部のプロトコルのみを遵守することも、プロトコル以外の API を設計することもできます。たとえば、全人類が共通の道徳基準を持っていると仮定すると、この道徳基準がプロトコルであり、各国の法律が API です。より良い例はありますか?

連邦プロトコルの例#

ウィキペディアからの引用:《連邦宇宙概論》(Web Archive

一般的な連邦プロトコルには:

Zot または Zot/6 プロトコル#

独立したウェブサイトに通信、アイデンティティ(ユーザー)管理、権限制御を提供する分散型ネットワーク接続です。ここ 2 年ほどで登場したプロトコルですが、ウェブサイトはすでにアクセスできなくなっているようで、ウィキペディアの Fediverse の項目では、ここで公式ウェブサイトの InternetArchive アーカイブが紹介されています。

Diaspora プロトコル#

ウィキペディアには、非営利、ユーザー所有、分散型ソーシャルネットワークと書かれています;Github のホームページには、プライバシーを意識した、分散型、オープンソースのソーシャルネットワークと書かれています。
このプロトコルを使用している連邦宇宙ソフトウェアは diaspora * だけのようです。彼ら自身が使用しています。この連邦宇宙ソフトウェアは GitHub で 12.5k のスター、2.9k のフォークを持ち、2010 年に始まったプロジェクトで、現在でも開発は非常に活発で、リリースは 88 回ありますが、バージョン番号は非常に保守的で、0.7.14.0 までしか上がっていません。
余談ですが、彼らの GitHub のホームページで、すべてのオープンソースソーシャルネットワークサービスのリストを見つけました。そこには非常に多くのインスタンスが記録されており、それらのインスタンスのバージョン、使用している連邦宇宙ソフトウェア、使用しているプロトコル、サービスの稼働時間(どのくらいのパーセンテージの時間にサービスがダウンしていないか)、IPv6 のサポート、ネットワーク遅延、登録のオープン性、ユーザー数など、非常に多くの情報が含まれています。自分がいるインスタンスを検索してみたところ、見つけることができました。このリストはタイムリーに更新されており、本当に宝のリストです!

OStatus プロトコル#

ウィキペディアによると、これは連邦マイクロブログのためのプロトコルで、長毛象(Mastodon)は最初にこのプロトコルを使用していました。
このプロトコルは古いプロトコルで、2010 年頃に作られました。2012 年 1 月に W3C コミュニティグループがこのプロトコルを維持し、さらに開発しようとしましたが、長続きせず、2014 年 7 月に連邦ソーシャルネットワーク作業グループ(W3C Federated Social Web Working Group)が新しいプロトコルを直接作成し、Ostatus プロトコルを押しのけました。

ActivityPub プロトコル#

これが連邦ソーシャルネットワーク作業グループが作成した新しいプロトコルで、Ostatus プロトコルの光を覆い隠しました。
ウィキペディア、Github の issue #228:Ostatus、pump.io と ActivityPub の違いおよびActivityPub プロトコルの最後の謝辞部分によれば、このプロトコルは pump.io の API に基づいて設計されています。また、設計の初期段階から OStatus の経験と教訓を十分に吸収し、最終的には成功したプロトコルとなりました。
この点について、Ostatus プロトコルとの具体的な違いや改善点を説明してくれる方はいらっしゃいますか?私は深入りして調べていませんが、ActivityPub が非常に優れていることは知っています。
2017 年 9 月に長毛象は ActivityPub プロトコルの使用を開始しました;2018 年 1 月に W3C はこのプロトコルを推奨標準として採用しました;2019 年 1 月に長毛象は以前の OStatus プロトコルをサポートしなくなりました

インスタンスの推奨#

ウィキペディアからの引用:https://o3o.ca/@jiangshanghan/105966250069371678

https://fediverse.party/en/portal/servers/ このページで、自分が興味のあるインスタンスをカテゴリ別に見つけることができます。
一部のサイト管理者はインスタンスを公開したくないため、ここでは比較的公式または大規模なオープンインスタンスをいくつか挙げます:

元のプラットフォーム代替大規模インスタンス
TwitterMastodonhttps://joinmastodon.org/servers
微博Misskeyhttps://misskey-hub.net/en/servers/
InstagramPixelfedhttps://pixelfed.org/servers
FacebookFriendicahttps://dir.friendica.social/servers
YoutubePeertubehttps://joinpeertube.org/instances
執筆Writeehttps://writee.org/

支付宝が Windows Phone ユーザーを嘲笑するようなことを避けるため ——「なぜ 1% の生活を選ぶのか?」—— 私は個人的に、連邦宇宙で ActivityPub の主流プロトコルをサポートしている Mastodon およびそのフォーク版のインスタンスを選ぶことをお勧めします。
Mastodon 公式運営のインスタンスは:https://mastodon.social/
Misskey の人気も高く、二次元ユーザーにも非常に適しています。

PS:おすすめの読書

自分でインスタンスを構築する#

自分で Mastodon インスタンスを構築する際の敷居は主にサーバーの設定にあります。1C1G の設定では Mastodon インスタンスを運用するのは非常に難しい(最適化すれば使えることもありますが)、2C2G の設定でも適切な最適化が必要です。現在、私の個人インスタンスe5n.ccは 2C2G の Tencent Cloud の軽量サーバー上で運用されており、256M の PostgreSQL と 1 スレッドの Sidekiq タスクに制限されています。

もう一つの敷居は、サーバーがローカルネットワーク環境にないことです。他のインスタンスと通信するためには必要です。

Mastodon のメディアファイル(画像、動画、絵文字など)のストレージロジックは、他のインスタンスのユーザーのメディアファイルを自分のインスタンスにキャッシュすることです。また、公式インスタンスはデフォルトで(改造しない限り)ほとんどの HTML タグをサポートしておらず、<img>を使った画像表示ができないため、キャッシュ用にかなりのハードディスクスペースが必要です。一般的に、より経済的な方法はメディアファイルを S3 オブジェクトストレージにキャッシュすることです。現在、私の個人インスタンスは 7 つの Relay 中継に接続されており、1 日に 3-5G のコンテンツが生成されています。これは、フォローしているユーザーや中継サイトのユーザーが話好きかどうか、画像を投稿するかどうかによって異なります。実際の体験では、Cloudflare R2 の無料 10G では、2 日間メディアをキャッシュするには不十分です。

この記事《Docker を利用して Mastodon インスタンスを構築する方法(一):基本構築編》Web Archive)を参考にして、手順を追って Docker で自分の Mastodon インスタンスを展開することをお勧めします。特別な技術は必要なく、Docker アプリケーションを成功裏に展開したことがあれば、Mastodon をスムーズに展開できます。Docker を使用せずにソースコードから Mastodon をインストールすることも可能で、さらに簡単です。公式ドキュメントは非常に詳細に書かれています:https://docs.joinmastodon.org/admin/install/

私の自分で構築したコスト:

  • ドメイン:e5n.cc ¥39.00 / 年
  • サーバー:Tencent Cloud の軽量サーバー 2C2G ¥144.00 / 年
  • S3 ストレージ:Cloudflare R2 $1.00 未満 / 月

特にお勧め:もし低スペックのサーバーしか持っていなくても連邦宇宙に参加したい場合は、Go で開発された ActivityPub プロトコルに基づくGoToSocialを試してみてください。個人的に数ヶ月間使用した経験があり、非常に軽量で、リソースの使用も Memos よりも低いです:Ref Status。欠点は、自前のフロントエンドアプリがないこと(欠点とは言えませんが)、第三者のアプリを使用して投稿する必要があります。

gotosocial_docker_stat

面白いエコシステム#

定期的に更新

Mastodon タイムライン埋め込みウェブサイト#

ソースコード:idotj/mastodon-embed-feed-timeline GitHub ミラー

あなたのウェブサイトに Mastodon のタイムラインを埋め込み、投稿を表示します。非常に簡単に設定でき、依存関係もなく、トラッカーもなく、WCAG 基準に準拠し、完全にレスポンシブです。

私のブログに現在統合されている嘀咕ページは、このツールを使用して埋め込まれています。

Mastofeed#

ソースコード:fenwick67/mastofeed

ActivityPub フィード => iframe 埋め込み。
ブログなどに Mastodon フィードを埋め込むためのものです。
公式ウェブサイトhttps://www.mastofeed.com/のページで、自分の連邦アカウント情報を簡単に入力することで、<iframe> HTML コードを生成できます。

masto.js#

ソースコード:neet/masto.js

汎用の Mastodon API JavaScript クライアント。ELK クライアントは masto.js を使用しています。

  • 🌎 汎用性:Node.js、ブラウザ、Deno に対応
  • 📦 軽量:ランタイムコードが少なく、圧縮後は 7kB+
  • 📚 TypeScript:TypeScript で記述され、型定義を提供
  • 🧪 テスト済み:実際の Mastodon サーバーで 99% のテストカバレッジを達成
  • 🤓 良好なメンテナンス:2018 年から Fediverse 愛好者によって積極的にメンテナンスされています
Wildebeest - Cloudflare 上に構築された Fediverse#

ソースコード:cloudflare/wildebeest

Wildebeestは、ActivityPub および Mastodon と互換性のある、簡単に展開できるオープンソースサーバーで、Cloudflare の Supercloud 上に完全に構築されています。Fediverse で自分のサーバーを運営したい場合、今や Cloudflare を通じて完全に実現できます。

Cloudflare の公式ブログで紹介されています:《Wildebeest へようこそ:Cloudflare 上の Fediverse

Wildebeest は ActivityPub および Mastodon に互換性のあるサーバーで、誰でも自分のドメイン上で Fediverse サーバーとアイデンティティを運営できることを目指しており、インフラを保持する必要がなく、最小限の設定とメンテナンスで数分で運営を開始できます。

Wildebeest は Cloudflare の Supercloud 上で動作し、Workers、Pages、Durable Objects、Queues、D1 データベースを使用してメタデータと設定情報を保存します。また、Zero Trust Access を使用して認証を処理し、Images を使用してメディアを処理します。

Mravatar#

ソースコード:HolgerHuo/Mravatar

Gravatar に似た Mastodon のグローバルに認識されたアバター API。Python で開発されており、自分で展開できます。

私のアバター:https://mravatar.r669.live/avatar/@[email protected]

Mastodon 駆動のブログコメントシステム#

原文:Toot toot! Mastodon-powered Blog CommentsWeb Archive

著者は、Mastodon ソーシャルネットワークをウェブサイトのコメントとして使用する新しいアプローチを紹介しています。その最大の利点は、データがオープンであり、第三者によって制御されないことです。Mastodon はオープンで中心のないネットワークサービスだからです。

PS:《長毛象 Mastodon / GoToSocial でブログコメントシステムを作る》- 恐咖兵糖

Mastodon トークン生成器#

ソースコード:takahashim/mastodon-access-token

Mastodon API にアクセスするには Access_token が必要ですが、Mastodon の設定画面には現在、Access_token を直接取得するためのユーザーインターフェースがないため、外部から Access_token を取得するための SPA(シングルページアプリケーション)サイトを作成しました。(ただし、成熟したアプリケーションを作成し、第三者がそのアプリケーションを使用する場合は、そのメカニズムをアプリケーション自体に実装する必要がありますので、あくまで試験的なものとして考えてください。)
以前、私は《NeoDB で Access Token を取得する方法》という記事を書いたことがあり、このツールを使って生成することもできます。

わずか 6 つのファイルで連邦インスタンスを展開#

ソースコード:rothgar/static-mastodon

この記事の著者は、6 つのファイルで Mastodon インスタンスを展開したと紹介しています。試してみたところ、実際に彼をフォローすることができましたが、通信はできませんでした。
実際には 1 つのファイルだけで済みますが、インスタンスをより完全に見せるために 6 つのファイルを使用しました:

  • 2 つのファイルでユーザーを作成
  • 2 つのファイルで人気を装う
  • 2 つの画像で見た目を良くするため
.
├── .well-known
  └── webfinger    <- ユーザー発見(オプション)
├── banner.png      <- バナー画像(オプション)
├── followers       <- フォロワー数(オプション)
├── following       <- フォロー数(オプション)
├── image.jpg       <- プロフィール画像(オプション)
└── justin          <- ユーザー情報

いくつかの小さなこと#

「木を植える最良の時期は 10 年前、次は今です」。連邦宇宙は活気に満ちています。あなたはいつ連邦宇宙に参加するのが最良の時期だと思いますか?

Meta の Threads はなぜ連邦宇宙を統合しようとしているのか#

https://www.solidot.org/story?sid=77121

昨年末、Meta は連邦宇宙の開発者や代表者を旧金山のオフィスに招き、対話会議を開催しました。Meta の参加者には Threads チームと法務チームが含まれていました。連邦宇宙の規模はまだ小さく、マイクロブログサービス Mastodon は数百万のアクティブユーザーしかいませんが、Threads はわずか 8 ヶ月で、Mastodon に対してゴジラのような存在になっています。Meta は Threads の立ち上げ当初から連邦宇宙プロトコル ActivityPub をサポートすると発表しましたが、数ヶ月後、多くの人が Threads が Mastodon などのプラットフォームとの相互運用を実現することは決してないと考えました。しかし、Meta はこの計画を推進し続けており、統合のタイムラインを発表しました。なぜ、囲い込みの壁庭で知られる Meta がオープンで相互運用を望んでいるのでしょうか?参加者は皆、この疑問を抱いていました。Meta の開発者の回答は、彼らがソーシャルメディア全体の発展方向だと考えているからです。マスクが Twitter を買収した後、ソーシャルメディアの著名人はプラットフォームが実際に自分のフォロワーを持つことにますます不安を感じており、自由に移行できる能力を求めています。この見解には一定の理があるが、説得力はあまり高くありません。参加者は次のように考えています:1)Meta は Twitter が時代精神の一部として重要かつ強力であると深く興味を持っており、Google が Apple の iPhone に対処する戦略を模倣し、彼らが利益を得られるオープンな競争相手を推進している;2)Meta はソーシャルメディアに対する規制が強化されることを懸念しており、絶対的にオープンなプラットフォームを構築することで、保守的な言論の検閲や独占の問題を排除し、オープンであることはユーザーが自由に移行し、自由に切り替えられることを意味する;3)差別化、あるいはあるプロダクトマネージャーの突発的なアイデア;4)ザッカーバーグは本当にイーロン・マスクを嫌っており、Twitter/X を破壊するために全力を尽くしている。

NeoDB の昨年末から現在までの主な更新#

https://neodb.social/announcement/

個人タグに年次統計、フィルタリング、ソートが追加されました;BoardGameGeek リンク、Letterboxd インポートをサポート;ActivityPub が有効化され、メールまたは連邦インスタンスを通じて当サイトに登録することで、各ユーザーは他の連邦宇宙インスタンスと接続する @neodb.social のアイデンティティを持つことができます。

拡張読書#

Footnotes#

  1. Fed FAQ. Mastodon User Guide.(原始内容は 2017-04-09 にアーカイブされています).

  2. What on Earth is the fediverse and why does it matter?. New Atlas. [2021-10-10]. (原始内容アーカイブは 2021-02-25 にアーカイブされています).

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。