今まで mastodon インスタンス toycode -- Mastodon を の OVHとうい会社のVPS で運営してきましたが、結構ディスクをやメモリを食うので、自宅サーバーに引っ越すことにしました。
事前準備(VPS側)
- 自宅サーバーに ubuntu16.04 と Docker, docker-compose 等の必要なソフトをインストールしました。
- VPS から 自宅サーバに切り替えた時に DNS の変更が早く反映されるように TTL を 60 にしました、また VPS のホストを切替後も参照できるように old という名前を追加しました。DNS は Amazon Route 53 を使っているので、比較的作業は簡単でした。
事前準備(自宅側)
- 自宅サーバーに docker をインストールしました。
- ダウンタイムを短くするために、 VPS で mastodon.toycode.com を動かしたまま rsync でディレクトリごとコピーしました。30分以上 かかりました。一部パーミッション等でエラーがでますが、後でもう一度 rsync するので無視して続けました。
- 自宅サーバーで docker-compose pull でイメージを取得しておきました。
- 自宅のルーター(NVR500)で静的IPマスカレードの設定をしました。
- NVR500で
dns static a mastodon.toycode.com 192.168.100.200 ttl=120
と入力し、自宅内からアクセスした時はLANのアドレスを返すようにしました。
停止
- 僕以外、ほとんど使っている人はいないと思いますが、一応「止めますよ」と toot してから5分ほど待って docker-compose down でインスタンスを止めました。
- インスタンスを停止したので、Amazon Route 53 で DNS のレコードを編集して、 mastodon.toycode.com が自宅を指すようにしました。
データの移行完了と起動
VPS 側で、パーミッション等の設定をした後、もう一度 rsync で残りのデータをコピーしました、事前に殆どのデータをコピーしていたので、*(1分以内** でコピーが終わりました。
docker-compose up -d
で起動し、自宅内のパソコンと(LAN内)、WiFiを切った状態のスマートフォン(外からのアクセス)で動作しているのを確認しました。