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 を一致させ、続いて管理者を作成し、メールを設定して、データベースとコンテンツフォルダーの両方をバックアップしてください。
コーディングエージェントが読む内容です(https://zenavo.app/ja-JP/blog/self-host-ghost.md)。
Markdown を読み込めませんでした。直接開いてください: https://zenavo.app/ja-JP/blog/self-host-ghost.md