国産のActivityPub互換な分散型マイクロブログ用ソフトウェアであるMisskeyを立ててみました。Misskeyがどんなもんか触ってみたかったのと、どうせなら構築と運用の知見もほしいなと思っただけです。また、mikutterにあるメインアカウントを捨ててこちらに移るとかではなく、こくだハイクももちろんたたみません。
Misskeyについては開発しているしゅいろさんがgihyo.jpで連載を初めているのでこちらを読むと良いです。
今回立てたサーバーは、ほぼ10年間麦子がふよふよしているだけだったmugiko.moeドメインを使いました(テスト用Mastodonもここのドメインを使ったりしてます)。ユーザー登録の解放はしてませんが、招待制でちんまりゆるゆるとやってみようかと思っています。
UIと麦子イラストの相性、なかなか良い。
構成
自宅のDockerホストでdocker-composeを利用してMisskeyを立てて、自宅WebサーバーのUbuntu Server 20.04のApache2からリバースプロキシーします。Mastodonも同じ感じなので、構成自体はわたし的にはそんなもんという感じです。
Misskeyのインストール
以下のドキュメントを参考にDockerでサーバーを立てました。
設定ファイルの書き換えポイントは以下の通り。default.ymlはいらないところを書き換えまくってけっこうミスりました。思ったより書き換えるところ少なかったですね。
Apache2の設定
nginxの設定例はありましたが、Apache2の設定例がなかったので、Mastodonの設定をベースになんとなくでこねこねしました。WebSocketのパスのあたりは自信がない。もしかしたら/streamingまでやっていいかも?
ドメインのDNSレコード作成とかLet's Encryptの取得は適宜いい感じにやります。
<VirtualHost *:80> ServerName example.com Redirect Permanent / https://example.com/ RewriteEngine on RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent] </VirtualHost> <VirtualHost *:443> ServerName example.com DocumentRoot /var/www/example.com ErrorLog /var/log/www/example.com-error.log CustomLog /var/log/www/example.com-access.log combined SSLEngine on SSLProtocol -all +TLSv1.2 SSLHonorCipherOrder on SSLCipherSuite EECDH+AESGCM:AES256+EECDH:AES128+EECDH SSLCompression off SSLSessionTickets off SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Strict-Transport-Security "max-age=31536000" RewriteEngine On RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule / ws://192.168.29.14:3100/ [P,L] ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https" ProxyPass / http://192.168.1.23:3001/ ProxyPassReverse / http://192.168.1.23:3001/ # リバースプロキシ先が死んでたときに出す503ページのための設定 ProxyPass /503.html ! ErrorDocument 503 /503.html </VirtualHost>
(2/16更新) ProxyErrorOverride Onを削除。
初期設定
起動できたらアクセスして管理者ユーザーを作成。細かな設定は以下のページを参考に実施しました。
ユーザー登録解放はしないので無効化しつつ、ほかはちょいちょいですが、ほぼ必須なのはプッシュ通知のためのService Worker設定。Mastodonだと.env.productionに書かれていますが、MisskeyはWebUIに持ってきてるんですね。
あとは設定画面を眺めたり、画像を設定して麦子をちりばめて遊びました。
まとめというか感想
Mastodonと比べて設定の自由度は大きそうでした。まだ触れていない機能も色々あるっぽく、色々充実しています。Mastodonと両方触るとお互いの方向性みたいなのが見えて面白いですね。ただクッキークリッカー機能いる?w
しばらく触っていればアップデートとかストレージ消費量とか、また見えてくるものがあると思うので、ゆるっと楽しんでみようと思いますん。
冒頭に書こうとしたら長くなりすぎたしキモかった雑記
イーロン・マスクによる「ほぼ日刊俺が考えた最強のTwitter(笑)」によってTwitterの先行きがより怪しく見えるようになってきた今日このごろ、皆様いかがお過ごしでしょうか。先週末はMastodonのユーザー数がまた跳ね上がり、Pawooは支えきれず週末の間ダウンし、Misskey.ioもユーザー急増で大変そうでした。
また、最近は、Nostrという別のプロトコルによるSNSぽく使えそうなサムシングがもてはやされています。私もちょいと触ってみた感じ、IRC2.0っぽいなあと思った次第です。そもそもIRCに例えて通じるかは怪しいなと思ってTwitterとMastodonでアンケートを取ったら、Twitterのフォロワーなら通じそうでしたが、Mastodonは半々でユーザーの層というものを感じさせられました。さておき、Nostrはログの完璧な保存を求めるなら自分で収集する何かを持たないとかなという感じで(TwitterもMastodonも同じっちゃ同じですが、儚さレベルが一弾くらい違うかなみたいな)、他も色々というか、まあ、無理じゃないかなあと。このみんなで手探りする感じが良いっていう人もわりといたんですけど、それ多分Mastodonの初期の頃に飛びこんだ人たちも同じこと言ってたんじゃないかなあ。まあ、いい意味で分散かあ。
あと、一部メディアはmixi回帰がどうとか言い始めてますが、ガラパゴス路線に逆走してどうするんでしょうか。日本人だけのSNSに閉じこもっちゃうのは個人的には超ビミョーですかね……。それで良い人ならまあそうしてもらって。それもまた分散。
そもそも、Twitterの代替って一口に言っても、人によって求めるものが全然違いますし。ある人はタイムラインの空気感だったり、ある人はUIだったり、ある人は機能だったり、ある人は投稿の自由だったり、本当にバラバラ。仮に全員が満足するものがあったとしても、Twitterにいる人全員がそっくりそのまま移れるほどのインフラを作ること自体(金銭的に)無理があるので、分散は避けられず、その他も色々諦めないと代替は見つけられないんじゃないかなあと思っています。