Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

CloudflareのMastodon互換ソフトウェア「Wildebeest」を立ててみたメモ

あまり調子が良くないので、2023年7月現在おすすめしません。なにか他の実装を選ぶことをおすすめします

rinsuki.hatenablog.jp


先日Cloudflareから面白いアナウンスがあった。Cloudflareの基盤で動作する、Mastodon(おおむね)互換のソフトウェアWildebeest*1(ワイルドビースト、ウィルドビーストみたいな発音っぽい)がリリースされたのだ。

blog.cloudflare.com

自分はけっこう前から@windymelt@mstdn.takuya-a.netというMastodonアカウントを保有していて、最終的にオドアケルによってイーロン帝が廃位されてTwitterが滅亡してもネット知り合いとのつながりを保てるようにしている。

mstdn.takuya-a.net

今回新たに作成したWildebeestのアカウントは@windymelt@ap.capslock.devで、apはActivityPubの略。マストドンからもフォローできるよ。よかったらフォローしてね。

https://ap.capslock.dev/@windymeltap.capslock.dev

昨日孤軍奮闘状態で(厳密にはGitHubで開発者に泣き付きつつ)インストールに成功したので、インストールしてみた感想や使ってみた感想を共有したい。運営費は月千円ちょっと(10ドル)を想定している。

ちなみにWildebeest自体にはWebインターフェイスは用意されていない。最低限のタイムラインビューワ的な機能はあるが、あくまでもPublic timelineが見えるだけ、ゲスト向けな機能しか提供されていない。スマホであれば公式のMastodonアプリなど使い、PC/MacであればPinaforeといったOAuth対応のサードパーティクライアントを使おう。

インストール

最近のCloudflareはHeroku Alternativeになろうと頑張ってるっぽくて、例えばCloudflareの基盤で動作するオブジェクトストレージを提供したり、RDBMSを用意したりしている。そういった仕組みの一環か、WildebeestのGitHubページにはDeploy with Workersという怪しいボタンが用意されている。これはDeploy to Herokuボタンとだいたい同じようなもので、これをクリックすると勝手にCloudflare上のアカウントにWildebeestのソフトウェアや必要なDBなどをインストールしてくれるという仕組みになっている。ドメインさえCloudflareに登録しておけば、勝手にサブドメインの設定もやってくれる。面白いのは、中央のサーバで動くのではなく、どうやらエッジコンピューティングでシステムを走らせられる点。

謎のボタン

github.com

ちょっと注意が必要な点があるので共有しておく。このボタンを押すと基本的にウィザード形式で質問を埋めていくだけでアプリケーションがCloudflare上のWorkerとしてインストールされるのだが、インストールするためにはいくつかの事前条件を整えておく必要があり、これを一度間違えるとリソースが不整合な状態になって最初から作り直しになって非常に厄介なので、以下の点をまず確認しておく必要がある。

  • Cloudflareにアカウントがある
  • WildebeestをインストールしたいルートドメインのDNSがCloudflareの管理下にある
    • 自分の例の場合はcapslock.dev
    • ドメインの移管はしなくてよい
  • Wildebeestをインストールしたいサブドメインを決めている
    • 自分の例の場合はap.capslock.dev
  • Paid Planに設定されている (1)
  • Imagesを有効化している (2)

下記のPlanメニューを選択し、Paid Planに加入する。これによりWorkerのための課金が有効化される。WildebeestはPaid Planでしか動作しない機能かなにかが含まれているようだ。

Paid Planは右側のほうだ。最低限でも月5ドル発生するのでこれは受忍する必要がある。

一応説明しておくと、Paid Planは固定料金ではなく、さらに従量課金が行われる。とはいえ個人用のお一人様インスタンスでめちゃくちゃなアクセスが発生するということもないはずなので、あまり心配はいらないと思う。以下の情報をもとに自己責任でお試しください。

developers.cloudflare.com

Imagesを有効化している (2)

Imagesとは、Cloudflareのエッジで画像をなんやかんや加工してくれるImageMagickみたいな機能の、Cloudflare上での機能名である。

この機能は使うためにまた最低限でも月5ドル支払う必要がある。画像を一切使わないインスタンスを作るのであれば不可能ではないかもしれないが、諦めて5ドル払って円安にならないことを祈ったほうが総合的な体験は良くなるはずだ。

