マストドン設営メモ

みちく茶話会 > 茶話 > マストドン設営メモ

みちく茶話会マストドンの立ち上げ、運用に関しての備忘録です。

目次

参考になったりならなかったりしそうなリスト

バージョンアップの話

作業日:2018年6月16日(土)ごろ

基本的には以下のページの手順に従いました。
Docker を利用したマストドンのアップデートメモ

ところが、sudo docker-compose run --rm web rails db:migrateおよびsudo docker-compose run --rm web rails assets:precompileの際にエラーが発生。検索したところ下記のブログの症例がそれっぽい。
Mastodon 2.4.0に上げるときに困ったこと - ゆめをみること.

この記事に従い、コマンド中のrails./bin/railsに変更したところ、成功しました。具体的には下記みたいな感じです。

~/mastodon$ sudo docker-compose run --rm web ./bin/rails db:migrate
~/mastodon$ sudo docker-compose run --rm web ./bin/rails asset:precompile

今回の作業により、バージョンが v2.2.0rc2 から v2.4.1 にアップデートされました。

サイトデザイン

デザインとか画像とかのカスタム

Mastodonのカスタム方法 | みんなのメモ帳

※2018年5月4日(金)ごろ、上記の方法で試してみましたが、全くうまくいきませんでした。バージョンの違いとか色々あるんだと思います。

public以下、ブラウザから見える範囲のページ構成ざっくり

リソース置き場

鯖缶コマンド覚え書き

ユーザー管理

公式のドキュメントを読もうな!(未読)

エラーを探す

nginxのログ

~$ cd /var/log/nginx
/var/log/nginx$ ls
access.log  error.log

docker-compose

~/mastodon$ sudo docker-compose logs -f

ググるときは「mastodon」だけでなく「docker」をキーワードに含めると良さげ。

nginx

設定反映はreloadで良い

~$ sudo service nginx reload # 普段はこれだけ
~$ sudo systemctl stop nginx # 停止
~$ sudo systemctl start nginx # 起動
docker-compose

起動は最初の1回だけ

~/mastodon$ sudo docker-compose up -d # バックグラウンドで起動

down(コンテナ、ボリューム、ネットワークなどが削除される)しちゃったら

~/mastodon$ sudo docker-compose down
~/mastodon$ sudo docker-compose build # イメージ作成
~/mastodon$ sudo docker-compose up -d # 起動

js、cssの反映

~/mastodon$ sudo docker-compose stop # 停止
~/mastodon$ sudo docker-compose run --rm web rails asset:precompile # 更地にして再作成
~/mastodon$ sudo docker-compose start # 再起動

参考:DockerでMastodonをローカルで動かしてみた! ので、その方法をご紹介。|AKITA SOLUTION MAGAZINE

Mastodonのカスタム方法 | みんなのメモ帳では以下のようにして反映している。

~/mastodon$ sudo docker-compose run --rm web rails asset:clean # 古いデータを消去
~/mastodon$ sudo docker-compose run --rm web rails asset:precompile # 再作成
~/mastodon$ sudo docker-compose build # 再ビルド
~/mastodon$ sudo docker-compose restart # 再起動

動作状態の確認(StateUpなら起動中)

~/mastodon$ sudo docker-compose ps

参考:Dockerで雑にMastodonを起動する方法 - Qiita

構築の話

作業日:2018年2月24日(土)ごろ

AWSのEC2でubuntuにdockerで立てました。

参考リンクとしてCentOSでの立て方

チュートリアルに従って立ち上げる

基本的には下記ページの「お手軽な手順」に従いました。
[1] マストドンAWS構築チュートリアル完全版|初心者から大規模運用まで

所々で下記の記事も参考にしました。
[2] AWSでMastodonインスタンスを作るまで。自分まとめ - Qiita
特に、インスタンスにSSH接続するためのPuTTYの使い方は、こちらの記事に書かれています。

実際に実行した手順で、[1]の記事と違いがあった部分は以下。

  1. Let’s EncryptによるSSL証明書の取得に何度も失敗しました。ドメインをサーバーのIPアドレスと結び付けた際に、その情報がDNSにしっかり反映されるまでに時間がかかったのではないかと思います。この手順を後回しにして進め、Nginxの再起動前くらいにやり直してなんとかなりました。
  2. 最初は[1]と[2]を何度も往復して見ながら作業していたため、AWS Cretificate ManagerでもSSL証明書を取得してしまいました。現状では正常に動いているように見えますが、どこかでLet’s Encryptと喧嘩してそうで怖い……詳しい人に見解を求めたい。
  3. Nginxの設定ファイルは、この記事のものではなく公式ドキュメントのサンプルを元にしました。マストドン自体のアップデートにより変わっているかもしれないからです。example.comsawakai.spaceに書き換え、root /home/mastodon/live/public;root /home/{username}/mastodon/public;としました。
  4. マストドンソースコードの保存先はliveではなくmastodonにしました。コマンドとしては[2]の記事と同じ
    ~$ git clone https://github.com/tootsuite/mastodon
    ~$ cd mastodon
    
    になります。
  5. sudo docker-compose run --rm web rails assets:precompileした際に「500.htmlが見つかりません」のような(正確な出力は失念)エラーが出ました。mastodon/public/下の500.htmlおよびsw.jsが"リンク先が存在しないシンボリックリンク"となっているのが原因だったようなので、リンク先(mastodon/public/assets/以下)に空のファイルを作成
    ~/mastodon$ cd public
    ~/mastodon/public$ mkdir assets
    ~/mastodon/public$ cd assets
    ~/mastodon/public/assets$ touch 500.html
    ~/mastodon/public/assets$ touch sw.js
    
    することで対応しました。ちなみにprecompileが終わってから覗いてみたらちゃんと中身ができてました。
  6. 記事ではsudo docker-compose up -dしたらまるですぐにマストドンに入れるかのように書かれていますが、実際には起動するまでそれなりの時間がかかるようです。それを知らなかったのおかげで「まだ『何かが間違っています』だ……一体全体どこで間違えたんだ……!?」と何度も慌てふためくことになりました(いったんEC2インスタンスを削除して手順をはじめからやり直したのは内緒です)。
  7. メールも、実際に送信ができるようになるまでには結構な時間がかかりました。原因がどこにあったのかは不明ですが、AWS内の送信テストでは遅れたので、マストドン本体側のどっかな気がします(わからない)。設定ファイルを書き換えるなど色々試しましたが、最終的にはチュートリアル通りの設定で届くようになりました。ついでに届いてなかった時に送信コマンドしたメールも、あとからあとから届いて着信音にビビってました。
  8. 手順をはじめからやり直す前のとき、「何かが間違っています」(500番台エラー)の原因を探るべく色々やりま(「ご利用のpipは8.1.1ですが9.0.1が使えます」と言われてたのでアップデートにチャレンジしたり、docker-composeで「Unknown flag: chown」と言われたのでdocker CEの最新版をインストールしてみたり)したが、どれも再挑戦時には不要だったので原因ではなかったようです。

管理者としてログインしたい

アカウント作成時の確認メールがなかなか送れなかったので「管理者すらアカウントが作れねえ!」と嘆きかけましたが、下記ページの「STEP.6 アカウント登録」にコマンドから手動で承認する方法がありました。
[3] DockerでMastodonをローカルで動かしてみた! ので、その方法をご紹介。|AKITA SOLUTION MAGAZINE

おおむねこの通りに(docker-compose ほにゃららの前にsudoを付けるだけ)やって、管理者アカウントが作成できました。

画像がアップロードできない!

マストドンが立ち上がり、アカウントが作成でき、テキストのトゥートもできました!が、画像を投稿しようとすると500エラーが出てしまいました。プロフィール画像のアップロードでもエラーです。困りました。

ひとまずググったところ、2つの記事がヒット。
[4] Mastodonをアップデートしたらトラブル発生! ─インスタンス構築奮戦記:番外編3─ - 招き猫遊戯団日誌
[5] Mastodonインスタンスをv2.0.0にアップデートしたら画像をアップロードできなくなったお話: 羊羹音楽工房 -Yokan Music Factory-

私のところでの原因は[4]に近かったようで、mastodon/public/systemのパーミッションをchmodで変更したら直りました。

そこに至るまでに色々ありましたが、役に立ったのはdocker-composeのログでした。

~/mastodon$ sudo docker-compose logs -f

これを走らせながらブラウザで画像アップロードを試し、ログの中に現れたErrorを追いました。

実際には不正解でしたが、[5]の可能性を疑って作業した際の手順も、備忘のためにメモしておきます。[5]からリンクされている記事を参考に、/var/lib/nginxの所有者(関係ないですがXは数字を伏せています)と、/etc/nginx/nginx.confのuser(USERNAMEも伏せています)を確認。

~$ cd /var/lib
/var/lib$ ll
:
drwxr-xr-x X root root XXXX Feb 24 XX:XX nginx/
:
/var/lib$ vim /etc/nginx/nginx.conf
nginx.conf

user USERNAME;

違っている!ので所有者を変更し、nginxをリロード。

/var/lib$ chown USERNAME:USERNAME nginx #グループも一緒に変更する
/var/lib$ chgrp USERNAME nginx #グループのみ変更する
/var/lib$ sudo service nginx reload

(llおよびchown,chgrpの覚え書きでした)。所有グループも変更してみたりもしましたが、ここが原因ではなかったようなので、問題対処後、元の値に戻しました。