Mastdonアップデート地獄

6.8K Views

September 30, 24

スライド概要

ssmonline#44での発表資料
janogdon.net という長い間放置していたmastodonシステムをバージョンアップすることになってしまい、とても大変だった、という話の顛末等について喋った。
ChatGPTは便利だったな、という話。

profile-image

SlideShareが使いにくくなってしまったのでこちらに全部移してみた。 - 勉強会で使った資料 - イベントでの登壇資料 等を中心に上げてあります。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Mastodon アップデート地獄 2024-09-30 ssmonline #44 資料 佐々木 健

2.

自己紹介(わたしとssmjp) ➢ ➢ ➢ 今日で7回目 ➢ 2018-12-07 ssmjp 年忘れLT大会 ダイビングのすゝめ ➢ 2020-05-20 ssmonline #0(非公開実験回) スクラム開発やってみた ➢ 2020-11-26 ssmonline #4(麻雀回) 迷いを捨てて槓をしよう ➢ 2020-12-18 ssmonline #5 通販チャレンジミャンマー編 ➢ 2021-12-23 ssmonline #18 ステマネのお仕事 ➢ 2022-12-19 ssmonline #29 業務改善できるかな ➢ (ssmonline #37でもなんか資料作ったけどノーカウントで) ささみの本の同人誌に寄稿 ➢ ささみの本4 槓の光 〜初心者からベテランまで、今すぐ実践できる麻雀の考え方、あるいは宗教〜 ➢ ささみの本5 東南アジアへの旅のノウハウ ➢ ささみの本6 AliExpressでミニPCを買ってMicroStackで遊んでみた ➢ ささみの本7 運用で大切なことはすべて麻雀で学んだ ➢ ささみの本8 暗黒麻雀への誘い、ChatGPT で Meraki API Bot を書かせてみたよ メインのSlackチャンネル ➢ ➢ #麻雀やろうぜ

3.

Mastodonって知ってる? ● 会場のみんなに聞きたい!! ● こういうときオンライン開催は不便よねー ● オフライン開催しよーよー

4.

Mastodonとは? ● ● ● 2016年3月に誕生 Twitterライクな自分で立ちあげることができる オープンソースのSNS 2017年4月にメディアに取りあげられてブレイク

5.

当時のTwitter

6.

当時のTwitter

7.

パンがないなら ケーキを食べれば 良いじゃない

9.

あの頃のMastodonは輝いていた 立ち上げて、仲間と遊んで、楽しかった

10.

2017年のJANOG40での登壇 4/10〜 4/17 4/26 5/1 5/2 5/10 5/10 6/5 6/26 7/11 7/27 Mastodonがメディアに取り上げられ突然ブレイク JANOG40プログラム募集締切日 エイヤでMastodonプログラム応募 プログラム選考会議 janogdon.net のインスタンス立ち上げ 内輪向けに細々とアナウンス JANOGのメーリングリストでアナウンス IPv6対応 バージョンアップ(1.3.2→1.4.1) バージョンアップ(1.4.1→1.4.6) バージョンアップ(1.4.6→1.4.7) JANOG40ミーティング ← Now!!

12.

当日の思い出 初日(木曜)の朝一の発表だよ 会場は駅からちょっと遠いよ 会場がとても広いよ お客さんが少ないよ JANOGの人達はアプリの話は刺さらないよ 終わったことは忘れよーー

14.

最近のMastodonはどうなってるの? Janogdonってどうなってるの?

16.

Mastodonのその後 ● 有名なインスタンスが続々とサービス終了 – ● 栄枯盛衰的なものはWikipediaにわりとまとまっている ソフトウェアの開発は継続中 – 通信プロトコルはOStatusは廃止、ActivityPubに完全移 行 ● – ● ● ActibityPubを採用するSNSと連携可能に 開発はわりと活発に続けられている インドとか中国でちょっと流行ったりした ただ別の有力なマイクロブログサービスも出てきて 陰は薄め

17.

Janogdonのその後 ● 過疎地 – ● ここは静かですね ● JANOGが開催されててもここは静かですね ● MLが荒れてますがここは通常営業ですね 2.7までは上げてた(2019年1月のバージョン) たまにTLSの証明書の期限が切れる – ● ● たまに思い出したときにバージョンアップしてた – ● 月に1回ぐらい誰かが何かを書く 数日後にTwitterとかで教えてもらってから更新したり 争いのない平和な世界 – このままひっそりと朽ちはてるはずだった

19.

悪そうなおじさんに絡まれる

20.

MLのメールが届かないって話を JANOGでやりたいと思うんだー ● ● ● ● GoogleやMicrosoftのSPAM対策ルールが厳しく なって、届かないメールが多くなってきたよ それって問題だよね、おいらは立場上書けないか ら、代わりになんかnoteに書いてよ ついでにJANOGに登壇もよろ メールに代わるツールとかも検討できれば良いよ ね – そういえばMastodonいじってたよね?

