1214 文字
6 分
Mastodonを再構築した

Mastodonを再構築した#

こちらの記事で構築したMastodonの自鯖を再構築しました。
依存環境周りでOpenSSLのバージョンを上げた際にOpenSSHを特に何もせず放置した結果?ssh出来なくなってしまい、ご覧の有様だよ状態になりました。
一応ConoHaのコンパネからコンソールを使えばある程度のことはできますが、お世辞にも使いやすくはなく直すのがしんどそうだったのでいっそのことやり直した方が早いなと。

どうせならDockerでやろう#

今後も依存環境周りでコケてしんどそうだったので、Dockerで再構築してみました。
最初からそうしておけばよかったのですが、残念ながら公式のドキュメントには構築手順がなく……。
以前はあったそうなのですが、色々あって消えてしまったようです。というわけでネット上の先人たちの知識を借りることに。
kmyblueをdockerで立ち上げる個人的メモを参考に実施してみました。

はい、よーいスタート#

引き続きglitch-socで構築しました。参考にさせていただいた記事ではkmyblueというまた別のforkですが、元は同じMastodonなので問題ないはず……。
実際一応動いてはいますので、多分大丈夫そう。
また、Cloudflare Tunnelで公開となっていたのでせっかくだしと自分も同じようにこちらを利用しました。

docker-compose.yml#

元の設定だとまさかの本家のimageが指定されているので書き換えておく必要があります。
ついでに自分用だしとnightly版を指定しました。latest版が無難だとは思います。

 web:
    # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
    # build: .
    image: ghcr.io/glitch-soc/mastodon:nightly

 streaming:
    # You can uncomment the following lines if you want to not use the prebuilt image, for example if you have local code changes
    # build:
    #   dockerfile: ./streaming/Dockerfile
    #   context: .
    image: ghcr.io/glitch-soc/mastodon-streaming:nightly

  sidekiq:
    # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes
    # build: .
    image: ghcr.io/glitch-soc/mastodon:nightly

3つほど存在するので面倒ですが全部変えておきます。streamingだけまた別なのも注意ですね。(1敗)

参考元通り進めていく#

他は軒並み同じなのでその通りに。自分はElasticSearchは使用しないのでそこはスルーしました。
.env.productionの設定はS3互換のストレージ設定は以前のをそのまま流用して設定。メールは使わないので全部コメントアウトしておきました。

ハマリどころさん#

起動までこぎつけたので、アカウントを作成しようとしたのでが、tootctl--roleが機能せず……。
Cannot find user role with that nameのエラーを吐かれてしまい作成した垢にOwnerに設定できないという事態に。
最初はNightly版特有のアレかなとも思いましたが、バージョンを下げたりしても状況は変わらず。
途方に暮れていたところ、issueにこのような記述が。
V4.0.2の頃のでしたのでダメ元で以下のコマンドを走らせて実施してみることに。

docker compose run --rm web bundle exec rake db:seed

を走らせた後に、tootctlOwnerに設定が完了しました。最悪なくてもええかと諦めてたところだったので一命をとりとめました。

完走した感想#

Dockerでも構築できないこともないなと思う反面、また別の問題がでてきてしまい、一長一短かなぁと。
とはいえ構築時間はこっちのが圧倒的に速い上に、依存環境周りでハマることもないと思えばアリですかね。
久々にCloudflare Tunnelも使用しましたが、これも楽ができて助かりました。
とはいえStreaming用に別途設定の必要があるのは知らないと出来ないなぁと思いました。素直にNginxのが結局いいのかもしれませんね。
さてこれもいつまでもつのかわかりませんが、やれるところまで頑張ってみますか。
最後にリンクだけ下に書いときますね。

Mastodonを再構築した
https://unhappysalt.life/posts/mastodonを再構築した/
作者
ナナシロ
公開日
2025-02-17
ライセンス
CC BY-NC-SA 4.0