Misskey v13アプデでつまずいたところメモ

この記事は最終更新から1年以上経過しています。

みすきーねこづき(Misskey自鯖)を v12系からv13系にアプデする際にめちゃくちゃハマり倒したので、メモ書きです。
参考にならないと思いますが、参考にどうぞ。

環境

  • AWS EC2 / Ubuntu Arm64 / t4g.medium (テスト環境は t4g.small )
  • 公式のInstall Shell Scriptを使わず、こちらの記事を参考に手動で構築
  • Repo: AyumuNekozuki/misskey
  • branch: v12.119.2-nekozuki -> v13.x-nekozuki へアプデ

TL;DR

# misskeyを止める
$ sudo systemctl stop misskey

# node v18系へアプデ (nで管理します)
$ sudo npm install -g n
$ sudo n lts
$ hash -r

# postgresql 15へアプデ
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

$ sudo apt update
$ sudo apt -y install postgresql-15

$ sudo pg_dropcluster 15 main --stop
$ sudo pg_upgradecluster 13 main 
$ sudo pg_dropcluster 13 main

# pnpm のインストール
$ sudo npm install -g pnpm

# ユーザー misskey へ切り替え & 移動
$ sudo -iu misskey
$ cd misskey/

# git pull
$ git pull
$ git checkout v13.x-nekozuki
$ git pull
$ git submodule update --init;

# 構築開始
$ pnpm run clean

$ NODE_ENV=production pnpm install --frozen-lockfile
=> ErrorMemo 01(後術)

$ NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=production pnpm run build
=> ErrorMemo 02(後術)

$ NODE_OPTIONS=--max_old_space_size=3072 pnpm run migrate
=> ErrorMemo 03(後術)

$ exit

# 再起動
$ sudo apt update -y
$ sudo apt full-upgrade -y
$ sudo reboot

# systemctlの設定ができていれば再起動で自動的にMisskeyが起動しているはず

# そういえばリリースノートに書いてあったけどやってなかったから後からやった(これは一体なんなんだろう)
$ sudo corepack enable

躓いたところ

ErrorMemo 01: pnpm install でコケる

本番時には発生しなかったんですが、規模を縮小したテスト環境で事前に試した時に、pnpm installが最後まで回らずに途中でコケました。(途中で Killed が表示されて処理が止まっちゃう)
原因はいまいちわからなかったんですが、おそらく環境が小さいとコケるっぽい?ラズパイでMisskey構築してる人たちどうするんだ……。

そもそもpnpm自体、npmやyarnと比べると圧倒的に文献が少なく、原因とかを調べるのにもものすごく苦労しました……。というか、yarn-error.logみたいにコケた時ログ出してくれるとありがたいんですけどねpnpmくん……。

ErrorMemo 02: xxx not found. でコケる

多分01の影響です。
僕の場合は、

packages/backend
 - tsc not found
 - tsc-alias not found 
packages/frontend
 - vite not found

が発生。
それぞれ、

$ cd packages/backend/ 
$ pnpm install tsc 
$ pnpm install tsc-alias

$ cd ../frontend/
$ pnpm install vite

で事を納めました。

ErrorMemo 03: module not found でコケる

多分01の影響&02と同様の事態です。
僕の場合、re2 がないよ!って怒られたので、プロジェクトのルートで、

$ pnpm install re2 -w

で事を納めました。-w がついているのは、プロジェクトのルートだからです。ない状態で叩くと、ルートでやるならオプションつけろよオラァって怒られます。

おわりに

pnpm、情報がなさすぎて、調べようにも、欲しい情報が見つからないのが辛いですね……。

記事をシェアする
記事を書いた人ねこづきあゆむ
Webエンジニア。Misskeyサーバー「みすほわいと」の管理人。
このブログでは、適当に日々の思いつきを書き連ねています。