この記事は最終更新から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、情報がなさすぎて、調べようにも、欲しい情報が見つからないのが辛いですね……。