この記事の執筆時点(2023-02-10T22:30:00+0900)では、基本料金5ドルに加えて、Delivery: $1.00 per 100,000 images servedとダッシュボードに書いてある。有効化する前に一応自己責任で確認してほしい。

基本的にここまでの10ドルで常識的な範囲で運用可能なはずだが、いちおう自己責任ということで。

インストール

以上の2つに注意しておけば、英語の手順に従っていれば自動的にリソースが作成される。おおまかには、以下のことが行われる:

  • cloudflare/wildebeestが自分のGitHubアカウントにforkされる
  • 各種クレデンシャルがforkされたリポジトリのsecretsとして設定される
  • GitHub ActionsによりCloudflareのAPIが叩かれ、リソースが作成されていく
    • 面白いことに、Terraformで管理しているようだ
  • DNS設定などが作成される

注意しておきたい点は以下の点だ:

  • Domain nameとしてインストール先のドメインを尋ねられるが、これはサブドメインも含んで指定する
    • 最終的にWildebeestにアクセスするときのドメインを指定する。
    • 自分の場合は ap.capslock.devを指定した。

それではさっきのWildebeestのリポジトリDeploy with Workers を押してリソース作成の旅に出てください。いってらっしゃい。

アクセスコントロール

建立成功したかな?初期状態では誰もアカウントを作成できない状態になっているので、Zero Trustを起動してアクセス権限を設定しよう。

画像の下あたりにZero Trustへのアクセスリンクがある

するとApplicationの項目にwildebest-なんちゃらみたいなアプリケーションが作成されているはずだ。

これが今回建立したWildebeestのログイン設定となる。今回はwindymelt@3qe.usがメールOTP認証を使ってアカウントを作れるようにする。

Configureをクリックしよう。

↑画面のPolicyタブが開かれた状態になるので、Add a policyを選択しよう。

画面のように設定する。

  • Policy name: なんか適当な名前
  • Action: Allow
  • Include: Email: 君が受信できるメアド (最後にenterを押下しないと入力されない)
  • Require: Login Methods: One-time PINにチェック

最後にAdd Policyすると設定が反映される。

ログイン

これで基本的に使えるようになっているはずだ。ログイン手順はスマホでもPCでも同じなので、ここではPCでPinaforeを使っているという想定で解説する。

WildebestのWebインターフェイスにはログインの動線はない。なぜならゲスト状態でパブリックタイムラインを表示する機能しかないからだ。自分はこれで30分くらい困ったので気をつけてほしい。

まずPinaforeを開く。

pinafore.social

でっかいログインボタンがあるので押す。

どこのインスタンスにログインするのだよと聞かれるので、先程建立したWildebeestのドメインを入力してログインを押下する。

すると物語はCloudflareへと舞台を移し、Cloudflareがメアドを使ったワンタイムパスワード認証によってOAuth認証を行ってくれる。先程設定した自分のメアドを入力して認証コードを送ってもらう。

届いたメールにワンタイムパスワードが記されているので、それを入力してログインする。

するとよくある認可画面が登場する。「PinaforeにWildebeestのアクセス許可していい?」と訊いてくるので、問題ないなら許可する。

最初のログイン、つまりアカウントを持っていない場合はWildebeestのアカウント作成画面に遷移するはずだ。使いたいユーザ名などを入力するとアカウントが作成されて、Wildebeestに接続される。

さっそくトゥートしてみよう

動かない機能など

以下の機能をWildebeestはどうやらサポートしていない:

  • 投票作成機能
  • 鍵投稿する機能(!!)
    • 一見投稿できるが鍵になっていないっぽい
  • Content Warning機能
  • プロフィールの概要にラベルをぶら下げる機能
  • プロフィールに固定トゥートをピン留めする機能
  • 写真をセンシティブ指定する機能

機能はこれからある程度拡充されると思うが、完全なMastodon互換システムではないということは心に留めておく必要がありそうだ。Mastodonアプリでも接続できるActivityPub実装、くらいの気持ちでいたほうが良いかもしれない。

動く機能

画像投稿は普通にちゃんと動いている。

総評

総じて動作は軽快だ。CDNのエッジで大抵の処理をやっているためであろう。しかも一人用インスタンスなので、これ以上重くなるということもなさそう。でも機能不足は否めない。文章メインの使い方をするのであればあまり問題はないと思うけど、プライバシー制御とかCW機能が動かないっぽいのは痛手だ。今後の発展でうまく実装されることを望みたい。

*1:ヌーという意味らしい。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?