あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Misskeyサーバーを立ててみた

国産のActivityPub互換な分散型マイクロブログ用ソフトウェアであるMisskeyを立ててみました。Misskeyがどんなもんか触ってみたかったのと、どうせなら構築と運用の知見もほしいなと思っただけです。また、mikutterにあるメインアカウントを捨ててこちらに移るとかではなく、こくだハイクももちろんたたみません。

Misskeyについては開発しているしゅいろさんがgihyo.jpで連載を初めているのでこちらを読むと良いです。

gihyo.jp

今回立てたサーバーは、ほぼ10年間麦子がふよふよしているだけだったmugiko.moeドメインを使いました(テスト用Mastodonもここのドメインを使ったりしてます)。ユーザー登録の解放はしてませんが、招待制でちんまりゆるゆるとやってみようかと思っています。

misskey.mugiko.moe

UIと麦子イラストの相性、なかなか良い。


構成

自宅のDockerホストでdocker-composeを利用してMisskeyを立てて、自宅WebサーバーのUbuntu Server 20.04のApache2からリバースプロキシーします。Mastodonも同じ感じなので、構成自体はわたし的にはそんなもんという感じです。

Misskeyのインストール

以下のドキュメントを参考にDockerでサーバーを立てました。

misskey-hub.net

設定ファイルの書き換えポイントは以下の通り。default.ymlはいらないところを書き換えまくってけっこうミスりました。思ったより書き換えるところ少なかったですね。

  • default.ymlの書き換えは、urlのドメイン部分、DBのuserとpassのみ。
  • docker.envの書き換えは、default.ymlで指定したDBのuserとpassをそれぞれPOSTGRES_USERとPOSTGRES_PASSWORDに当てはめ。パスワードが上の行なので注意。
  • docker-compose.ymlはwebの外向けのportを変更。3000だとMastodonとかぶるので。

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を削除。

初期設定

起動できたらアクセスして管理者ユーザーを作成。細かな設定は以下のページを参考に実施しました。

hide.ac

ユーザー登録解放はしないので無効化しつつ、ほかはちょいちょいですが、ほぼ必須なのはプッシュ通知のためのService Worker設定。Mastodonだと.env.productionに書かれていますが、MisskeyはWebUIに持ってきてるんですね。

あとは設定画面を眺めたり、画像を設定して麦子をちりばめて遊びました。

まとめというか感想

Mastodonと比べて設定の自由度は大きそうでした。まだ触れていない機能も色々あるっぽく、色々充実しています。Mastodonと両方触るとお互いの方向性みたいなのが見えて面白いですね。ただクッキークリッカー機能いる?w

しばらく触っていればアップデートとかストレージ消費量とか、また見えてくるものがあると思うので、ゆるっと楽しんでみようと思いますん。

冒頭に書こうとしたら長くなりすぎたしキモかった雑記

イーロン・マスクによる「ほぼ日刊俺が考えた最強のTwitter(笑)」によってTwitterの先行きがより怪しく見えるようになってきた今日このごろ、皆様いかがお過ごしでしょうか。先週末はMastodonのユーザー数がまた跳ね上がり、Pawooは支えきれず週末の間ダウンし、Misskey.ioもユーザー急増で大変そうでした。

bitcoinhackers.org

また、最近は、Nostrという別のプロトコルによるSNSぽく使えそうなサムシングがもてはやされています。私もちょいと触ってみた感じ、IRC2.0っぽいなあと思った次第です。そもそもIRCに例えて通じるかは怪しいなと思ってTwitterMastodonでアンケートを取ったら、Twitterのフォロワーなら通じそうでしたが、Mastodonは半々でユーザーの層というものを感じさせられました。さておき、Nostrはログの完璧な保存を求めるなら自分で収集する何かを持たないとかなという感じで(TwitterMastodonも同じっちゃ同じですが、儚さレベルが一弾くらい違うかなみたいな)、他も色々というか、まあ、無理じゃないかなあと。このみんなで手探りする感じが良いっていう人もわりといたんですけど、それ多分Mastodonの初期の頃に飛びこんだ人たちも同じこと言ってたんじゃないかなあ。まあ、いい意味で分散かあ。

あと、一部メディアはmixi回帰がどうとか言い始めてますが、ガラパゴス路線に逆走してどうするんでしょうか。日本人だけのSNSに閉じこもっちゃうのは個人的には超ビミョーですかね……。それで良い人ならまあそうしてもらって。それもまた分散。

そもそも、Twitterの代替って一口に言っても、人によって求めるものが全然違いますし。ある人はタイムラインの空気感だったり、ある人はUIだったり、ある人は機能だったり、ある人は投稿の自由だったり、本当にバラバラ。仮に全員が満足するものがあったとしても、Twitterにいる人全員がそっくりそのまま移れるほどのインフラを作ること自体(金銭的に)無理があるので、分散は避けられず、その他も色々諦めないと代替は見つけられないんじゃないかなあと思っています。