アップデートしてみたんす
素人がMastodonインスタンスをアップデートできた話とお世話になったコマンドたち(1/2 ページ)
Mastodon(マストドン)が日本で急激に広まった4月、筆者は「素人でもMastodonのインスタンスは立てられるかやってみた」と題し、インフラエンジニアでもない自分でもインスタンスを立てることはできるのか体当たりチャレンジをした。
記事ではhttps化でつまづいていたが、その後DNSの設定が反映できたことを確認してからLet's Encryptによる証明書取得に再チャレンジしたところ、正常に取得できて無事にhttps化することができた。
また、上記で立ち上げた一人用インスタンスとは別に、ポータブルオーディオ趣味の人で集まるインスタンスの立ち上げから運営の技術面を担うことになり、学校1クラスくらいの人数でのんびりトゥートしている。
このような流れで2つのインスタンスを運営することになった筆者だが、1つ忘れているというか、目をそらしていることがあった。
インスタンスのアップデートだ。
一人用インスタンスはともかく、趣味のインスタンスに果たして人が居着いてくれるだろうか、人がまるで来なかったら時期を見て閉じようか、などと心配しながら立ち上げたものだった。しかし、ゆっくりとしたペースでユーザーが増えてくれて、今ではローカルタイムラインを見れば毎日誰かがイヤフォンやポータブル音楽プレーヤーの写真を上げているくらいの活気を見せるようになった。
ここまで来たら継続的にアップデートやメンテナンスをしなければならないが、いかんせん立ち上げにも苦労した素人である。下手にアップデートをかけて失敗すると、データベースごと飛ばしてしまい、インスタンスがさら地になるのではあるまいか。mstdn.jpのぬるかるさんも最初期にそんな失敗をしていたし、自分にうまくできるのか。
そんな不安が筆者の腰を重くしていたが、時間がたてば本家Mastodonもどんどんバージョンが上がり、どんどんコードも改善されていく。いつまでも尻込みしていては、他のインスタンスに置いて行かれるのも時間の問題だ。
そこで筆者は一念発起し、次のような戦略を立てた。一人用インスタンスだったら吹っ飛ばしても大して困らないし、こちらでうまくできたら趣味インスタンスもアップデートしよう、と。
前置きが長くなったが、2つのインスタンスのバージョンを上げるに当たり、行った手順やつまづいた部分、トラブルシューティングを紹介しよう。前提として、環境は「さくらのVPS」にUbuntu 16.04をインストールし、Dockerで構築したものだ。インスタンスのバージョンは2つとも1.2.2だった。
これまでやったことを整理する
まずは自分自身がインスタンスの立ち上げ時に行った手順を思い出すため、「Xmind」というマインドマップソフトでコマンドを整理した。
そうそう、git cloneして設定ファイルいじってdocker-composeで立ち上げたんだったな……ということを思い出し、次にインスタンスのアップデート方法を調べた。
主に参考にさせていただいたのは、「さくらの VPS + CentOS7 で 俺専用 Mastodon インスタンスを立ててみた話 - WWW WATCH」のアップデートに関する項と、公式のProduction guideだ。
上記2つの情報のほか、ネット上から得られた知見を合わせると、筆者が行ったDocker環境でのアップデートは次のようになる。
git stash
git fetch
git status
git checkout $(git tag -l | sort -V | tail -n 1)
git stash pop
Mastodonの最新バージョンの取得
sudo docker-compose build
sudo docker-compose stop
sudo docker-compose run --rm web rake mastodon:maintenance:prepare_for_foreign_keys
sudo docker-compose run --rm web rails db:migrate
sudo docker-compose run --rm web rails assets:precompile
sudo docker-compose up -d
sudo systemctl restart nginx
取得した最新バージョンのビルドから起動まで
Gitによる操作に難しいところはないが、git cloneでプロジェクトをローカルに移した後に自分で編集しているファイルがあるので、git stashにより一時的に編集ファイルを待避させる必要がある。git fetch、git checkoutでローカルのMastodonファイルを目的のバージョンにしてから、git stash popで待避させていた編集ファイルを元の位置に戻す、という流れだ。
git checkout $(git tag -l | sort -V | tail -n 1) は公式ガイドに書いてある最新バージョンに上げる方法だが、git checkout v1.4.3などバージョンを指定することもできる。
筆者の場合、ハマったのはやはりDocker周りだった。ビルドしてからすぐに4行目のsudo docker-compose run --rm web rails db:migrateをしようとしたところ、
"PG::ForeignKeyViolation: ERROR: insert or update on table "statuses" violates foreign key constraint "fk_rails_94a6f70399""
というエラーが出て失敗し、その先のコマンドもうまくいかない。エラーメッセージで検索したところ、公式のGitHubに該当するissueがあった。
そこに書いてあるアドバイスに従い、2、3行目を追加したところ正常にmigrateできた。公式のリリースノートによると、これはv1.4.2以上に上げる際に必要な処理のようだ。
趣味インスタンスの作業ではそこから先は滞りなく進み、1時間ほどで無事にバージョン1.4.4に上げることができた。
しかし、先に実験で試した一人用インスタンスでは当然スムーズにいかず、最終的には正常にアップデートできたものの、数多くの失敗をした。その全ては書かないが、遭遇した主なエラーとそれを解決できる(かもしれない)コマンドを最後に紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.
マストドンのインスタンスをいじってみたんす
誰でも管理者になれるSNS、マストドン(Mastodon)。プログラミングは好きだけれどサーバの運用はしたことのない筆者が体当たりでマストドンのサーバ立ち上げにチャレンジする。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
メルカリ、梨の転売疑惑に「盗品の出品は確認されず」 誹謗中傷には利用制限も
-
2
「こんなのに追われたら……」急斜面もやすやす爆走、中国製の車輪付き四足ロボのデモ動画が話題 最高時速20km超
-
3
検索結果に「詐欺ではありません」と表示させる詐欺手口、警視庁が注意喚起 AI要約も餌食に
-
4
はてな、11億円流出の調査報告書を公開 偽警察、口外禁止、残業・休出200時間超、孤立……ほころびが連鎖
-
5
Z世代に聞く次の流行、「AIイラスト」が1位に 「Claude Code」も上位
-
6
東野圭吾さん死去、Xなどで追悼相次ぐ 「ガリレオ」など数々の人気作、エンジニアから転身
-
7
NVIDIAやMicrosoftなど30社超、オープンAIの防御ツール共同開発の「Open Secure AI Alliance」設立
-
8
「あ、その情報メモしたい!」を叶えるワイヤレスイヤフォン、Nothing「Ear (3a)」
-
9
有識者はGoogleやX、Meta、ドワンゴを名指しで批判……総務省、偽広告や誹謗中傷に発信・拡散前の対策求める
-
10
暑さ対策が熱い! 「猛暑対策展」で感じた、転んでもただでは起き上がらない日本人のエネルギー
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR