Nostrリレーサーバーのオンプレ移行に伴う支援のお願い

はじめに

Nostrユーザーの皆様、いつもお世話になっております。竹田です。

私の各種SNSアカウントをフォローしていただいている方、特に日本のNostrユーザーの方はご存じかと思いますが、2023年2月よりNostrのリレーサーバー wss://nostr-relay.nokotaro.com を運用しております。

タイトルにもある通り、Nostrリレーサーバーをオンプレミス環境に移行するにあたって、より高いスペックのサーバーが必要になったため、皆様からの支援をお願いしたくこの記事を書いております。

リレーサーバーの概要やこれまでの対応履歴は以下のScrapboxのページを読んでいただければ把握できるかと思いますが、一応あらためてこれまでを振り返ってみたいと思います。知ってる方は支援についての項目まで飛ばしてもらって構いません。

scrapbox.io

 

※2023年11月16日追記

中間報告の記事を書きました!寄付の進捗についてはこちらの記事をご覧ください!

nokotaro.hatenablog.com

 

 

 

運用したての頃の環境

上の投稿にもある通り、Nostrリレー実装の一つである Nostream を運用するにあたって、構築した当初はGoogle Cloud上のマネージドサービスである GKE+Memorystore+AlloyDB(無料試用が終わった後はCloud SQLに移行) の構成で構築しました。

NostreamはNode.js(TypeScript)で実装されているほか、RDBMSPostgreSQL、インメモリDBはRedisが、それぞれ必要になる構成です。これは、ActivityPub対応の分散型SNSであるMisskeyと全く同じ構成で、2018年から長い間Misskeyサーバーを運用してきた私にとっては非常に環境構築や運用がしやすいというのが理由でNostreamを選びました。

github.com

 

利用者数の拡大

最初は日本語ユーザーのみの利用を想定していましたが、GeoIPによる利用ユーザーの絞り込みが上手くいかず、日を追うごとに国外からの利用も増えたため、徐々に「主に日本国内ユーザー向けのリレーではあるが国外からの利用は制限しない」という方向にシフトしていきました。

そして、運用から1ヶ月ちょっと経った頃に、中国でリレーサーバーを運用していた William氏から連絡があり、有料(Paid)リレーへのブロードキャストについての提案がありました。これは、当時としてはまだ馴染みの薄かった「リレーからリレーへとイベントを中継する」という仕組みを導入することで、ユーザーが大量のリレーを購読せずに済むというもので、快く了承しました。

というわけで、2023年3月から wss://universe.nostrich.land(現在は閉鎖) とのブロードキャストを開始しました。このリレーは利用するための課金が必要な代わりに、クエリパラメータを追加するだけで日本語の投稿だけに絞って取得できるなど、さまざまな付加機能を提供していました。

これがキッカケとなり wss://nostr-relay.nokotaro.com は、日本人同士で交流したいユーザーが利用する共通サーバーの一つとしてはもちろん、日本語での投稿だけをTLに流しつつ自分の投稿を別のリレーサーバーにブロードキャストさせたいユーザーの利用も増えました。

そんなこんなでさらに1ヶ月が経った4月中旬のとある日、Jack Dorsey氏が wss://nostr-relay.nokotaro.com を利用していることが分かり、このリレーが海外ユーザーに広く知られるキッカケとなりました。

 

yabu.meの登場

さらに1ヶ月経った5月下旬、ikuradonさんが提供している wss://yabu.me(やぶみリレー) が登場します。このリレーは、日本のユーザーが多く利用している各リレーのイベントを1つのリレーに集約することで、複数リレーの購読をせずとも日本人ユーザーとのやり取りが可能になりました。wss://universe.nostrich.land は閉鎖されてしまったので、日本語投稿を手っ取り早く購読するならこのリレーが最適かと思われます。

その後集約する対象リレーに見直しなどがありましたが、詳しくはしのさんが作った 野州田川水系定点観測所 をご覧いただくと分かりやすいかと思います。このサイトは、各日本リレーの流速が、河川の流量のようにグラフで可視化されています。

