サーバー(インスタンス)引っ越し詳細版
また数年後やるかも知れないので自分用にメモっておこう。

前提

引越し元引越し先
プラン名Digital Ocean BASIC PlanconoHa VPS
OSUbuntu16Ubuntu22
料金$6/mo¥540/mo
vCPU(Core)13
Mem1G2G
SSD25G100G

手順

下準備

旧で行う作業

  • cron停止(rake系コマンド)
  • コンテナ停止(docker-compose stop)
  • /etc/letsencryptをtar.z
    • 新環境で立ち上げる時に楽にしたいので
  • 念の為postgresのバックアップ(幸いにも今回は使用しませんでした)
    • cd mastodon; sudo tar cfz ../pg.tar.z postgres
  • postgresのownerが70(誰?)になってて面倒なので。
    • sudo chown username:username -R postgres
    • 本当はまずいんだとは思うけど、影響は出ていない。※1
  • sudo cp /etc/nginx/conf.d/ssl.conf .
    • このssl.confをローカルPCに保存

新で行う作業

  • sudo apt update; sudo apt upgrade -y
  • sudo adduser username
  • sudo apt install nginx certbot curl
  • install docker 参考→ https://github.com/djanzu/mini-tools
    • curl https://raw.githubusercontent.com/djanzu/mini-tools/master/install-docker.sh | sh
  • 旧サーバーのマストドンのファイルをディレクトリごとリモートコピー
    • rsync -a -v old-server:/home/username/mastodon .
  • 旧で作ったpem.tar.zを解凍 tar xfz
  • ssl.conf をローカルPCから新へscp
  • ssl.confで証明書を参照しているパスを 一時的に/etc/lets.. → /home/username/etc/lets.. へ
    • vi ssl.conf
  • sudo cp ssl.conf /etc/nginx/conf.d
  • テスト sudo nginx -t
  • OKだったら sudo service nginx restart
  • docker-compose up ログが見たいので-dしない
  • 別窓からsshし、curl -H 'Host:your-cool-domain' --resolve 'your-cool-domain:443:127.0.0.1' https://your-cool-domain
    • ちゃんと出ていたらOK
  • ドメインのAレコード書き換える
    • 30分ほど待つ
    • 待っている間に
    • sudo ufw add 80;sudo ufw add 443
  • let’s encrypt
    • sudo certbot certonly --webroot -w /tmp -d ドメイン名 ※2
    • Congratsが出たら、ssl.confの証明書のパスを正しいものに書き換えてnginx再起動
    • sudo vi /etc/nginx/conf.d/ssl.conf
    • sudo service nginx restart
  • 全部うまく行っているようであれば、ctl-cでdocker-compose止めて、-d付けてあとは放置。

付録

  • ssl.conf ※2
(後で貼り付けます)

独り言

  • 古いコンテナを消してから数時間経ったら mackerel からアラートが来た。
    確かコンテナを消す前に正しい手順でエージェントの削除をしないと後々大変だった気がするけど、
    どうせ自分しか使わないサーバーだし、ってことでmackerel上で古いサーバーを退役させた。
    退役させた監視を復活させるのも大変なんですよね、確か。

最後に

本文章には責任がありません。参考程度に留めておいてください。
この手順通りやって動かないとか何か損害が発生しても当方は責任を追いません。

※1 動けばオッケー あるあるだよね
※2 acmeに/tmp を使うのはどうかって話はスルー