コンテンツが何もないのはどうかと思うので折角なので獣丼についての四方山話を。FANBOXはテキストの装飾ができないみたいで文章を書くのには適してなさそうですが、書けるので書いてみます。慣れてなくてポエム感がありますが、良ければ読んでやってください。 獣丼ってなんやねんって方はこちら(宣伝)。 https://kemonodon.club 【TwitterとMastodonと獣丼と自分語り】 獣丼はMastodonのインスタンスとして立っています。Mastodonとインスタンスの説明は省くとして、日本で流行ったのは2017年4月ごろだったと思います。そのころ仕事でサーバーやらインフラやらを触ってたので、流行りのアプリケーションを勉強がてら動かしてみるかーという軽い気持ちでインスタンス獣丼はスタートしました。今ならケモノ系でインスタンスが立ってないからそこそこ人がお試しで入ってきて遊んでもらえるかなーという目論見と、そのうち皆飽きてTwitterなり他のSNSに戻ってるだろうから管理もそれほどしなくて良いだろうというのと、AWS1年無料期間を利用すれば費用もそれほど掛からずに済むという計算が入っていましたが。なので最初はそんなに長いこと立てるつもりはなかったです。 で、いざ開始してみると結構登録してもらってまったりとした空気で雑談をしてもらえてたかなと思います。あんまり自分が喋ることはなかったですが、一応確認できるときは毎日確認していました。Mastodonの分散型SNSという発想は自分にとっては初めてだったのでどうなるかなと戦々恐々としてましたが、昔のチャットのような穏やかな流れで、最近のSNSと違う部分を好む方に使い続けてもらったかなと思います。私もSNSといえばTwitterの流れがしんどい方で、掲示板などで気になった話題にちょっと顔突っ込んでレスして終わり、というのが気が楽で好きなんです。そもそも自分が「ケモノが好き」というのでそんなに話すこと無くて、ケモ話題で延々話すのは難しいんですよね。オスケモの腹筋の腹毛いいよね…いい…というような話で1年持たないよね、と。なのでケモノが好きという共同体意識がありつつ話題は様々で思い出したように時折ケモの話が出てくる、という状態は結構好きでした。 でまあ1年強くらい運用して平和に過ごしていましたが、TwitterのUserStreamが廃止になる件でとても多くの方に入ってもらいました。TOOT数10位以内とか凄い。まあ、多いから何か良いことあるかというと無いんですが、せっかく立てたからには使ってもらえる事は嬉しさを感じます。内容については、まあ、あまり生々しいのは控えてもらいたいなーとは思いつつも、自由さを優先したいと思っているので激しすぎない程度なら良いかなという気持ちです。ローカルタイムラインが共同体参加者全体に見えることが抑止力になって、ギリギリラインでバランス取ってもらってるような気がします。そういう系を除くと、自由に話題出してくださいとしたのが功を奏したのか、造詣が深い方に雑多に色んな話をしてもらって面白いなぁと思ってます。折角なので、もっと盛り上がるともっと楽しくなりそうです。まあ、費用のところに直撃してきて中々大変なところはありますが…。 【現在のサーバー構成と費用について】 折角なので費用の話をしようかと思うのですが、Kemonodonの構成がどうなっているのか気になる方も居るかもしれませんので、そのへん全部書きたいと思います。もしかしたらインスタンス立てたい方の参考になるかもしれません。インフラ系の用語の解説はしないですが、興味があれば読んでください。 図を入れられないので全体構成の大体の雰囲気というのを出せないですが…、色々なサービスを組み合わせて構成しています。自宅サーバーは無理です。使っているサービスはDNS、VPS、ファイルストレージとCDN、メールサーバーくらいです。あと、ドメインはムームードメインで取りました。最初は80円位で取れたんですが、1年目の更新で2000円強位の更新料が必要になって、ドメイン更新ってそこそこ掛かるんだというのを知りました(無知)。 それぞれ具体的に使ってるサービスを上げていきます。DNSにはAmazon Route53を使っています。元々全部AWSで構成していた名残ですね…。ConoHaにもDNSサービスあるんですが、移行するのが面倒なのと移行失敗したら終わるので、そのままにしています。月$0.5程度なので、手間を考えたら放っておいてもいいかなとサボっています。信頼性が高いので、使い続けるのも悪くないかなと思っているのもあります。 サーバーはConoHaの2GBプランを借りてます。サーバーの中ではElasticsearch以外(MySQL, Redis, Sidekiq, Rails, streaming)Dockerで動かしてますが、CPUもメモリもそこそこ使う程度で収まってます。Elasticsearch起動するには一個上のスペックにしないと厳しそうで全文検索は切っています…。 VPSは色々比較しましたが、一番バランスの良いスペックを持ってたような気がします。ConoHaは転送量の上限が無く月1750円という定額なのが良いですね。もっと人が集まれば上のプランに変えるので対応できますし。Amazon EC2とかクラウド系はお高いので無料期間過ぎたら無理です。 ファイルストレージはAmazon S3です。これもAWS使ってた名残ですね…。思ったより容量が増えなくて、1年強運用して10GBにも行っていないので、他のサービス使っても良かったかなと思います。移すとしたら転送に費用が掛からないConoHaのストレージでしょうかね、帯域が心配ですが…。 ストレージは大丈夫だったのですが転送量が結構膨大でした。静的ファイルのCDNとしてCloudFrontを立ててますが、ここが凄い仕事してます。8/1~8/20でリクエスト数が30万ほど、転送容量が32GBほどなので、直にS3にリクエスト来てたら結構速度やコストが辛かったかもしれないと思ってます。コストも相応にあって、今はガンガン転送量が増えていってるので最終的に幾らになるか分かんないですね…。とりあえず月$10位に収まるかな…?超えるかも…?くらいです。 メールサーバーにはZohoを使っています。無料で独自ドメインのメール送受信ができるので、重宝していたのですが、送信上限が1日50件になっているのがネックでした。実際一番のピーク時には1人に対しての通知で送信量上限を迎えてしまってブロックされる事態になってました。これは大変申し訳なかったですね…。ブロック解除を手動でぽちぽち申請すれば50件ずつ200件まで解除できるようだったのですが、面倒なので流石に有料登録しました。月500円なのですが、最初の送信量上限は200件っぽくて継続は難しいなぁというところです。今はAmazon SESを使おうとしていて、準備完了したので次メンテして変えようかなと思ってます。 全体のコストは大体月3000~5000円くらいの見込みです。今月の半ばから一気に来たので、転送量がまだ確定してないですが…。趣味として払えるものの従量課金が怖い、といったとこですね。費用負担より作業負担の方が大きいかもしれません…。 こんなところですね。色々調べながら構築しましたが、概ね納得できる構成になりました。さーばーの性能が負荷に応じてスケールすることと費用安くすることのトレードオフの選定が上手いこと取れなかったのが残念です…。ただ、かなり勉強にはなりました。DNSレコードからPubSubモデルのアプリケーションまでの知識がそこそこ蓄えられたので、やっぱり血肉を消費して何かやるとそれ相応に経験として帰ってくるなあと実感しました。最適の構成とは思えないので、突っ込みどころあれば是非おねがいします。 【個人Mastodon運営について】 動けばいいやできちんとした運営らしい運営をしていないので偉そうなことはいえないですが、思ってたより大変だなというのが率直なところでしょうか。そもそも立ち上げるのも時間かかりましたが、インフラの構築ができたとしてアプリケーションが何かちゃんと動いていない…ってなったときにドキュメントやコードを読んで調査しないといけないのと、不測の事態が起こったときに備えるのと、バージョンアップ追従の際にリリースノート眺めて作業手順追っかける必要があるのは辛いところです。最近だと、v2.4.3に上げるときにマイグレーションに失敗してデータベースが壊れてしまいました。GitHub Issueを調べたら既知の問題で解決済み( https://github.com/tootsuite/mastodon/issues/8001 )だったので良かった良かったになりましたが、解決済みでなかったらと思うと中々恐ろしいものがありますね…。あと、バックアップを取らず作業してたら終わってました。Webアプリケーション動かす上で普通といえば普通なのですが、やっぱ怖い。 面白みとしては、構築や運用で経験値が溜まっていくところでしょうか。知らないことを一杯知ることができる的な。ただまあ、これもう仕事のやつやんってなるくらいに面倒な面もあります。ハマったときはなんでこんな苦労して動かしてるんだろう…みたいになったり。今ならインスタンスを立てたいだけならさくらVPSがMastodonセットアップスクリプトを配布しているので、そちらを使うと良さそうですね…。ただ、自分が苦労した分、問題なくアプリケーションを使ってもらえてると嬉しいですね。あとやっぱり盛り上がってたりすると苦労が報われた感があります。最近は人も多いので眺めてるだけでも面白かったりしますね。 【終わりに】 長くなりましたが、ここまで読んでもらえていると嬉しいです。面白い話なのかは分かりませんが、1年強ほど運用してきたあれこれを吐き出せて書いてる本人は楽しかったです。今後どうなっていくのかは全くわからないですが、そこそこ頑張るので、楽しく獣丼を使ってもらえると嬉しいです。