さらに、トップページにはあわゆきさんのイラストがあり、wss://yabu.me を中心とした日本リレーのブロードキャストの流れを、こちらも河川の合流&分岐に例えて分かりやすく図示されています。現在の wss://yabu.me の集約対象リレーとその流れは、文字だけで説明するよりもあわゆきさんのイラストを見たほうが絶対分かりやすいのであえて省略します。

少し詳細を付け加えると wss://yabu.me は日本語の投稿を中心に集約したいのに対し、wss://nostr-relay.nokotaro.com は海外ユーザーからの知名度が高まり日本語以外の投稿も多く流れていました。そこでリレーの流れを wss://yabu.me → wss://nostr-relay.nokotaro.com の一方通行にすることで、お互いのリレーのコンセプトを維持しつつそれぞれのリレーの利便性を向上させています。これを機に wss://nostr-relay.nokotaro.com は日本リレーではなくグローバルリレーであるという認識が強まりました。

 

Twitterの混乱とコストの増大

さて、少し話が脱線しましたがここからが本題です。Elon Musk氏がスクレイピング対策の一環として一時的にレートリミットをかけるとのツイートを行い、一部のユーザーがTwitter(現X)を快適に利用できなくなったことでその周りのユーザーもTwitterを一時的に離れ、一気に他のSNS流入してきました。Nostrも例外ではありません。

リレーサーバーのDBへの負荷が想定よりも速いスピードで上昇していたため、速やかにDBのスケールアップを行い対処しました。日本ユーザーのアクティブ率が高い時間を避けて対応したため、サービスダウンによるユーザーの利用体験が悪くなることは避けられたかなと思います。

ここから、リレーサーバーの運用費の増大と利用者増加による負荷対策、さらに急激な円安によりGoogle Cloudの請求額が跳ね上がり、費用面での懸念事項が増えだしました。私個人としてはNostrリレーだけでなくMisskeyサーバーも運用しているため、今考えるとこのタイミングでの流入は出費的に結構痛手でした。

この時の流入は一時的なもので、Meta社が新しくThreadsというSNSをサービスインさせたことで、Twitterの代替を求めていたユーザーはそちらに流れ、Nostr側の負荷は一旦落ち着きました。しかし、この時の負荷上昇は今後Nostrのユーザー数が増えたときの要件課題を浮き彫りにするものでした。

 

個人的な不調

7月上旬のTwitterの混乱やThreadsの登場、分散SNSが一時的に盛り上がっていたころはまだ結構元気だったと思います。

色々思い返すと、誕生日の翌日に親知らずの抜歯を予定してたら、担当の先生が急遽体調を崩してしまい2週間後にリスケになって3日間虚無になるかと思ったら、Fediverseのフォロワーが晩ご飯をおごってくれたり、友人が内輪の面子で開催するレクリエーションイベントに誘ってくれたり、Fediverseのフォロワーと鶴見線乗ったり東京競馬場行ったり、色々楽しい思い出がいっぱいでした。

nokotaro.hatenablog.com

ただ、この頃からすでにメンタルの状態が悪くなりかけてて、それ以降は正直惰性で生きていた気がします。8月は最初から予定がてんこ盛りで、TIF、コミケ、関西Nostrオフ会、仙台遠征と、無職なのに何故か忙しく全国各地を飛び回っていた気がします。

そんなこともあり、安定した収入が無いと流石に厳しいなと感じていたため、8月中旬からは同時並行で就活も頑張っていました。コミケの次の日から開始したのでよく覚えています。ただ、結果としては1社からも内定がもらえず、9~10月は体力と気力を消耗しただけでより窮地に立たされていました。

nokotaro.hatenablog.com

もはやNostrどころの話ではなく、9月中旬からクラウド費用を賄える目途が立たなくなっていたのと、運用はできるだけ手作業を減らしてクラウドのマネージドサービスでなんとかしていたので、クラウドが使えなくなる≒運用が回らなくなる、ということでもありました。

 

そして現在

正攻法での再就職を一旦あきらめて、これまでお仕事でお世話になった方に片っ端から連絡しまくってなんとか11月からの契約が決まりました。

