Misskey サーバを移管する(Vultr → KAGOYA CLOUD VPS)

こんにちは。
株式会社アドグローブ ソリューション第一事業部の徳村です。

今回は、以前作成した Misskey サーバのディスク容量が心許なくなってきたので、
大容量を低価格で利用できる KAGOYA CLOUD VPS に移管しました。

初回作成時の記事はこちら。
この内容を前提に進みますので、ご了承ください。

blog.adglobe.co.jp

Vultr はドル払いなので、円安の影響を強く感じました。つらい。
日本を応援しましょう。

構成

  • Misskey

    バージョン 2023.11.1(作業時の最新版)
    移行対象のサーバは、 VPS で個人用 Misskey サーバを構築する で Vultr に建てたもの。

  • VPS

    大容量を低価格で利用できる KAGOYA CLOUD VPS を選択しました。

    スペックを上げすぎずに大容量を選択できるのが嬉しいポイント。
    また、利用料金が日割りなため、気軽に利用し易いです。

    項目 内容
    OS Ubuntu 22.04 LTS
    CPU 2 コア
    メモリ 2 GB
    ディスク 200GB
  • Domain / DNS

    Cloudflare Registrar で引き続き管理します。

  • Object Storage

    Cloudflare R2 を引き続き利用します。

手順

カゴヤ・クラウド VPS アカウント登録申請

アカウント登録が完了し、利用を開始できるようになるまで少し時間が掛かるため、予め申請しておくと良いでしょう。

KAGOYA CLOUD VPS より、申し込みを行います。
利用出来る状態になると、登録したメールアドレスに通知が届きます。

移管元サーバの停止

移管元の misskey サーバに接続します。

ssh misskey

プロセスを停止します。

sudo systemctl stop <hostname>

移管元データベースからバックアップを取得

postgres ユーザに切り替えます。

sudo su - postgres

Cloudflare R2 でバックアップの設定 にて作成したバックアップスクリプトを実行し、最新のバックアップを生成します。

bash ./backup-psql-all.sh

生成したバックアップを、R2 からローカルにダウンロードします。

圧縮 dump ファイルのダウンロード

KAGOYA CLOUD VPS インスタンスを作成

KAGOYA CLOUD VPS コントロールパネルにログインし、インスタンス作成 を選択します。

画面に従い、以下の内容でインスタンスを作成します。

項目 内容
パッケージ OS テンプレート Ubuntu 22.04 LTS
アプリケーションセットアップ (なし)
スペック 大容量 2 コア / 2 GB 200GB SSD
ログイン用認証キー ログイン用認証キー追加 から新規作成)
virtio ON
セキュリティグループ (なし)
ネットワーク (なし)
コンソールログインパスワード (任意のパスワード)
ユーザーデータ (なし)
インスタンス名 (任意の名称)

途中 ログイン用認証キー を作成すると、生成された key ファイルのダウンロードウィンドウが開きます。
忘れずにローカルの .ssh ディレクトリ以下に保存してください。

ログイン用認証キー追加

入力が完了したら、インスタンス作成 を押下します。
緑の電源ボタンが表示され、稼働状態になれば、インスタンス作成は完了です。

作成したインスタンスに接続するための SSH 設定を、.ssh/config ファイルに追記しておきます。

Host kagoya-mi
    User root
    Hostname <インスタンスIP>
    IdentityFile ~/.ssh/<生成されたログイン用認証キー>

DNS レコードの変更

Cloudflare で DNS レコードの向き先を変更します。

ドメイン登録 > ドメイン管理 > (該当ドメイン) > 管理 から、
クイックアクション > DNS の設定を更新する を選択し、DNS レコード画面を開きます。

KAGOYA Cloud VPS インスタンスの詳細画面から対象の IP を確認し、
該当サブドメインのレコードをタイプ A / AAAA それぞれ変更します。

タイプ 名前 アドレス
A (サブドメイン) (インスタンス詳細画面 IP 左側の IPv4 アドレス)
AAAA (サブドメイン) (インスタンス詳細画面 IP 右側の IPv6 アドレス)

Misskey サーバのインストール

移行前と同様、Misskey install shell script を実行して、 Misskey をインストールしていきます。

サーバに接続します。

ssh kagoya-mi

環境を最新にします。

sudo apt update; sudo apt full-upgrade -y; sudo reboot

再起動後、再度サーバに接続します。

ssh kagoya-mi

インストールスクリプトを実行します。
postgres 関連の設定は、移行前と同様になるよう注意してください。

wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh

Misskey を一旦停止します。

sudo systemctl stop <hostname>

データベースの復元

ローカルから、DL しておいたバックアップ圧縮ファイルをインスタンスに転送します。

scp -i ~/.ssh/<ログイン用認証キー> Downloads/<バックアップ .tar.gz ファイル> root@kagoya-mi:~/

サーバ上で、転送されたバックアップ圧縮ファイルを解凍します。

tar -zxvf <バックアップ .tar.gz ファイル>

バックアップファイルを postgres ディレクトリ下に移動します。

mv ./dumpall_psql.dmp /var/lib/postgresql/

不要になった圧縮ファイルを削除します。

rm -rf dumpall_psql*

postgres ユーザに切り替えます。

sudo su - postgres

自動生成されたデータベースを削除します。

dropdb mk1

postgres のリストアを実行します。

psql -U postgres -f ./dumpall_psql.dmp

元のデータベースが復元されていることを確認します。

psql -U postgres -d mk1

不要になったバックアップファイルを削除します。

rm -rf dumpall_psql.dmp

Misskey サーバの起動

Misskey を起動します。

ssh kagoya-mi
sudo systemctl start <hostname>

問題なくアクセスできることを確認します。

https://<hostname>

ついでに、アップデートスクリプトを DL しておくと良いでしょう。

wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh

自動バックアップの再設定

初回構築時と同様の手順で、自動バックアップの設定を行ってください。

初回構築時と再設定時の違いとして、
API の Access/Secret Key は再表示できないので、API トークン管理画面で ロール を選択し、再生成します。

R2 API トークンメニュー

また、デフォルトでは awscli が入っていないので、root ユーザでインストールしておきます。

apt install awscli

なお、KAGOYA CLOUD VPS のインスタンスはデフォルトで JST がタイムゾーンとして設定されています。
このため、タイムゾーンの変更や時差の考慮などは必要ありません。

移管元 VPS の削除

最後に、移管元の VPS を忘れずに削除しましょう。
お疲れ様でした。

stash

あとがき

失うものがなかった初回構築時とは異なり、1ヶ月で築いたノートとカスタム絵文字を背負っていたため、移行の実施中はとても緊張しました。
が、私の心配とは裏腹に、あっさりと移行は成功したので本当に良かったです。

Misskey はデータベースさえ飛ばさなければどうとでもなる、と最大手サーバーの運営者も語っていますので、改めてバックアップはしっかり取っておこうと思いました。

blog.arkjp.net

2ヶ月ほどサーバを運用していますが、投稿がどんどん蓄積されていく性質上、どうしてもデータベースは肥大化していくので、ディスク容量はできるだけ大きくしておきたいなと感じました。

以下の Issue で軽減されないかなぁとこっそり期待してます。

github.com

参考


アドグローブでは、さまざまなポジションで一緒に働く仲間を募集しています!
詳細については下記からご確認ください。みなさまからのご応募お待ちしております。

採用情報