firefish/docs/migrate_back.md

220 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# このフォークから本家版に移行する
移行には時間が掛かるので、必ずまとまった時間が取れるときに行ってください。
## サーバーに Firefish を直接インストールしている場合
1. サーバーのバックアップを取る
2. サーバーを停止する
```bash
sudo systemctl stop firefish
```
3. Firefish がインストールされているディレクトリ (e.g., `/home/firefish/firefish`) へ移動する
```bash
cd /home/firefish/firefish
```
4. 最新版にアップデートする
```bash
./update.sh
```
5. `.config/default.yml` に書かれているデータベースの名前を確認する(以下の例では `firefish_db`
```yaml
db:
host: localhost
port: 5432
db: firefish_db # これ
```
6. 次のコマンドでデータベースをいじる前に、そのコマンドが正常に動作するか確認する(`firefish_db` の部分は自分のデータベース名に変更する)
```bash
printf 'BEGIN;\n%s\nROLLBACK;' "$(cat neko/revert.sql)" | sudo -u postgres psql --echo-all --set='ON_ERROR_STOP=1' --dbname=firefish_db
```
これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)。
最後の行が `ROLLBACK` で終わっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
7. このフォークで加えられたデータベースへの変更を実際に取り消す(`firefish_db` の部分は自分のデータベース名に変更する)
```bash
sudo -u postgres psql --file=neko/revert.sql --dbname=firefish_db
```
これにも非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。
8. PGroonga をアンインストールする
コマンドの例
```bash
sudo apt purge --remove postgresql-16-pgdg-pgroonga
sudo add-apt-repository --remove ppa:groonga/ppa
sudo apt-key del ACCC4CF8
sudo apt update
```
9. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く
```bash
cd ..
```
10. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える
```bash
mv firefish firefish.old
```
11. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する
```bash
git clone https://git.joinfirefish.org/firefish/firefish.git firefish
```
12. 必要なファイルをコピーする
```bash
rm -rf firefish/files firefish/custom firefish/.config
cp -r firefish.old/files firefish
cp -r firefish.old/custom firefish
cp -r firefish.old/.config firefish
```
13. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入り、`develop` ブランチに行く(実際には既に `develop` にいるはず)
```bash
cd firefish
git checkout develop
```
14. Firefish をビルドする
```bash
corepack prepare pnpm@latest --activate
pnpm install
NODE_ENV=production pnpm run build
pnpm run migrate
```
15. サーバーを起動して動作を確認する
```bash
sudo systemctl start firefish
```
16. 元々 Firefish がインストールされていたディレクトリを削除する
```bash
cd ..
rm -rf firefish.old
```
## コンテナで Firefish を動かしている場合
Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` をそれぞれ `docker`, `docker-compose`, `--docker` に読み替えてください。
1. サーバーのバックアップを取る
2. Firefish がインストールされているディレクトリ (e.g., `/home/firefish/firefish`) へ移動する
```bash
cd /home/firefish/firefish
```
3. 最新版にアップデートする
```bash
./update.sh --podman
```
4. 一度サーバーを再起動し、自分のサーバーが起動したことを Web から確認したら再度停止してデータベースのコンテナのみを起動する
```bash
podman-compose down
podman-compose up --detach
# 少し待って、サーバーが起動したことを確認する
podman-compose down
podman-compose up db --detach
```
5. `.config/docker.env` に書かれているユーザー名とデータベース名を確認する(以下の例では `firefish_db`
```env
# db settings
POSTGRES_PASSWORD=very_strong_password
POSTGRES_USER=firefish # これがユーザー名
POSTGRES_DB=firefish_db # これがデータベース名
```
6. 次のコマンドでデータベースをいじる前に、そのコマンドが正常に動作するか確認する(`firefish` と `firefish_db` の部分は自分のユーザー名とデータベース名に変更する)
```bash
podman-compose exec db psql --user=firefish --dbname=firefish_db --echo-all --set='ON_ERROR_STOP=1' --command="$(printf 'BEGIN;\n%s\nROLLBACK;' "$(cat neko/revert.sql)")"
```
これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)。
最後の行が `ROLLBACK` で終わっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
7. このフォークで加えられたデータベースへの変更を実際に取り消す(`firefish_db` の部分は自分のデータベース名に変更する)
```bash
podman-compose exec db psql --user=firefish --dbname=firefish_db --command="$(cat neko/revert.sql)"
```
これにも非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。
8. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く
```bash
cd ..
```
9. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える
```bash
mv firefish firefish.old
```
10. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する
```bash
git clone https://git.joinfirefish.org/firefish/firefish.git firefish
```
11. 必要なファイルをコピーする
```bash
rm -rf firefish/files firefish/custom firefish/.config
cp -r firefish.old/files firefish
cp -r firefish.old/custom firefish
cp -r firefish.old/.config firefish
```
12. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入る
```bash
cd firefish
```
13. サーバーを起動して動作を確認する
```bash
podman-compose up --detach
```
`docker-compose.yml` にカスタムが必要な場合には、各自で編集してください。
14. 元々 Firefish がインストールされていたディレクトリを削除する
```bash
cd ..
rm -rf firefish.old
```