Ghost のブログとニュースレターを自分で運用する:ドメイン、メール、メンバー、バックアップ

Zenavo のテンプレートから Ghost をデプロイし、HTTPS のドメインを設定して管理者アカウントを作成します。メンバー登録とニュースレターが動作するようにメールを設定し、MySQL とコンテンツフォルダーの両方をバックアップする方法を説明します。

この記事は English、简体中文、繁體中文、Español、Bahasa Indonesia でもお読みいただけます。

Ghost はオープンソースのパブリッシングプラットフォームです。記事、有料・無料のメンバーシップ、ニュースレターを1つの管理画面で扱え、すっきりしたエディターと検索エンジンに強いテーマを備えています。WordPress のプラグインの面倒を見ずに自分のブログを持ちたいなら、Ghost がよく合います。

このガイドでは、Zenavo の Ghost テンプレートを使って、レンタルまたは所有しているサーバーで Ghost と MySQL を動かし、ドメイン、メール、バックアップを設定します。

始める前に

  • Zenavo に接続した Linux サーバー。テンプレートの要求は約 1 GB のメモリです。MySQL の分の余裕も残しておいてください。
  • blog.example.com などのブログ用ドメイン。
  • メールプロバイダーの SMTP アカウント(後で使います)。メンバー登録、ログインリンク、スタッフの招待はすべてメールで送られます。

テンプレートをデプロイする

Ghost テンプレートを開きます。デプロイの前に Site URL の入力を求められます。これは読者がアクセスする完全なアドレスで、https://blog.example.com のような形式です。次の2つのサービスが作成されます。

サービス 保存する内容
mysql MySQL 8.4。ボリューム /var/lib/mysql、root パスワードは自動生成
ghost ghost:5-alpine。HTTP ポート 2368、コンテンツフォルダー /var/lib/ghost/content(画像とテーマ)

Site URL は ghost サービスの url 変数になります。Ghost はすべてのリンクをこの値から生成するため、https:// も含めて、最終的に使うドメインと完全に一致している必要があります。

ドメインを設定し、管理者を作成する

ghost サービスの Networking タブで、同じ ドメインをポート 2368 に割り当て、サーバーを指す A レコードを追加して、HTTPS が有効になるのを待ちます(ドメインと HTTPS)。

https://blog.example.com/ghost を開き、手順に従ってサイト名を設定し、最初の管理者アカウントを作成します。管理画面は常に /ghost にあります。ほかのセルフホストのアプリと同じく、ドメインにアクセスできるようになったら、すぐに自分でこの作業を済ませてください。

後で別のドメインに移る場合は、url 変数を変更して再デプロイし、新しいドメインを割り当てます。url を変えずにドメインだけを変更すると、リンクが古いアドレスを指したままになります。

メールを設定する

Ghost が送るメールには2種類あります。

  • トランザクションメール:スタッフの招待、パスワードリセット、メンバー登録、ログインリンク。どの SMTP サービスでも使えます。
  • ニュースレターの一斉配信:すべての購読者に送る記事。現在、Ghost はこれを Mailgun 経由でしか送信できません。管理画面の Settings → Email newsletter で、Mailgun のドメインと API キーを設定します。

トランザクションメールは、ghost サービスの Variables で設定します。Ghost では、入れ子になった設定をダブルアンダースコアで表します。

変数 例
mail__transport SMTP
mail__options__host smtp.example.com
mail__options__port 465
mail__options__secure true
mail__options__auth__user SMTP のユーザー名
mail__options__auth__pass SMTP のパスワード
mail__from "ブログ名" <noreply@example.com>

ghost サービスを再デプロイし、スタッフを招待するか、別のアドレスでメンバー登録して、メールが届くことを確認します。

サーバー事業者によっては送信用の SMTP ポートをブロックしており、その場合はタイムアウトとして現れます。メールプロバイダーが提供する別のポート(2525 など)を使うか、サーバー事業者にブロックの解除を依頼してください。また、メールプロバイダーの案内に従ってドメインに SPF と DKIM を設定してください。設定しないと、メールが迷惑メールに振り分けられやすくなります。

書き始める前の設定

  • Settings → General:サイトのタイトル、説明、タイムゾーン、言語。
  • Settings → Design:テーマを選ぶか、自作のテーマをアップロードします。テーマはコンテンツフォルダーに保存されます。
  • Settings → Membership:読者が登録できるかどうか、一部の記事をメンバー限定にするかどうか。
  • Settings → Code injection:セルフホストの Umami や Plausible などのアクセス解析スクリプトを設置する場所です。

バックアップ

Ghost のデータは2か所にあります。記事、メンバー、設定は MySQL に、画像、テーマ、アップロードしたファイルは ghost サービスの /var/lib/ghost/content ボリュームにあります。両方をバックアップしてください。

  • データベースは、mysql サービスの Backup & Restore タブからいつでもバックアップできます。
  • コンテンツフォルダーはボリュームです。バックアップ中はプロジェクトを停止し、終わったら再開してください。

Ghost 自身のエクスポート機能(管理画面の設定にあります)は、記事と設定を JSON で保存します。別の Ghost への移行には便利ですが、画像は含まれません。重要なデータは、バックアップをダウンロードして手元に保管し、一度新しいプロジェクトに復元して確認しておきましょう。詳しくはバックアップと復元をご覧ください。

アップグレード

テンプレートは ghost:5-alpine を使っているため、再デプロイすると最新の Ghost 5 が取得されます。先に MySQL とコンテンツフォルダーをバックアップし、リリースノートを読んでください。メジャーアップグレードではデータベースのマイグレーションが行われることがあり、古いイメージに戻しても元に戻らない場合があります。その場合は、アップグレード前のバックアップから復元してください。

よくある質問

サイトのリンクが localhost や古いドメインを指している場合は? url 変数が、実際に使っているアドレスと一致していません。正しい完全なアドレスを設定して再デプロイしてください。

メンバーにログインメールが届かない場合は? ghost サービスのログでメールのエラーを確認してください。たいていは、SMTP ポートがブロックされている、ユーザー名やパスワードが間違っている、または mail__from のドメインがメールプロバイダーで認証されていないことが原因です。

WordPress やほかのサービスから移行できますか? Ghost には、WordPress、Substack などからの公式の移行ツールとガイドがあります。インポートした画像はコンテンツフォルダーに保存されるため、バックアップの対象に含めてください。

Ghost と WordPress、どちらを選ぶべきですか? 手間をかけずに執筆とニュースレターを続けたいなら Ghost を、多くのプラグインやネットショップ、複雑なページが必要なら WordPress が向いています。Zenavo には WordPress テンプレートもあります。

まずは Ghost テンプレートから始めましょう。最初にドメインと url を一致させ、続いて管理者を作成し、メールを設定して、データベースとコンテンツフォルダーの両方をバックアップしてください。