この記事は
オバケやしきーバーリ・トゥード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
#---