misskey2020
自鯖Misskey的快適生活
https://gyazo.com/53e2232c570111f53e19ba9c9943f0b4
SNS(というかfediverse)好きが高じてついにミスキーで自鯖(お一人様)まで建ててしまいました。どうやって建てたか、建てた後に起こったトラブルをまとめておくメモです(他にマストドン, プレロマを使っています。SNS使い分けメモはこちら)。 お品書き
1. 私の技術レベル
2. Googleより頼れる人間を探そう
3. Misskeyを建てる順序
4. なにもしてないのに壊れた:ビルドに失敗(スワップを足す)
5. なにもしてないのに壊れた:502 Bad Gatewayが出る
6. なにもしてないのに壊れた:nodenvバージョンがおかしいと言われる
7. Let's Encrypt Expiry Botからの突然の連絡(証明書の更新)
8. 困ったら誰かに聞こう
1. 私の技術レベル
プログラマではありません、普通のJD(女子大学院生)です。ただし研究上ちょっとプログラミングするので、すごく簡単なコマンドラインの操作(cdとかlsとかレベル)と基本的なgitは使います。が、そのレベルです。
2. Googleよりも頼れる人間を探そう
後ほど参考にしたページなどをまとめておきますが、何よりも必要なのは頼れる人間です!特に技術に疎い人は技術がないから技術をまず身につけようと思うのではなく、この分野に詳しくかつ馬鹿にも丁寧に教えてくれる親切ないい人をまず見つけましょう。
既に長くミスキーを使っていたら何となくそれっぽい人がフォロワーにいるかもしれませんが、そうではない場合は下記のDiscordサーバーに参加するのが良いです。
鯖缶工場:ぐすくまさんが主宰で、ミスキーの他にもマストドンやプレロマの質問も受け付けています。誰が助けてくれるかはわかりませんが、誰かは助けてくれます(質問は#カスタマーサポートセンターにどうぞ)。 しかし鯖缶工場は自分が作業しているときに質問が返ってくるかはわからないので、一番のおすすめは建てているときに見守ってくれる人が同じTL上にいることです。私の場合は「エラー出た!」→「どんなエラーか教えて」→「これです!」→「じゃあ....って打ってみて」→「できました!」の繰り返しでした。
Special thanks ⭐️:
3. Misskeyを建てる順序
参考にしたドキュメント:
一番参考にしたのは最初ののえるさんのv11系を建てるブログでした。ミスキーの基本構造がわかってる人は公式のマニュアルで十分事足りると思うのですが、私のように「サーバーって何?どうしてサーバーがいるの?」レベルの人はきっとのえるさんのブログが一番わかりやすいはず。
まずミスキーを動かすためのサーバーがいります。自分で作るか、レンタルサーバーで借りましょう。何を言ってる人かわからない人はレンタルサーバーで借りましょう。レンタルサーバーも提供している会社が複数あって比較サイトもありますが、私はのえるさんのブログ通りにVultrのメモリ2GB、SSD55GBのプランでUbuntu 20.04 x64を使っています。 (※こんな感じでレンタルサーバーをどこにすべきかから各種設定の仕方など、色んな選択肢ややり方があってよくわからないので、この辺りをよく知った信頼できる人のおすすめに従うのが良いかと思います。大体のことに関して全ての人に当てはまる絶対解のようなものはなく各環境や個人の好みによるので、技術的なことがよくわからないのであれば自分でググるよりは詳しい人に聞くほうが確実だし早いです。いやそれでも他人に意思決定されたくないという人はもちろんご自分でどうぞ。)
サーバーを借りたら、自分のパソコンからそのサーバーに接続します。作業に使う(指示を出す)のは自分のパソコンだけど、作業先はレンタルサーバーにあるみたいな(そう、私は技術のことがわからない)。接続できたらそこにミスキーをインストールして、そのままだと自分しか見れないので外部から見れるようにするというのが超大雑把な流れだと思ってます。というかこれが今の私の理解なんですけど、大丈夫ですか🙄?
外部から見れるようにするにはインターネット上の住所を取らないと行けないので、ドメインを借ります。私はムームードメインで取りました。 その他通信を暗号化するための設定(Let's Encrypt証明書)とか外部との通信をスムーズにする設定(nginx;読めない)を終えたら無事ミスキー鯖の誕生👏
ミスキーは頻繁にアップデートがあるのですが、今のところ常に最新版にしているわけでもなく、時間があるときにアップデートをする感じで特に問題が起こったことはありません。アップデートの仕方はMisskey構築の手引きに書いてる通りに行い、最後にミスキーを再起動させるのを忘れずにすれば大丈夫なはず。 だいたいの維持費:
レンタルサーバー (vultr.com):10ドル/月
オブジェクトストレージ (vultr.com):5ドル/月
(これを合算すると15ドルのはずなのになぜか19ドルぐらい引かれてて何でかとよくみたら住んでる国の税金だった。おそらく日本だったら0円のはず)
ドメイン (mametsuko.net):1,628円/年
4. なにもしてないのに壊れた:ビルドに失敗(スワップを足す)
基本的に手順に沿ってアップデートすれば問題はないのですが、ミスキーはビルドするときに容量を使うらしく、容量不足でビルド失敗になる人がいるそうです。私も初めてのアップデートビルド失敗になりまた。
もしサーバーを動かしたままで作業しているのであれば一度止めて(systemctl stop misskey)、作業をやってみましょう。しかし私はそれでもビルド失敗のままでした。
では環境設定を変えましょう。何の環境設定?わかりません!でもNodeの最大容量を増やしてくれるようです(Nodeって何?って方は5日目のしゅいろの記事を読みましょう)。 code: env
export NODE_OPTIONS=--max_old_space_size=4096
これをビルドする前に追加します。しかし私はこれでもビルド失敗のままでした。
そこでスワップを足しましょう。スワップって何?知りません!一時的に使える容量を上げてくれるみたいなので、私は8GB足しました(2GBぐらいでいいらしいですけど)。
まずfreeと打って状況を確認します。当初私はこんな感じでした。
https://gyazo.com/faf018d75301e2eeb17d09ea49ac8747
code: swap
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo -e /etc/fstab
/swapfile none swap sw 0 0
https://gyazo.com/e9c61e85ecdb7926bf02ccffb54839ce
今こんな感じで放置してます。プログラムの不具合などでスワップを使い果たしてプログラムが重くなったらとりあえずfreeで確認しましょう。
解除したい時はsudo -e /etc/fstab で書き込んだ/swapfile none swap sw 0 0を削除して再起動するとスワップが使れない状態になるそうです。その後に下記のようにスワップファイルを消します。
code: swap
sudo swapoff /swapfile
sudo rm /swapfile
全部のえるさんに教えてもらいました。ありがとうございます🙏
5. なにもしてないのに壊れた:502 Bad Gatewayが出る
最近(2020.12.17現在)アップデートしたのですが、いつも通り問題なくアップデートできたのに、なぜかいつまで経っても502 Bad Gatewayと出て帰ってこれなくなりました。systemclt statusでmisskeyやnginxの状態をみましたがどちらもactiveだし…
とりあえずエラーがあったら下記のコマンドを打って何か吐き出されてないか見てみましょう(私は特に何も見当たらず)。
code: error
sudo journalctl -xu misskey
結局めいめいにyarn --forceしたらどうかしらと言われて、これをやったところ直りました。 install時にnode_modulesにバイナリをダウンロードして投下するモジュール (sharp) があるんだけどこれが結構たまに欠けちゃうのだわ。パッケージマネージャかsharpのinstallスクリプトがいけない気もするのだわ
らしい。ありがとう、めいめい🙏
6. なにもしてないのに壊れた:nodenvバージョンがおかしいと言われる
yarnを使おうとするとたまにnodenv: version vxx.xx.x is not installedみたいな感じで怒られます。指定通りのバージョンをインストールしましょう。
まずnodenv versionsでどのバージョンが入っているか確認して、指定のものがなければ追加します。xx.xx.xはインストールしたいバージョン(例えば14.15.0)のこと。
code: nodenv
nodenv update
nodenv install xx.xx.x
のえるさんに教えてもらいました。ありがとうございます🙏
7. Let's Encrypt Expiry Botからの突然の連絡(証明書の更新)
快適にミスキーを使っていたのですが、ある日恐ろしいメールが届きます。
Your certificate (or certificates) for the names listed below will expire in 10 days (on 18 Dec 20 20:59 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors.
Let's Encrypt Expiry Botというボットからのメールで、メアド教えたつもりないのに誰!?みたいな気持ちになります(実際証明書を設定するときに教えてるがそんなことは記憶に残っていない)。要はもうすぐで証明書が切れて、あなたの自鯖見れなくなりますよ!ということらしい。
これは大変!更新しないといけないのですが、コマンドは簡単でsudo certbot renewをすれば問題ないようですが、私はファイルが見当たらないというエラーがでて、パスが間違っていたのでまずそれを直しました。
code: certbort
sudo -e /etc/letsencrypt/renewal/misskey.mametsuko.net.conf
dns_cloudflare_credentials = /etc/letsencrypt/.cloudflare_credentials
となるべきところが
dns_cloudflare_credentials = .cloudflare_credentials
と間違って書かれていたので修正しました。
(※見たらわかりますがCloudflareを使ってるのでこんな感じになってます。)
sudo certbot certificatesでちゃんと更新されているか確認できます。
これものえるさんに教えてもらいました。ありがとうございます🙏
手動で更新はだるいので自動化の方法も教えてもらったのですが、既に長いので今回はこの辺りで…(またどこかに書いたらこのページにリンクを貼っておきます)。
8. 困ったら誰かに聞こう
どうやって自鯖を建てたのか、ミスキーの仕組みの理解、今までのトラブルはこんな感じでしょうか。いまだによくわかっていない部分がほとんどですが、やっぱり自分でインスタンスを建てると手を動かすので、チュートリアルを読んでいるだけよりはよっぽど理解が進みます。何だか大人になってからあんまり質問をすることも少なくなったのですが(何とか自分で調べて解決しようとする)、どんどん人に聞くのもいいですね。というかむしろありよりのありですね。
建てるより続ける方が色んな意味で大変そうです。私は一人用なので他に新規受付はしていないのですが、登録を開放すると人が集まってきて、色んな繋がりが増えたりトラブルが生じたり…と運営は運営でとても楽しそうでやってみたいのですが、今はあまり余裕がないので将来の楽しみに取っておこうと思います。人によっては維持費も重要なポイントだと思いますが、工夫すればもっと安くできるようです。
一人でドキュメントを読み吐き出されるエラーを見るだけだとただただ苦痛ですが、教えてくれる人がいるとむしろ色々一緒に試している感じがしてた欲しいです(いや、教えてくれてる人達が楽しいと思ってくれているかは謎ですけど)。分散系SNSは色んなインスタンスがあって自由に選べるのが特徴ですが、さらに「自分でも建てれる」というところがポイントだと思うので、ちょっとでも興味がある方には是非試してもらいたいです。誰かが作ったインスタンスに登録するよりは手間も時間もお金もかかりますが、管理者ならではの自由度もあるので(好き勝手にカスタム絵文字を追加できたり)、鯖缶になってより自鯖Misskey的快適生活を送りましょう(中国語を意識して書きましたが私は中国語が一切わからない)。
2020.12.17 まめつこ