kmyblue引っ越してみたメモ(2024年2月)

作成 更新

#雑録 #Fediverse #kmyblue #メモ

初出: わーさんのFediverse雑記 チラシ裏 Post No.9(2024-02-25)。kmyblue(Mastodon 系)を別の VPS へ移した最初の記録。2026 年 9 月の式年遷宮でもこの型(.env.production を写して DB を戻す)は同じで、feeds build 忘れの前科はそのとき手順に組み込まれた → 式年遷宮の手順メモ

kmyblue引っ越してみたメモ

例によって長いので、畳みます。

後ほど、先達さんも記事を上げてくれるらしいです、楽しみ。

#わーさんがやってみた

kmyblueサーバー移行 やったこと

  • 新鯖にkmyblueを新規インストール(参照0)して、mastodon:setup開始直前まで進める(mastodon:setupは行わない、データベースユーザーmastodonのパスワードは念のため旧鯖にそろえる)
  • 旧鯖止める(参照1)
  • .env.productionを移行(live下隠しファイル)
  • バックアップするべき容量を減らす(参照2)
  • Postgresのダンプとロードを行う(参照3)
  • 旧鯖のローカルファイルを圧縮、新鯖に持って行って解凍(参照4)
  • RAILS_ENV=production bundle exec rails assets:precompile を実行し、Mastodon をコンパイル
  • 各ユーザーのホームタイムラインを再構築するために RAILS_ENV=production ./bin/tootctl feeds build を実行(しなかったので、タイムライン消えまくりw)
  • 新しいサーバーでマストドンを起動
  • DNS 設定を更新
  • Nginxの設定を更新またはコピーし、必要に応じてLetsEncryptを再実行(参照0に則って新規設定し直ししたが、参照5を試しても良かった)

参照0

https://github.com/kmycode/mastodon/wiki/Installation

参照1

sudo systemctl stop mastodon-{web,sidekiq,streaming}

参照2

# どのファイルが容量を食っているのか算出
RAILS_ENV=production bundle exec bin/tootctl media usage

# 過去の投稿を削除。日数は適宜調整
RAILS_ENV=production bundle exec bin/tootctl status remove --days=90

# プレビューカードを削除。日数は適宜調整
RAILS_ENV=production bundle exec bin/tootctl preview_cards remove --days=180

# リモートメディアを削除
RAILS_ENV=production bundle exec bin/tootctl media remove --days=0

# 孤立メディアを削除
RAILS_ENV=production bundle exec bin/tootctl media remove-orphans

参照3

mastodon:setup を実行する代わりに、template0 データベースを使用して空の Postgres データベースを作成 。

(これは Postgres のダンプをリストアするときに便利だそう。pg_dump のドキュメントに記載)

古いシステムの mastodon ユーザーで以下を実行。

pg_dump -Fc mastodon_production -f backup.dump

rsync または scp を使って backup.dump ファイルをコピー。

次に、新しいシステムで mastodon ユーザで空のデータベースを作成。

createdb -T template0 mastodon_production

そして、コピーしたバックアップをインポート。

(念のため、旧鯖と同じ位置にインポート、ユーザー権限やパーミッションもそろえておく)

chown --recursive mastodon: /home/mastodon/backup.dump
chmod 664 /home/mastodon/backup.dump
pg_restore -Fc -U mastodon -n public --no-owner --role=mastodon \
  -d mastodon_production backup.dump

(新しいサーバでユーザ名が mastodon でない場合、上記の -U と --role の値を変更する必要があることに注意。なお、2つのサーバ間でユーザ名が異なっていても問題ない模様)

参照4

旧鯖にて

tar czf systemfiles.tar.gz /home/mastodon/live/public/system

これが作業ユーザーに入ったら新鯖に持っていく

解凍は(必要に応じてsudo入れつつ)

tar -xvf systemfiles.tar.gz

すると作業ユーザーの下に新たにhomeから増えたので、以下で持っていく(指定なければ作業ディレクトリ内の解凍らしいので、移動前パスは適宜探してください)

sudo mv /home/(ユーザ名)/home/mastodon/live/public/system /home/mastodon/live/public/.

参照5

Let's Encrypt SSL証明書の再発行

移行先サーバにて、 Let's Encrypt SSL証明書の再発行を行う。

sudo certbot certonly --standalone -d yourdomain.tld

(SSL証明書そのものをコピーしてこればいい説もあるが。。。)

Nginx の起動

↓ 一般ユーザ作業

# SSL証明書が正しく取得・インストールされていれば、問題なく立ち上がる
sudo systemctl start nginx
sudo systemctl start mastodon-{web,sidekiq,streaming}

参考サイト

後で発見したサイト


その後(2026-09 追記): 2026 年 9 月の式年遷宮では、メディアを先に Cloudflare R2 へ逃がしてあったので「参照4」のローカルファイル運びが丸ごと不要になり、運ぶのは DB ダンプと .env.production だけになった。feeds build は手順に最初から入れてある。