3 minutes
Firefish 鳩類王国のメンテナンス作業
- 2024/07現在
- Google Compute Engine (Ubuntu 22.04.4 LTS)
- Firefish (Calckeyからの移行)
定期的に実施する作業
- 普段は
e2-smallで動作させているが、諸々作業中のみe2-mediumに変更して作業 - 各種セキュリティアップデートなどは発生タイミングで適宜 (ググりながら) 実施
パッケージのアップデート
sudo apt update && sudo apt upgrade
- 少なくとも1週間に1回は実施
- コマンド実行時、なんらか言ってそうな文言が見えたら適宜 (ググりながら) 処理
古いデータの削除
psql -h 127.0.0.1 -U yourpsqlusername -d yourdb
DELETE FROM
note
WHERE
"createdAt" < 'YYYY-MM-DD 00:00:00.000 +0900'
AND "renoteCount" = 0
AND "repliesCount" = 0
AND "reactions" = '{}'
AND "userHost" IS NOT NULL
;
- だいたい1ヶ月に1回くらい実施
- 以下の条件すべてを満たすノート
noteを削除するSQLYYYY-MM-DDより昔 (任意の日付に置き換える)- RN/BTされていない
- リプライがない
- リアクションがついてない
- 連合先のノート
- 実行するとそこそこ時間がかかる
Firefishのアップデート
- セキュリティアップデートがある場合はなるべく早く、そうでない場合はよきタイミングで実施
- Firefishの
notice-for-admins.mdを確認して、実施すべき作業の発生を確認する- なにか発生している場合はドキュメントに実施すべきタイミングなど記載があるので、下記に記載のコマンドの中でよしなに実行する
docs/notice-for-admins.md · main · firefish / firefish · GitLab
- 下記コマンドを上から順に実行
- 現時点のコマンドを記載しているが、ここは公式ドキュメントを参照することを強く推奨
# user administrator
sudo systemctl stop firefifh.service
# user firefish
cd yourdir/
git checkout -- packages/backend/assets
git pull --ff origin main
corepack prepare pnpm@latest --activate
pnpm install --frozen-lockfile
NODE_ENV='production' NODE_OPTIONS='--max_old_space_size=3072' pnpm run rebuild
pnpm run migrate
# user administrator
sudo systemctl start firefifh.service
バックアップ設定
postgresql
- やっていること
- 1日1回
pg_dumpallを実行する - 実行結果を Google Cloud Storage にアップロードする
- バックアップは5世代 (5日分) を保持
- そんなとっておく必要あるか? という疑問はなくもない
- 1日1回
- 詳細は以前まとめたサーバー構築記事の「DBバックアップ」の項を参照
CalckeyのサーバーをGCP上に立てた話 + 運用してみた感想
Compute Engine (GCE) ディスクのスナップショット作成
- Goodle Cloud Platform の設定まわりは変わることがあるので都度ググるのを推奨
- スケジュールは組んでいるが、不安な作業を実施するときに都度手動で取得するくらいでいいのでは? と思っている
定期的に取得する場合
- Compute Engine > (左メニュー「ストレージ」配下) スナップショット > スナップショット スケジュールを作成
- 名前: なんか区別可能な任意の名前
- 説明: てきとう (なくてもいい)
- リージョン: Firefishを動かしているインスタンスのディスクがあるリージョンと同じリージョン
- リージョン: 任意のリージョン
- 困ったら上記と同じでいいと思う
- スケジュール オプション: 任意のスナップショット頻度
- 当サーバーでは下記の設定
- 毎週土曜日
- AM3:00-4:00
- 7日で自動削除
- だいたい週末の昼以降に作業をするので、週末直前のディスクスナップショットを1世代のみ所持
- 当サーバーでは下記の設定
- ○日以上経過したスナップショットを削除する
- Compute Engine > (左メニュー「ストレージ」配下) ディスク
- Firefishを動かしているインスタンスのディスクを選択 → 編集
- 「スナップショットのスケジュール」で上記のスナップショットスケジュール名を選択
単発で取得する場合
- Google Cloud Platform のWebコンソールから以下のメニューを選択
- Compute Engine > (左メニュー「ストレージ」配下) スナップショット > スナップショットを作成
- スナップショットを作成
- 名前: なんか区別可能な任意の名前
- 説明: てきとう (なくてもいい)
- スナップショットソースの種類: ディスク
- ソースディスク: Firefishを動かしているインスタンスを選択
- タイプ:
スナップショット