Discourse のセルフホスト環境をある VPS から別の VPS へ移行した最近の経験を共有します。これは、Discourse の開発者や管理者コミュニティへの「ありがとう」の気持ちの表れでもあります。この移行では、LetsEncrypt の SSL およびメール設定もそのまま維持されます。
元のインストール環境は、Google Cloud Platform (GCP) の g1-small インスタンスタイプ(1 vCPU、1.7 GB RAM)で、公式ガイド(INSTALL-cloud.md)に従い、tests-passed ブランチを追って構築されました。
新しいインストール環境は、Evolution Host の「Developer」タイプ KVM VPS(2 CPU コア、2 GB RAM、40 GB SSD、再構築時間 7 分 23 秒、月額 10 ユーロ)です。Ubuntu Server 18.04.4 minimal がインストールされており、1GB のスワップ領域(おそらくテンプレートに基づいたもの)が用意されています。
ホストに追加のソフトウェアがインストールされている場合は、ウェブサーバーなど不要なソフトウェアを必ず削除し、ホストのセキュリティを強化してください(デフォルトのユーザー名、パスワード、sshd 設定など)。
以下は、root 権限で実行されたターミナルコマンドの一覧です。インストール固有のデータは削除済みですので、大文字で示された部分は各自の環境に合わせて置き換えてください。修正点やご質問があれば、コメントをお寄せください!
新しいホストの準備
apt update && apt -y dist-upgrade
apt install -y byobu mosh htop iotop hugepages curl git && byobu-enable
hugeadm --thp-never
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile swap swap auto 0 0' | tee -a /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
git clone https://github.com/discourse/discourse_docker.git /var/discourse
reboot
古いホストの準備と Discourse ファイルのバックアップ
cd /var/discourse
./launcher rebuild app
./launcher enter app
discourse backup
exit
(Discourse のバックアップファイル名を確認してください)
cp -v containers/app.yml ~
cd shared/standalone
cp -v settings.yml ~
tar cvf ~/ssl.tar ssl
tar cvf ~/letsencrypt.tar letsencrypt
cd ~
scp -C ssl.tar letsencrypt.tar app.yml settings.yml USERNAME@NEW-HOST-IP:~
scp /var/discourse/shared/standalone/backups/default/YOUR-DISCOURSE-BACKUP.tar.gz USERNAME@NEW-HOST-IP:~
exit
新しいホストでの Discourse 復元
(上記 scp でコピーしたファイルを root ユーザーのホームディレクトリに移動させてください)
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
cd /var/discourse
cp -v ~/app.yml containers
mkdir -v shared/standalone
cd shared/standalone
cp -v ~/settings.yml .
tar xvf ~/ssl.tar
tar xvf ~/letsencrypt.tar
cd /var/discourse
./discourse-setup
(discourse-setup はエラーなく完了し、関連する設定情報を確認できるはずです)
mkdir -v shared/standalone/backups/default
cp -v ~/YOUR-DISCOURSE-BACKUP.tar.gz shared/standalone/backups/default
./launcher enter app
discourse enable_restore
discourse restore YOUR-DISCOURSE-BACKUP.tar.gz
discourse disable_restore
ローカルマシンからのテスト
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
https://YOUR-DISCOURSE-FQHN/admin/email にアクセスしてください。
ページ下部でメール送信テスト用のメールアドレスを入力し、Discourse サイト内を閲覧して正常に動作していることを確認してください。
すべてが正常に動作していることが確認できたら、YOUR-DISCOURSE-FQHN の DNS A レコードを新しいホストの IP アドレスを指すように変更してください。