mitraのすゝめ。おひとり様サーバーを建てよう!(docker compose編)

Posted by まるよ - 2024, 12月 3

この記事は

オバケやしきーバーリ・トゥードAdvent Calendar 2024の3日目の記事です。

mitraでおひとり様サーバーを建てよう(mitraをdocker composeで動かす)

 みなさんこんにちは。Fediverseやってますね?おひとり様サーバー、ほしいですよね?マネーをせつやくしたい?リアクションはそこまで送らないけれど、受け取れるほうがよい。アッハイわかりました。それならmitraだ。では建て方をかいせつしていきます。

mitraとは

  • Rust製で軽量なActivityPubサーバーソフトウェアです。
  • ワンコインVPS(月額500円程度のvps)で動作可能(最小構成で1cpu, 256MB RAM,10GB storage)
  • 複数ユーザー、ローカルタイムライン、カスタム絵文字リアクション対応。
  • MastodonAPIに対応しているのでMastodonクライアントも使えます。
  • 開発途上ですが、おひとり様サーバーなら十分な機能を備えます。
  • 欠点として、オブジェクトストレージが使えないことが挙げられます。
  • 有料コンテンツ(決済は仮想通貨)が配信できる。(この機能を使ったことないので割愛します)
  • 実際に動作している様子はこちら→ほしのかけら(まるよのmitraサーバー) 

VPSスペック 1cpu,512MB mem,30GB storage,swap 512MB,空きメモリ200MB(debian12)ぐらいで安定しています。

前提

  • Docker Composeの使える環境(テストではdebian12で行っています)
  • Web公開用のリバースプロキシ(apache, nginx, caddy, cloudflare tunnel等)

構成

適当な場所でフォルダを作ります。(もしくはgit clone https://codeberg.org/silverpill/mitra.git cloneした場合は元のdocker-compose.yamlの名前を変更しておくこと)

 $ mkdir mitra && cd mitra

mitraのconfigをダウンロードします。

名前を変更(config.yamlで保存でもok)

 $ mv config.example.yaml config.yaml

エディタで内容を編集していきます(私はnanoを使います)

 $ nano config.yam

---

7行目のDBのhostを127.0.0.1→mitra_postgres

 database_url: postgres://mitra:mitra@mitra_postgres:5432/mitra

15行目 公開webへのアクセス http_host: 127.0.0.1→0.0.0.0 (同じホストでリバースプロキシがあるならそのままでよい)

 http_host: '0.0.0.0'

27行目サーバーURLをご自身のものに変えてください

 instance_uri: https://mitra.marjo.win

29~34行サーバー名と説明をお好みで

 instance_title: まるよのmitra

 instance_short_description: ほしのかけらを取りに行こう。

 instance_description: まるよがmitraをじっけんしているよ。

38行目タイムラインを公開する場合はtrue(デフォルトはfalse)

 instance_timeline_public: true

42行目登録開放するならopen (デフォルトはinvite)

 type: invite

74~75行目のfederationのコメントアウトを解除(連合機能・これはしなくてもいいという情報アリ、念のためにやります)

 federation:

   enabled: true

設定はこれだけです。以上の変更を保存して次に行きます。

 エディタでcompose.yamlを編集してdocker compose up -dしてください。

サンプルはページの下に置いておきます。何も変えていなければポート8383で待ち受けします。

nginxやcloudflared等でリバースしてwebからアクセスしてみてください。

わたしはmisskeyを参考にnginxでリバースプロキシしました。

最初のユーザーの作成

 ユーザーの作成はコマンドラインツールmitractlで行います。(絵文字の追加もこのツールで行います)

以下のコマンドで管理者ユーザーが追加できます。

 docker exec -it mitra_web mitractl create-account <username> <password> admin

うまくアクセスできましたね?お付き合い、ありがとうございました。

リレーを追加するには

 mitraでリレーに参加するには読み取り専用ユーザーを作成します。

mitractl create-account followbot <password> read_only_user

followbotアカウントでログインし、リレーをフォローします。ながれぼしリレーなら@[email protected]

aoderelayの仕様でBT扱いで連合の投稿が流れます(ISSUE、PRを送るか、修正に期待しましょう)

compose.yamlサンプル

 適宜書き換えてください。

./mitra_postgres にDB、./mitra_storage にメディアが保存されます。

-----

#mitra
services:
mitra_web:
container_name: mitra_web
build: .
image: bleakfuture0/mitra:latest
restart: always
links:
- mitra_postgres
depends_on:
mitra_postgres:
condition: service_healthy
ports:
- "8383:8383"
volumes:
- ./mitra_storage:/var/lib/mitra/media
- ./config.yaml:/etc/mitra/config.yaml:ro

mitra_postgres:
container_name: mitra_postgres
image: postgres:15-alpine
restart: always
environment:
POSTGRES_USER: mitra
POSTGRES_PASSWORD: mitra
POSTGRES_DB: mitra
volumes:
- ./mitra_postgres:/var/lib/postgresql/data
healthcheck:
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: 5s
retries: 20
#---