ActivityPubサーバーを閉じるには。
はじめに
ActivityPubを含め、他のサーバーとやりとりをするようなソフトウェアのインスタンスは、一般的に建てるより閉じる方が大変です。その中でも特にActivityPubは、エンタープライズ環境での使用にも耐えうるようなしっかりとした設計のソフトウェアから、そこらのエンジニアが趣味の一環でたった一人で作り上げたような簡素なソフトウェアまで幅広く存在するため、閉鎖時にはより一層の注意を払う必要があります。
この記事では、そんなActivityPubサーバーを、でき得る限り他のサーバーに迷惑をかけずに閉鎖する方法を解説します。
Step1. 事前に告知をしよう
突然、ひっそりとサーバーを閉鎖すると混乱を招きかねません。事前にサービス終了をサーバー内外に告知しましょう。
特に、ActivityPub実装の中には、Pleromaや旧バージョンのMisskeyをはじめ、自動では配送を止めないものが多くあります。そのため、告知の際には、これらのソフトウェアのインスタンス運営者が事前にアクティビティの配送を停止できるよう、サービス終了のスケジュールを明記しておくことを強く推奨します。
はっきり言って、このステップが最も重要です。一部のガイドにおいては410を返すことが推奨されがちですが、410を受けて配送を停止するソフトウェアはごく一部であることを忘れてはいけません(ユーザー数で言えばマジョリティですが)。サーバーを閉鎖する際は、必ず事前に告知をしましょう。
Step2. (サーバーの規模に応じて、可能であれば)フォローを全て解除しよう
Step1でも述べた通り、ActivityPub実装には、自動で配送を止めないものがあります。このような実装でも、通常フォロワーの居ないサーバーにアクティビティを配送することはありません(……たぶん。)ので、こちらからフォローを全て解除しておけば配送が停止されることとなります。利用しているソフトウェアにその機能があるなど、可能であれば、サーバーを閉鎖する前にフォロー関係を解除しておくとよいかもしれません。
ただし、フォロー解除のリクエストを一度大量に送信すると、連合先に負荷がかかる場合があります。サーバーの規模も考慮に入れ実施するか否か判断してください。よくわからなければ実施せず、代わりにStep1を徹底してください。
(なお、アカウントの削除でも同様の結果は得られますが、アカウントの削除は一部の実装(Misskey等)において非常に負荷のかかるアクションですので、推奨しません。)
Step3. データベースのバックアップを取ろう
一度閉鎖したActivityPubサーバーをどうしても再度建て直したい場合、ActivityPubサーバーの秘密鍵が必須です。大抵の場合鍵はデータベース内にあるので、データベースのバックアップは忘れずに取りましょう。
そうでなくとも、おひとりさまサーバー等において、過去の投稿を確認したい場合などにデータベースのバックアップがあると便利です。サーバーを再稼動する気がなくても、バックアップは取っておくことをおすすめします。
Step4. サーバーを閉鎖しよう
以上の準備ができたら、サーバーを閉鎖しましょう。ソフトウェアを停止し、DNSの設定も変更しましょう。
Step5. 410を返そう
サービスを提供していたドメインにおいて、410 Gone
のHTTPステータスコードを返しましょう。Mastodon、Misskeyなど一部のソフトウェアは、410を受け取ると自動で配送を停止します。
410を返すにあたっては、Cloudflare Workers等を利用するのが簡単です。詳細はCloudflare Workersを用いて無料で410 Goneを返す方法等をご覧ください。
おわりに
以上で、可能な限り連合に迷惑をかけずにActivityPubサーバーを閉鎖できるはずです(もっとこうすると良いよ、という情報があれば教えてください)。
とは言え、最も連合に迷惑をかけない選択は「サーバーを閉鎖しない」です。一度建てたサーバーは可能な限り保守を続け、軽い気持ちでは閉鎖しないのが理想でしょう(自戒)。
それでは皆様、良き自鯖ライフをお過ごしください。