communication-g7396f4352_1280

主にFediverse系のソフトウェアの文脈でこの記事を書いていますが、内容自体は汎用的だと思いますので、「410 Gone」をレスポンスとして返す必要がある場合に、何かしら得るものがあるかと思います。

ほとんど他の方が書いた記事の紹介になってしまうかと思いますが、備忘録も兼ねまして公開しておきます。

そもそも410 Goneを返す必要性はあるのか?(Fediverse文脈)

連合するのであれば、それが望ましいです。

この「410 Gone」は、いうなれば未来永劫失われた状態にあることを示すレスポンスコードです。

ただ単にサーバーを削除してしまうだけだと、(主にMisskey及びその派生ソフトウェアの場合)連合先は一時的なダウン等なのか否かの判別がつかず、受取人不在にもかかわらず各種投稿を送信しようとすることでジョブキュー(処理の実行待ち、とでも言いましょうか)がどんどんたまっていってしまいます。

わずかばかりの量ならパフォーマンス面に悪影響はないでしょうけど、連合数や連合先の規模によっては問題になることもままあるため、こうした事態は避けるべき……ということになっています。

そこで、この「410 Gone」をレスポンスとして返すことで、「もうこのサーバーは消滅したので、投稿の配送をしなくていいですよ」というのが連合先に伝わり、ジョブキューの蓄積を防ぐことができるわけです。

立つ鳥跡を濁さず……ということで、Fediverseの一員であったのであれば、ちゃんとやっておいたほうがいいでしょう。

比較的簡単で、費用もほぼかけないで済ませる方法2つ

ということで、実際にどうすればいいのかを書いていきます。 先達のありがたい知恵によって、割と簡単に……なおかつ、お金もかけずに実行できる方法が確立されています。 ここでは「村上さん式」と「まなさすさん式」ということで紹介いたします。

2つの方法の特徴としては、

村上さん式: 次の「まなさすさん式」よりもサクッとできるのが特徴。 村上さんが該当のドメイン・サーバーを維持している限りは使える手法。

まなさすさん式: 「村上さん式」よりは少し手間が増えるものの、より長く・安定的に使えそうな方法である点がメリット(GitHubとVercelを使うため、これら2つのサービスが継続する限りは使える手法)。 GitHubやVercelを使っている・アカウントがあるならこっちもそんなに労せずできるかと。

次項からそれぞれの方法を紹介していきます。

「村上さん式」410 Gone

こちらを参考にしました。 やることは簡単で、「410 Goneを返したい(サブ)ドメインのCNAMEレコードに“410.arkjp.net”を指定してやる」だけです。 Cloudflare前提で書かれていますが、おそらく普通にCloudflare未使用の状態でも使えるのでは……と素人考えですが思っています。

ともあれ、DNSレコードの編集画面にて、CNAMEレコードを追加し、コンテンツ(ターゲット)に“410.arkjp.net”を指定します。

これまで設定してあったAレコード・AAAAレコードを残したままだとエラーが出て保存できないと思われますので、これらふたつは事前に削除するなりしておきましょう。

Cloudflare使用時だとこんな感じでしょうか。 「SSL/TLS 暗号化モードはフレキシブルに」とありますが、フルでも問題なく動いているような気がします。 ただまぁ、従えるのであれば従ってフレキシブルにしたほうがいいでしょうね。

作業としては以上となります。 ブラウザからサーバーにアクセスして410 Goneの表示が出ているようであればOKです。 確認できたら、インスタンス削除をしても構いません。

「まなさすさん式」410 Gone

こちらについては「Fediverseサーバーを閉じる時(低コストで410 Goneを返し続ける方法)」に詳しく書かれているので、そちらに従って作業を進めてください。

作業にあたってはGitHubとVercelという2つのサービスのアカウントが必要になりますが、

GithubアカウントでVercelアカウントを作成できるので、Githubでアカウント作成がおすすめです。

Fediverseサーバーを閉じる時(低コストで410 Goneを返し続ける方法)

とあるように、GitHubのアカウントがあればVercelのアカウント作成時に諸々を省略できるので、これからアカウントを作成する場合は先にGitHubのほうから作成するとスムーズでしょう。

記事の“3. GithubリポジトリをVercelにつなぐ”ではGoogle Domainsでの設定を行う箇所がありますが、ドメインを管理しているサービスでDNSの設定編集画面に入り、CNAMEレコードを作成する……という流れなので、別のドメイン管理サービスはもちろん、Cloudflareでの設定もこれに従えばできるでしょう。

こちらも、作業後に410 Goneの表示が確認できれば、インスタンスの削除をしてOKです。

いつまで返し続ければいいのか?

1ヶ月ほどは返し続けた方がいい……という声が多いような気がしますが、厳格に「これだけの期間は返し続けてください」という指標のようなものは存在しません。

骨子としてはだいたいの連合先に410 Goneのレスポンスコードが認識されるまで……という、ふわっとした感じなので、「1ヶ月もあればアクティブなサーバーの場合はレスポンスコードを受取ることだろう……」という前提での1ヶ月説なのかな……と思っています。

ただまぁ、ドメインの期限が1ヶ月未満だからといって、追加で1年更新する!……までは無理にやらなくていいと思いますし、ここで紹介した方法であれば一度設定してしまえばあとは放置でOKなので、期間などはそんなに気にしなくていいと思います。

ともあれ、これでサーバーの閉じ方は大丈夫と言えるでしょう。 終わりも、最初と同じくらい大切ですね。