21.

いちおうnoteにはなんか書いた ● https://note.com/sasakipochi/n/n29f7d1090 ef0

22.

JANOGで怒られないために ● Janogdonのバージョンが古すぎる!!! – アップデートしないと!!! ● OSのバージョンが古すぎる!!! – アップデートしないと!!! ● メールサーバがDKIM、DMARC対応してない – いちおう対応しないと!!!

23.

アップデート地獄へようこそ

24.

元々のバージョン ● OS: Ubuntu 16.04 LTS – Maintenance updates: 2021年4月まで – Extended Security Maintenance(有償): まで 2026年4月 ● Mastodon: 2.7 (2019-01-20 Release) ● 環境: さくらのVPS v4

25.

最終的なゴール ● OS: Ubuntu 16.04 LTS → 24.04 LTS ● Mastodon: 2.7 → 4.3 ● 環境: さくらのVPS v4 → v5

26.

本当はこういうふうにしたかった ● さくらのVPSを新しく建てて(v5) ● OSを新しくインストールして ● Mastodonを新しくインストールして ● そこに古いデータを持ってきてインストール できません!!

27.

なぜできないか? ● バージョンが上がると機能が追加される – 機能追加に伴い、データベースの構造が変更される – ファイルの格納場所も変更されたり増えたりする ● バージョンを1つ上げる場合はマイグレーションス クリプトが提供される – 1つ上げる場合は問題がないが、まとめて上げること はできない – 1つずつ上げるしかない

28.

トライその1 ● ● Ubuntu 24.04 のサーバを建てて、そこの上に今 の環境を動かして そこから1つずつ上げていこー 動かないよ!! Mastodonが参照している ライブラリが古すぎる そういうライブラリが多すぎる

29.

古いライブラリの問題 ● 古いライブラリは廃止される – セキュリティホールが見付かって廃止されることもある – npmライブラリに悪意があるコードが入って緊急アップ デートするようなことも過去にはあった ● ● https://www.theregister.com/2018/11/26/npm_repo_bit coin_stealer/ Mastodonも影響を受けたが、このときは1つ飛ばしてバージョ ンを上げることができるような対応がされた – OpenSSLの古いバージョンは消える ● debパッケージもなくなる ● 必要ならソースからmakeする必要がある

30.

トライその2 ● Ubuntu 20.02 のサーバを建てて、そこの上に今の環 境を動かして ● そこから1つずつ上げていこー ● OSは do-release-upgrade で上げよー やっぱり動かないよ!! Mastodonが参照している ライブラリが古すぎる でもそんなに不足するライブラリは多くないな、、、

31.

足りないライブラリは何か? ● 実行時にエラーが出るので、そのエラーを見れば わかる – でもエラーを追うのは面倒くさい、、、

32.

ChatGPTに聞いてみよう ● ● ● ● ● Mastodonのバージョンアップをしようと思っています。新しい 環境で実行すると以下のエラーが出ました。対応方法を教え てください →○○のライブラリが不足しています、以下のようにインス トールしてください 指摘したファイルが見付かりません、他の方法はありません か? →ソースコードからインストールできます、以下のようにして ください。 (たくさん続く、、、、)

33.

雑に聞いても対応するChatGPT ● だんだん面倒になって、プロンプトを省略して、エラー コードをそのまま貼る ● →それっぽい回答 ● 言われたとおりやってみて、結果を貼る ● →それっぽい回答 ● (無限ループ、時間が溶ける) ● (課金切れ、翌日へ持ちこし)

34.

動いたよーーー!! ● Ubuntu 20.04 LTS + Mastodon 2.7 が動いた!! ● ありがとうChatGPT4、課金してて良かった!! さあ次は、 Mastodonのバージョンだよ!!!

35.

Mastodonのバージョンの基本 ● Mastodonのバージョンアップはどうやるの?、とやっぱり ChatGPTに聞く ● 模範回答が返ってきた ● バックアップしてから、以下のコマンドを打つんだよ cd mastodon git fetch –tags git checkout 最新のリリースタグ bundle install yarn install RAILS_ENV=production bundle exec rails db:migrate RAILS_ENV=production bundle exec rails assets:precompile

36.

バージョンアップもChatGPT頼り ● コマンドを叩く ● エラーが出る ● エラーをChatGPTに貼る ● ChatGPTに言われるままに作業 ● エラーが出る、からの無限ループ

37.

どんなエラーが出るか ● ライブラリがない ● Rubyのバージョンが違う ● Node.jsのバージョンが違う ● Gemのバージョンが違う ● yarnのバージョンが違う ● bundleのバージョンが違う ● 等々

38.

