Ghostのサーバー移行手順 & バックアップしておくデータまとめ

※本記事は広告を含みます

どうも、職業エンジニアです。
最近Ghostで作ったブログを移行しまくってある程度手順が確立できたので、ここに残して置こうと思います。

  • サーバー移行するときに必要なもの
  • 移行元サーバー、移行先サーバーそれぞれで実施すること

なんかが分かるように記載していきます。

諸注意!

この手順で移行を行うと、以下の情報は引継ぎできません!

  • Integrations(APIキーやサードパーティ連携)
  • Members(データ・有料会員情報)
  • Comments

このあたりの情報も復元したい場合は、データベースをバックアップする必要があります。今回の手順では対応していないので悪しからず。。

移行手順

移行元、移行先それぞれの手順です。順番通りやりましょう。

移行元サーバーで実施すること

① Ghostのデータをエクスポート

管理画面にログインし「Settings」→「Advanced」→「Export」と進みます。その中にある「Content & Settings」をクリックすると、JSON形式のデータがダウンロードできます。

Pasted image 20260809142431.png

② 画像データ等のダウンロード

Ghostのエクスポート機能は

  • 記事データ、ページデータ
  • サイトタイトル、説明文、ナビゲーションメニュー、タグ、著者プロフィール等の設定
    等は含まれますが、記事内の画像データやテーマファイルは含まれません。
    なので、これらは別途持ってくる必要があります。

FileZilla等のFTP/SFTPクライアントソフトを利用して別途ダウンロードしておきましょう。なお、ダウンロード対象のデータは以下にまとまっているので、ここをダウンロードします。

/var/www/ghost/content

※「/var/www/ghost/」の部分はインストール時に決めているので、ここじゃない可能性あり。

③ 環境設定ファイルのダウンロード

次にサーバー設定周りのファイルをダウンロードします。前の設定を忘れると復元できなくなる可能性があるため、バックアップしておくのが推奨です。

  • config.production.json (/var/www/ghost/content 配下)
  • Nginxの設定ファイル (/etc/nginx/sites-available 配下)

この辺りをダウンロードしておけば、充分なはずです。

移行先サーバーで実施すること

① 移行先サーバーにログイン

移行先サーバーが提供しているターミナル機能や、Tera Termなどで移行先サーバーにログインします。

② OS更新&Ghost用の非rootユーザー作成

以下のコマンドでOS更新とユーザ作成を実施します。「ghostuser」の部分は任意のユーザ名でOKです。なおユーザ作成時に決めたパスワードは忘れないようにメモしておきましょう。今後ずっと使います。

apt update && apt upgrade -y
adduser ghostuser
usermod -aG sudo ghostuser
su - ghostuser

③ Nginx, MySQL, Node.js, Ghost-CLIのインストール

次にGhostのインストール条件を整えます。

sudo apt install -y nginx mysql-server
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g ghost-cli@latest

④ Ghost用ディレクトリの作成&権限付与

Ghostのインストール用ディレクトリの作成と権限付与を実施します。ユーザ名は先ほどの手順で決めたものを指定、作成するディレクトリ「/var/www/ghost」については任意でOKです。

sudo mkdir -p /var/www/ghost
sudo chown ghostuser:ghostuser /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost

⑤ Ghostのインストール

Ghostをインストールします。

ghost install

なお、このコマンドを発行すると色々聞かれます。特にこだわりがないのであれば、以下で入力するのが楽かと思います。

  • Enter your blog URL: ブログのURLを指定
  • Enter your MySQL hostname: そのままEnterでOK
  • Enter your MySQL password: そのままEnterでOK
  • Enter your Ghost database name: そのままEnterでOK
  • Do you wish to set up "ghost" mysql user? (Y/n) Y
  • Do you wish to set up NGINX? (Y/n) Y
  • Do you wish to set up SSL? (Y/n) YにするとSSL設定が始まります。Nにすると後で別途実施となります。
  • Do you wish to set up Systemd? (Y/n) Y
  • Do you want to start Ghost? (Y/n) Y

※Ghostの更新などでインストール時の質問項目が変更される場合があります

⑥ 環境設定ファイルの見直し

移行元の設定情報をベースに、移行先サーバーの設定ファイル群の見直しを実施します。基本的には上書きで問題ないはずです。

⑦ contentディレクトリのアップロード

移行元サーバーからダウンロードしたファイル群を、移行先サーバーにアップロードします。ここもFileZilla等を利用して行いましょう。

⑧ データのインポート

移行元サーバーからエクスポートしたJSONファイルデータをインポートします。
管理画面にログインし「Settings」→「Advanced」→「Import」と進みます。その中にある「Universal import」をクリックすると、アップロード画面が表示されるので、そこからアップロードしてください。

Pasted image 20260809151301.png

移行完了!

これで移行作業完了です。あとは実際に画面をポチポチしながら、記事が表示されているか、記事内の画像データ等が読み込まれているか等を確認しましょう。それと管理画面にログインできるかどうかの確認も必須です!(設定しくってると、ログインが上手く動かなかったりします)

まとめ

移行前に準備するのは

  • エクスポートJSON
  • 画像データなど
  • 環境設定情報

の3つ!ここさえ押さえておけば移行できます!あと、コマンド作業が多くなりがちなので、クライアント設定は作業前にやっておくと吉です。

最後に

実際の移行にかかった時間より、この記事書くのにかかった時間の方が長い!