さくらのVPSにPleromaのおひとりさまインスタンスを建てた

2021/12/31

Pleromaはじめました

9月末にPleromaのおひとりさまインスタンスを建てた。

https://social.nauka.moe/

Twitterの言論統制が強まるにつれて、どこかのタイミングでActivityPubに対応しているSNSに移動しなければならないと意識するようになった。

今回建てたPleromaやMastodonは短期間だけ運用してみたことはあるものの、結局Twitterの方が便利で定着しなかった。 とはいえ誰の要請もなく不明瞭な基準でshadow BANを行うようなSNSでは意図通りの情報発信もままならないので、重い腰をあげてPleromaインスタンスを立ち上げるに至った。

余談だが、同じ理由でGoogle検索も嫌いなのでDuckDuckGoを使っている。だが、これは検索の精度が低すぎるのと陰謀論サイトばかりになってしまうのが困りどころである。公式ドキュメントとStack Overflow以外がちゃんと拾われないのがなかなか厳しい。

インフラ選定

結論として以下のサービスを利用することにした。

種別サービス名
アプリサーバさくらのVPS 1G 石狩第1ゾーン
バックアップストレージAWS S3
ドメインXserver Domain

以下選定基準を述べる。

アプリサーバ

まずPleromaに適したサーバを選定することにしたが、自宅サーバを使うかVPSやクラウドを使うかの選択肢があった。これはVPSまたはクラウドを選ぶことにした。

思想的に分散性を重要視する場合は自宅サーバ上で管理するべきであるが、Pleromaはこのブログと異なり他インスタンスからもつながるため、可用性を考慮すると停電やネットワークトラブルで不通になる可能性がある自宅ネットワークは不安がある。 電気代の面では自宅サーバの仮想環境に入れておくのが最も安く済むだろうが、労働の結果、月あたり数百円のサブスクにいくつも加入している今はそこまで切り詰める意義も薄い。 また、万が一Pleroma経由で自宅ネットワークに侵入された場合の面倒を考えると、よほどのことがない限り外部公開するサービスを自宅に置くメリットはなさそうである。 (よほどのこととは、数TB単位でストレージが必要とか、メニーコアなCPU/GPUに常時負荷をかけておくとか、そのくらいである)

続いて、VPSとクラウドのどちらにするかだが、VPSとし、さくらのVPSを選んだ。 なぜなら、さくらのVPSはEGセキュアソリューションズのWAFであるSiteGuard込みで提供されているからである。

AWSと比較したとき、AWSではマネージドなWAFを指定した場合数十ドルの月額料金とリクエスト料金がかかり、さらにEC2の料金も払う必要があるため、 月額880円で仮想2コアメモリ1GBのサーバとWAFがセットになっているさくらのVPSは大変お得であると言える。 また、Pleromaインスタンスは他のインスタンスと接続するため常時稼働が前提になる一方、急に負荷が高まるタイミングも考えにくいため、月または年で同スペックのサーバを使い続けるVPSの方が都合が良い。

さくらのVPSで唯一気になったのはストレージのサイズだが、自分のTwitterのログを見直した結果、数年で数十GBものメディアをアップロードするとは考えにくかったため、50GBあれば十分だと言える。また、50GBで足りなくなった場合も、1100円払えば100GBに変更できるので大丈夫だ。

まあ、ここまで色々考えてみたが、Pleromaはバックアップさえとっておけば容易に別環境で復旧できるので、しばらく運用してから運用を継続するか移管するか考え直せばよいだろう。

バックアップストレージ

アプリ本体はVPSにまるごと置いておくことにしたが、バックアップは同じサーバに置いておくわけにはいかないので、別途ストレージを契約する必要がある。

今回はAWS S3に毎日バックアップを取ることにした。 さくらのVPSではローカルネットワークで接続できる追加ストレージを提供しているが、100GBで月額880円と固定料金となる。 バックアップファイルははじめほど小さく、またGB単位でバックアップが必要な状況でもないので、AWS S3の方が経済的だ。 また、AWS S3の料金は主にストレージサイズとリクエスト数で決まるが、今回のバックアップ用途の場合頻繁にアクセスが生じることはないので、 固定料金でないAWS S3でも料金が突然跳ね上がるとは考えにくい。 したがって当分はAWSのS3にバックアップを取るのが最善であると判断した。

ちなみに、AWS S3互換でS3より安いストレージにWasabiがあるが、こちらは最低1TB相当の料金がかかるため、現在のインスタンスの規模では割に合わない。 複数のユーザーを抱えるインスタンス向きだと言える。

ドメイン

簡単に既に持っているnauka.moeのサブドメインとした。 pleromaかsocialか迷ったが、他に自分用のActivityPubをしゃべるインスタンスを建てることもなかろうと考え、より範囲の広いsocialとした。

監視

監視は自宅に設置されているサーバ同様に、Zabbixを用いて行っている。 F/Fが数人のためまだ本格的な負荷は分からないが、今のところメモリ使用率は50%程度で収まっている。

今後の展望

直近の問題として、Twitterと同内容を投稿したいときにわざわざ手でコピペしなければならないことがある。 TwitterとPleromaで別々の内容を投稿するほど器用ではないので、両環境に同時に投稿するクライアントを制作したい。

最終的にはWindows, Mac, iOS, Android, Webの各環境で動くアプリを.NET MAUIで作りたいと考えているが、 MAUIのリリースが2022年に延期されてしまったため、まずはBlazorでWeb版を作り、それをベースにクロスプラットフォーム版を組み立てていく予定である。 (いわゆる.NET MAUI Blazorである)

参考文献

インストールは主にPleromaの公式ドキュメントに従った。 一方で、分散SNS萬本 vol.2の記事は設定や運用方法を考える上で大変参考になったので紹介しておく。