このブログはWordpressで動いている。ついさっき、ActivityPubプラグインをインストールした。このプラグインでWordpressブログがActivityPubプロトコルに対応になる。つまり、、、、このブログがマストドンやmisskeyなどから閲覧できる!!!(はず。この投稿でテストだ)
マストドン?ミスキー?なにそれって思った人のために軽く説明しておくと、これらはTwitterのような短文投稿SNSだ。しかしTwitterのように一つの会社が運営するのではなく、もっとずっと小規模なコミュニティが複数存在し、それぞれが相互に通信して一つの大きなコミュニティを形成している。マストドンのAというサーバー上のアカウントからミスキーのBというサーバー上のアカウントにfavやコメントを送ったりできる。もしTwitterからInstagramの投稿にコメントできたらどんな感じか、を想像するとわかりやすいかも?そして、そうした相互に繋がった大きなコミュニティをFediverseと呼んでいる。
異なるSNS間で相互に通信できるのはそれぞれのSNSがAcitivityPubというプロトコルに従っているから。つまりAcitivityPubに対応したサイトはFediverseの一員ということになる。故に、たった今から、このブログもFediverseを構成する一人になった。こんにちはFediverse!!!
さて、WordpressをActivityPubに対応させる上でちょっと問題が起きたのでメモを残しておく。
Fediverse上では複数のSNSから一つのアカウントを表せるようにWebFingerという仕様に従っている。WebFingerは[email protected]のようにIDを表し、サービス側は
https://blog.srytk.com/.well-known/webfinger?resource=acct%3A%40aquei%40blog.srytk.com
のようなリクエストをして[email protected]の情報を取得する。見ての通り、IDはサブディレクトリをサポートしていない。そしてこのブログはWordpressのマルチサイトのひとつとして運用されていて、/aquei/というサブディレクトリ上に存在する。サブディレクトリにあるブログをWebFingerに対応させるにはサーバー上でリダイレクトさせる必要がある。リダイレクトはREADME.mdにサンプルがある。
RedirectMatch "^\/\.well-known/(webfinger|nodeinfo|x-nodeinfo2)(.*)$" "\/blog\/\.well-known$1$2"
正規表現を知っている人ならすぐに分かるが、このリダイレクトは間違っている。正しくは
RedirectMatch "^\/\.well-known/(webfinger|nodeinfo|x-nodeinfo2)(.*)$" "\/blog\/\.well-known\/$1$2"
だ。スラッシュを入れ忘れている。HTTPサーバーにApacheを使っている人は要注意だ。ActiviyPubプラグインはbeta状態なのだが、このような単純な間違いが放置されているのとちょっと不安になる。
まあ、なんにせよインストールが成功していればfediverseの一員になったので、興味がある人は@aqueiをフォローしてほしい。あ、@Aqueiもよろしくね!