Calckey v13.1.4.1 → Firefish 1.0.xにアップデートした時のメモ。
基本的には公式ドキュメントを見ればOKだけど、日本語で書き残しておく。

注意)個人用のメモのため間違っているところがあれば連絡先までご指摘ください。
また、実行前に公式ドキュメントを確認の上、実行方法に差分がないこと、DBのバックアップを行ったうえでアップデートを実施してください。

環境

OS: Ubuntu 22.04 LTS
CPU: Intel Xeon
RAM: 8GB
実行種別: systemd

ソースコードに改変を入れていない前提だけど改変しているならばマージ、コンフリクトの解決をする。

1. gitのリモートURLの更新

Calckeyのレポジトリに移動しておく。

originの部分は必要に応じて変更すること(リポジトリをフォークしていなければ特に気になくてOK)

git remote set-url origin https://git.joinfirefish.org/firefish/firefish.git

2. 最新のコードを取得

git pull -ff

コンフリクトが発生したら必要に応じてファイルを削除 or 変更を取り消す or 一時退避する

3. node.jsのアップデート

n というバージョン管理ツールを使うと楽。
スーパーユーザで以下のコマンドを実行しバージョン管理ツールをインストール。

npm install -g n

v20.4.0(latest)が推奨されているので

n 20.4.0

でインストールする。
続いて、使用するバージョンを選択するためにスーパーユーザで

n

を実行すると

o node/20.4.0

などと表示されるので、上下矢印キーで o の位置を node/20.4.0 になるようにしてEnterキーを押下する。
その後、そのままスーパーユーザで

corepack enable

を実行。

4. Rustのインストール

Calckey (firefish)実行ユーザに切り替えて、Rustをインストールする。
基本的には公式ドキュメントの通り。

su - <Calckey/Firefish 実行ユーザ>

でユーザを切り替えて、

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

を実行。

5. 設定ファイルの更新

<レポジトリへのパス>/.config/default.yml

をFirefish向けの設定ファイルに書き換える。

https://git.joinfirefish.org/firefish/firefish/-/blob/main/.config/example.yml

を参考に書き換える。
基本的には

# 公開時のURL
url: https://example.com/ 

# 実行時のポート
port: 3000

# PostgreSQLの設定
db:
  host: localhost
  port: 5432
  #ssl: false
  # Database name
  db: firefish

  # DB認証情報
  user: example-firefish-user
  pass: example-firefish-pass

# Redisの設定
redis:
  host: localhost
  port: 6379
  #tls:
  #  host: localhost
  #  rejectUnauthorized: false
  #family: 0  # 0=Both, 4=IPv4, 6=IPv6
  #pass: example-pass
  #prefix: example-prefix
  #db: 1
  #user: default

# 予約済みユーザ名の指定
reservedUsernames: [
  'root',
  'admin',
  'administrator',
  'me',
  'system'
]

を書いておけばOKですが、環境によって変更すること。

6. パッケージの更新 / ビルド

設定ファイルを変更後、

pnpm i

でライブラリなどの更新を行う。
その後、Firefishのビルドを行う。

NODE_ENV=production pnpm run buld

※スペックにもよるが、2~5分ほど時間がかかる。

7. DBのマイグレーション

.config/default.yml で DragonflyDBをはじめとした cacheServer を設定していない場合はキャッシュにアンテナの情報をコピーしないように ANTENNA_MIGRATION_SKIP=true をつけてマイグレーションする。

NODE_ENV=production ANTENNA_MIGRATION_SKIP=true pnpm run migrate

DragonflyDBの構築、cacheServer を設定した場合は

NODE_ENV=production pnpm run migrate

を実行する。

8. サービスの再起動

あとはスーパーユーザに戻りサービスの再起動をする。

systemctl restart <サービス名>

再起動後サイトにアクセスし、必要に応じて「設定」→「キャッシュのクリア」でアップデート完了。

謎なこと

開発機としてAMD CPU (Ryzen 5600X)マシンを持っているのですが、DragonflyDBをDockerで建てようとしたところExit 132で動作せず...

同じ方法でIntel CPUマシンで実行したところ普通に動いたので、AMD CPUだとサポートしていない?(まだ調べていないので謎)

Calckey → Firefish アップデートメモ