Mastodon
  • Mastodonの使い方
    • Signing up for an account
    • Setting up your profile
    • Posting toots
    • Using the network features
    • Dealing with unwanted content
    • Promoting yourself and others
    • Set your preferences
    • その他の設定
    • Using Mastodon externally
    • Moving or leaving accounts
  • Mastodonの構築
    • マシンの準備
    • ソースからインストール
    • 環境設定
    • オプションのインストール
      • 全文検索
      • 秘匿サービス
      • シングルサインオン
    • セットアップを完了する
    • 開発者向けコマンドラインを利用する
    • 新しいバージョンへアップグレード
    • サーバのバックアップ
    • 新しいマシンへの移行
    • サーバーのスケールアップ
    • モデレーション
    • トラブルシューティング
  • アプリケーションの開発
    • Getting started with the API
    • Playing with public data
    • Obtaining client app access
    • ログイン
    • ガイドラインとベストプラクティス
    • ライブラリ等
  • コントリビューション
    • 技術的情報
    • 開発環境のセットアップ
    • ソースコードの構造
    • ルーティング
  • スペック
    • ActivityPub
    • WebFinger
    • Security
    • Microformats
    • OAuth
  • REST API
    • OAuthスコープ
  • API一覧
    • apps
      • oauth
    • accounts
      • bookmarks
      • favourites
      • mutes
      • blocks
      • domain_blocks
      • filters
      • reports
      • follow_requests
      • endorsements
      • featured_tags
      • preferences
      • suggestions
    • statuses
      • media
      • polls
      • scheduled_statuses
      • streaming
    • timelines
      • conversations
      • lists
      • markers
    • notifications
      • push
    • search
    • instance
      • trends
      • directory
      • custom_emojis
    • admin
    • proofs
    • oembed
  • APIエンティティ
    • Account
    • Activity
    • Admin::Account
    • Admin::Report
    • Application
    • Attachment
    • Card
    • Context
    • Conversation
    • Emoji
    • Error
    • FeaturedTag
    • Field
    • Filter
    • History
    • IdentityProof
    • Instance
    • List
    • Marker
    • Mention
    • Notification
    • Poll
    • Preferences
    • PushSubscription
    • Relationship
    • Report
    • Results
    • ScheduledStatus
    • Source
    • Status
    • Tag
    • Token

新しいマシンへの移行

安全にMastodonを新しい環境に移行する。

いろいろ事情があってMastodonインスタンスを他のサーバーへ移行したいこともあるでしょう。人は時たま移行せざるを得ない状況に出会うものです。しかし、そこまで難しいものでもありません。Mastodonの移行は、ダウンタイムは発生するもののそこまで難しいものではありません。

このガイドはUbuntu環境を前提にしています。他のディストリビューションでは異なる場合があります。

概要

  1. 新しい環境で新しいMastodonを立ち上げます。インストールガイドも見てください。mastodon:setupはまだしないでください。
  2. 旧環境でMastodonのサービスを停止させてください。systemctl stop mastodon-*.service)
  3. 後述の手順に従ってPostgresデータベースをダンプしロードしてください。
  4. system/以下のファイルを旧環境から新環境へコピーしてください。(S3やその他オブジェクトストレージを使用していない場合のみ)
  5. .env.productionを旧環境から新環境へコピーしてください。
  6. RAILS_ENV=production bundle exec rails assets:precompileを実行してください。
  7. RAILS_ENV=production ./bin/tootctl feeds buildを実行してください。ホームタイムラインを再構築します。
  8. 新環境のMastodonのサービスを起動します。
  9. DNS設定を編集し新環境へアクセスできるようにします。
  10. 必要に応じてNginxのconfやLet’s Encryptの再取得をしてください。
  11. 新環境で快適なMastodonライフを!

詳細な手順

移行すべきデータ

以下はとにかく移行してください。

  • ~/live/public/system以下のファイル。ユーザーがアップロードしたメディアが全て含まれています。(S3やその他オブジェクトストレージを使用している場合は除く)
  • Postgresデータベース(pg_dumpを使用)
  • ~/live/.env.production(サーバーの設定やシークレットファイル)

必須というわけではないが、移行した方が楽になる場合があります。

  • /etc/nginx/sites-available/defaultにあるNginxのconf
  • サービス設定ファイル: /etc/systemd/system/mastodon-*.service(サーバーの調整やカスタマイズが含まれている場合があります。)
  • 使用している場合、pgBouncerの設定ファイル:/etc/pgbouncer

Postgresのダンプとロード

mastodon:setupを実行するかわりに、template_0という空のデータベースを作ります。こうすることで、Postgresのダンプが楽になります。as described in the pg_dump documentationも参照。

mastodonユーザーで以下の通りに実行してください。

pg_dump -Fc mastodon_production -f backup.dump

backup.dumpをrsyncやscpを使って新しい環境にコピーし、その新環境のmastodonユーザーで空のデータベースを作ります。

createdb -T template0 mastodon_production

そしてインポートします。

pg_restore -U mastodon -n public --no-owner --role=mastodon \
  -d mastodon_production backup.dump

(もしユーザー名がmastodonでないなら、-Uと--roleを変えてください。2つの環境間でユーザー名が異なっていても構いません。)

ファイルのコピー

おそらくかなりの時間がかかります。不要な再コピーを防ぐためにも、rsyncを使うのがおすすめです。旧環境のmastodonユーザーで、

rsync -avz ~/live/public/system/ mastodon@example.com:~/live/public/system/

と実行します。移行中に外部から何らかのファイル変更があった場合、再実行の必要があります。

.env.productionも秘匿すべき内容が含まれているためコピーしてください。

任意でNginxやsystemd、pgBouncerの設定ファイルもコピーするか、0から書き直しても構いません。

移行中は…

旧環境の~/live/public/500.htmlを編集して、移行実行中ということをユーザーに知らせるエラーメッセージを表示させておくと良いでしょう。

移行の前日までにDNSのTTLを短く(30〜60分)に設定して、すぐに新しい環境にアクセスできるようにしてください。

移行の後

whatsmydns.netなどでDNSの適用状況をチェックできます。開発環境等の/etc/hostsを編集して、新しい環境にすぐにアクセスできるようにするのも良いでしょう。

最終更新 February 12, 2020 · このページを改善する
他の言語: English

Merch

Tシャツとステッカー(英語)

Mastodonに参加しよう · ブログ · ·

ソースコード · CC BY-SA 4.0 · インプリント