マストドンサーバー(インスタンス)引っ越し 詳細版
サーバー(インスタンス)引っ越し詳細版
また数年後やるかも知れないので自分用にメモっておこう。
前提
引越し元 | 引越し先 | |
---|---|---|
プラン名 | Digital Ocean BASIC Plan | conoHa VPS |
OS | Ubuntu16 | Ubuntu22 |
料金 | $6/mo | ¥540/mo |
vCPU(Core) | 1 | 3 |
Mem | 1G | 2G |
SSD | 25G | 100G |
手順
下準備
旧で行う作業
- 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 を使うのはどうかって話はスルー