はじめに
Blueskyのself-hosting PDS (Personal Data Server)を別サーバーへ移設する方法をこのページに書きます。ただし、この方法ではダウンタイムがあります。また、公式の手順ではなく、内容を保証できません。
以降では、移設前のサーバーを旧サーバー、移設後のサーバーを新サーバーと記載します。
環境は以下の通りです。
- Ubuntu 22.04.4 LTS
- PDS 9126d65
要約
旧サーバーの/pdsを新サーバーへ転送します。
詳細
旧サーバーでの作業
旧サーバーのpdsを止めます。この時点で旧サーバーが外部からリクエストを受け付けなくなります。
$ sudo systemctl stop pds
旧サーバーの/pdsを圧縮します。ここではtar.gzにしていますが、別形式でも構いません。
$ cd /
$ sudo tar czf pds.tar.gz pds
$ sudo chown ${USER}.${USER} pds.tar.gz
scpコマンドなどを使って圧縮ファイルpds.tar.gzを手元に転送します。新サーバーを起動済みであれば、直に新サーバーへ転送しても構いません。また、新旧サーバーでpdsが起動していない状態であれば、圧縮せずにそのまま新サーバーに転送してもよいかもしれません。
旧サーバーを止めます。
$ sudo shutdown -h now
新サーバーでの作業
新サーバー未起動であれば、新サーバーを起動します。
インストーラーinstaller.shを使って、新サーバーにpdsなどをインストールします。
$ wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh
$ sudo bash installer.sh
インストール後、新サーバーでcurl http://localhost:3000などを実行して動作確認します。
以降の作業で/pdsの中身を上書きする前に、新サーバーで一旦pdsを止めます。
$ sudo systemctl stop pds
圧縮ファイルpds.tar.gzを新サーバーに未転送であれば、新サーバーへ転送します。
新サーバーで転送したファイルを展開し、installer.shの作成したファイルを上書きします。
$ cd /
$ sudo tar xf pds.tar.gz
新サーバーでsqliteファイルなどを参照して、ファイルが上書きされたことを確認します。例えば、以下の操作により、PDSに属するアカウント情報が出力されるはずです。
$ sudo sqlite3 /pds/account.sqlite
SQLite version 3.37.2 2022-01-06 13:25:41
Enter ".help" for usage hints.
sqlite> select * from account;
上書き確認ができたら、新サーバーで改めてpdsを起動します。
$ sudo systemctl start pds
新サーバーで動作確認をします。
$ curl http://localhost:3000