これで一安心と言いたいところですが、異常な円安の進行とコスト削減の限界でクラウドの維持費がとんでもないことに。そこで、10月末に思い切ってオンプレミス環境への移行を決断し、すでにNostrやMisskeyはほぼ全てオンプレに移行済みです。

幸いにも、オンプレへの移行はスムーズでした。

ハードについては、使わなくなったPCパーツが自宅に転がってたり、探し求めていた古いマザボ秋葉原の中古PCパーツショップで見つかったりと案外何とかなりました。

ネットワークについても、もともと自宅に10G回線が1本と、1Gのバックアップ回線が1本あるため、そこまで困りませんでした。

しかし、クラウドと違って運用の自動化は新しく仕組みを用意しないといけないですし、そもそもそこら辺に転がってたパーツで組んだマシンですから、スペックの限界があっという間に来てしまいましたし、ネットワークもすべてをサーバー維持に回すわけにはいかないので正直レイテンシがやや大きいバックアップ回線もフル活用してなんとか、といった状態です。

 

というわけで支援をお願いします

ただ支援をお願いするだけなら簡単ですし、支援先もAmazonの欲しいものリストや送金先をすぐに公開しても良かったのですが、私の個人的なポリシーとして「誰がどれくらい支援してくれたのか」や「その支援がどのような形でリレーサーバーの維持につながるのか」がなるべくパブリックにされたほうが良いと考えています。

また、衣食住については身内や親友などにサポートをいただいているので、もし仮に支援をいただけるのであればNostrのリレーサーバーに関する支援のみ、具体的に言うと今後1年間ほどオンプレで安定して運用するために必要な諸経費を支援していただきたいです。

必要になるのは、サーバーを動かすための電気代や通信費、サーバー用マシンのスペックアップに必要なパーツを購入するための費用といったところでしょうか。ほかにもドメイン維持費の回収やより良いネットワーク機器へのリプレースもしたいのですが、目的がだんだんNostrから外れていくので、そこについては nice-to-have だと思っています。

あと、もう一つの自分なりのポリシーとして、支援してくださった方に少しでも何かのリターンができればと考えています。すでにいくつか案も考えています。

例えば、リレーサーバーにブラウザでアクセスした際のトップ画面に支援してくださった方のリストを載せたり、リレーサーバーの構築や運用のための知見を共有したり、物理マシンを用意するのであればその過程も公開したいですね。

また、Nostr関連はオフラインイベントが最近多かったので、オンラインでしか参加できないユーザーのためにもあえてオンラインイベントを開きたいとです。私自身はフリーテーマでも特定のテーマでも、とにかく喋ることが大好き(聞くことは少し苦手かも)なので、3~4人規模のグループトーク、もしくは1対1でのトークなど、楽しくおしゃべりできればと思います。

Nostrの話や技術系の話はもちろんですが、国内旅行や鉄道の濃い話、パラパラやユーロビートの話、サブカルの中でも特にアイドル系のアーティストや楽曲などの話、ここら辺であれば、話す話題が枯れる心配が全く無いです。極端な話時間さえあれば無限に喋っているかもしれません。怖いですね。

 

さいごに

少し長くなってしまいましたが、こんな感じの方針で考えているので、支援したい!支援できるよ!という方は、内容が確定するまでもう少々お待ちください。

あとは、こういうリターンがいいんじゃない?という提案や、イラスト制作や技術的サポートによる支援など、上に書いた内容以外にもより良い何かがあればどんどん参考にしたいです。思いついた方はぜひNostrで共有してください!

私が今後1年間運用することで、今後より良いリレー実装や、他の安定したリレーサーバーを運用するユーザーが現れることを期待しています。もし、本当にNostrがみんなから必要とされる物であるなら、きっと現れるはずだと信じています。

それまではあともう少し、できればその先も、このコミュニティの継続と発展をリレーサーバーの運用を通してお手伝いできればと思っています。

ここまで読んでくださりありがとうございました。

 

※もう少し文章を推敲したかったのですが、技術書典に間に合わなくなってしまうので一旦これで公開します。