ChatGPTも万能ではない ● 回答が間違っていることもある – ● ● 情報を追加したり、対話をしたりしながら正解に辿りつく必要がある 答えが返ってくるのに時間がかかる – 思ったより時間が溶けてしまう – 4oのように速い応答のモデルを使えばマシになるけど、7月の時点で は、4oより4のほうが嘘は少なめだった それでも、つらい作業を1人で悩むよりChatGPTと作業を進め るほうが精神的に楽 – 思考は停止するので頭は悪くなりそうだが

39.

バージョンが上がった!! ● Ubuntu 20.04 LTS + Mastodon 4.3 まで到達 ● ありがとうChatGPT4、課金してて良かった!! ● 課金不足で時間がかかった、ひたすら時間が溶けた(延べ 2週間ぐらい) 動いたわけではない

40.

残された問題 ● Ubuntuのバージョンが古い(20.04) ● ほかのサーバと連携が取れない ● 画像ファイルが上げられない

41.

Ubuntuのバージョンアップ ● do-release-upgradeで簡単!! – と思ったんだけど、、、 ● 7月の時点では、22.04までしか上げられなかっ た – 8月になったら、24.04まで上げられるようになった ● postgresのバージョンが複数入ってportが変わっ た – 良くできてるなあ

42.

他のサーバと連携が取れない ● ● Sidekiqのキューにタスクが沢山溜ってた Sidekiqのプロセスは動いてるけど、タスク処理に途中で失敗してい る ● それっぽいエラーが全然出てない ● エラーがないとChatGPTにも聞けない ● データをバックアップ、クリーン状態から4.3をインストール ● そこにデータを戻したらSidekiqが動くようになったよ!!

43.

画像ファイルが上げられない ● imagemagickとffmpegが必要だった ● sudo apt install imagemagick ffmpeg

44.

無事に動いた!!!! ● ● アップデート中に頻繁にサイトが停止したり、不 具合が発生したり、いろいろあったけど、過疎っ てるから平気なの!!! 社会的影響が皆無なサービスは良いね!!!

45.

メールも対応しなければ ● SPF: 対応済み、IPアドレスを変更するだけ ● DKIM: ChatGPTに聞きながら楽々設定 ● DMARC: ChatGPTに聞きながら楽々設定 ChatGPTは麻薬

46.

DKIMのハマり所 ● 鍵の長さが長いと、1つのDNSレコードに入らない ことがある – DNSサーバの実装による ● さくらのDNSは長いレコードは駄目 – 分割して登録する方法はあるけど、分割するとDKIMの チェックに失敗する – 短い鍵を作って対応 ● セキュリティ的に弱くなるけど ● セキュリティ対策の仕組みなのに弱くしなきゃいけないって

47.

DMARCの感想 ● Google等から、DMARCレポートが届くようになっ た – お前のドメインから送られてくるメールはこんな感じ だ、というレポート ● XMLファイルが添付されたメールで届く – XMLファイルなのでそのままだと人間には読めない – DMARCレポート解析ツールを使って読む – 毎日人間が対応するものじゃないし、これの運用大変 では?

48.

JANOG54の感想等 ● メールに変わる連絡手段、みたいなBoFをやった – ● プログラムは落ちた BoFには人があまりいなかった – 過疎ってて楽しかった ● Mastodonの話題はゼロ ● Janogdonへのつっこみもゼロ ● アップデートしなくても良かったのでは? ● Chunogで浸透いうな先生にお疲れ様でした、と言われたから、まあいい かあ

49.

余談 ● ● Ruby on Railsベースのシステムは結構あるけど、み んなちゃんと運用できてるんじゃろか? – アップデートをサボると地獄になる気がするよ – まあサボらなきゃ良いんだけど PHPベースのシステムはわりとバージョンアップに帯す るフォローが手厚い気がする – MoodleとかWordPressとか、新しいバージョンが出るたび に、バージョンアップ圧力をかけてくる – 追加で必要なソフトウェア等も教えてくれる

50.

余談2 ● Dockerを使ってたらMastodonのバージョンアップは 楽だった? – ちょっとずつ上げていく、のであればDockerを使うほうが おそらく楽 ● – Rubyのバージョンアップ等も自動でやってくれる ただ今回のように放置していたシステムのバージョンアッ プはもっと地獄だった気がする ● Docker Imageのビルドに失敗したときにトラブルシュートし ていくのとか、絶対にやりたくないし、もっと時間がかかりそ う

51.

まとめ ● ChatGPTは麻薬 ● SMTPは滅びるべき ● 過疎ってるシステムはメンテが楽 ● アップデートはさぼっちゃダメだぞ ● ● その場のノリでサービスを立ちあげると後で困ること もあるよ 悪いおじさんに捕まらないようにしよう – 最近は捕まえる側になってる気もするが

52.

おしまい