Linux サーバーに Ghost をセルフホストしてインストールする方法

Linux サーバーに Ghost をセルフホストしてインストールする方法

Ghost は、ブログやニュースレター サービスを簡単に作成できるオープンソースのコンテンツ管理プログラムです。Ghost(Pro) サービスに登録して CMS を使用することも、より技術的な知識がある場合は、サーバー上でセルフホストすることもできます。ここでは後者、つまり Linux サーバー上のセルフホスト Ghost を紹介します。

Ghost をサーバー上でセルフホストする必要がある理由

Ghostブログの利点の 1 つは、箱から出してすぐに機能する、機能満載の統合プラットフォームを提供することです。これには、分析の追跡、投稿の収益化、購読者向けの自動ニュースレターの作成などの機能が含まれます。

Ghost ダッシュボードのスクリーンショット。

Ghost をサーバーにインストールすると、データの管理をサードパーティに依存せずにパブリッシャーになることができます。これは、物議を醸しているトピックについて批判的な記事を発表しているジャーナリストの場合に役立ちます。

最後に、Ghost は技術者以外のユーザーでも導入と保守が簡単です。従来の CMS プラットフォームとは異なり、Ghost はホスティング マシンに「設定すれば後は忘れる」ことができるオールインワン ソリューションを提供します。

Ghost をサーバーにインストールする

前提条件: 始める前に、利用可能な Linux サーバーと Ghost インストールをホストするドメイン名がすでにあることを前提としています。Linux サーバーをレンタルする必要がある場合は、DigitalOceanまたはLinodeをお勧めします。

Docker を使用するので、最初にサーバーに Docker をインストールする必要があります。

1. Docker プロジェクトのリポジトリ公開キーをインストールします。

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

2. マシンの apt config ディレクトリに新しいリポジトリ ファイルを作成します。

sudo nano /etc/apt/sources.list.d/docker.list

3. 次のコード行を新しいリポジトリ ファイル内に貼り付けます。

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable

4. システムのリポジトリ リストを更新し、マシン内の既存のバイナリをアップグレードします。

sudo apt updatesudo apt upgrade

5. Docker と Docker Compose をその依存関係とともにインストールします。

sudo apt install wget docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

6. ユーザーを Docker グループに追加します

sudo usermod -aG docker $USER

7. 起動時に実行されるように Docker サービスを設定します。

sudo systemctl enable docker.service

8. サーバーを再起動します。

sudo reboot

SMTP 配信用に Gmail を設定する

Ghost には独自の電子メール配信クライアントが付属していないため、電子メール配信のために Gmail に接続する必要があります。

1. Web ブラウザを開き、Ghost インスタンスにリンクする Gmail アカウントにログインします。

2. アカウントのプロフィール アイコンをクリックし、[Google アカウントの管理] をクリックします。

3. 「セキュリティ」カテゴリを選択し、「Google へのサインイン方法」サブカテゴリの下にある「2 段階認証プロセス」オプションをクリックします。

Gmail アカウントの 2 段階認証プロセスを強調表示するスクリーンショット。

4. 電話番号を確認し、2 段階認証プロセスを有効にします

5. 「セキュリティ」カテゴリに戻り、「2 段階認証プロセス」オプションを再度クリックします。これにより、アカウントの新しい二次キーを設定できる新しいメニュー画面が開きます。ページの一番下までスクロールし、「アプリのパスワード」をクリックします。

を示すスクリーンショット

6. 最初のドロップダウン リストで「メール」を選択し、2 番目のドロップダウン リストで「その他」を選択します。

7. テキストボックスに「Gmail for Ghost」と入力し、「生成」をクリックします。これにより、カスタム アプリケーション パスワードを含む黄色のテキスト ボックスのあるウィンドウが開きます。

Ghost 用に生成されたアプリケーション パスワードを示すスクリーンショット。

Dockerコンテナの構築

1. Ghost インストールの dockerfile 用の新しいディレクトリを作成します。

mkdir ~/ghost
cd ~/ghost

2. お気に入りのテキスト エディターを使用して、新しい docker-compose.yml ファイルを作成します。

nano. /docker-compose.yml

3. 次のコード ブロックを新しい docker-compose.yml ファイル内に貼り付けて保存します。

---
version: "3"
services:
ghost:
image: ghost:latest
restart: always
ports:
- 8080:2368
environment:
database__client: mysql
database__connection__host: db
database__connection__database: ghost
database__connection__user: ghost
database__connection__password: ghost
url: ${GHOST_URL}
mail__transport: ${MAIL_TRANSPORT}
mail__options__host: ${MAIL_HOST}
mail__options__port: ${MAIL_PORT}
mail__options__secureConnection: ${MAIL_SECURE_CONNECTION}
mail__options__auth__user: ${MAIL_USER}
mail__options__auth__pass: ${MAIL_PASSWORD}
volumes:
- ghost-data:/var/lib/ghost/content
links:
- db
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
cap_add:
- SYS_NICE
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-data: null
ghost-db: null

4. Ghost docker ディレクトリ内に「.env」ファイルを作成します。

nano. /.env

5. 次のコード ブロックを新しいファイル内に貼り付けます。環境ファイル:

# URLGHOST_URL="#REPLACE_ME_WITH_DOMAIN_NAME#"# DatabaseMYSQL_ROOT_PASSWORD="#REPLACE_ME_WITH_SECURE_PASSWORD#"# SMTP variablesMAIL_SERVICE="Gmail"MAIL_TRANSPORT="SMTP"MAIL_USER="#REPLACE_ME_WITH_YOUR_GMAIL_ADDRESS#"MAIL_PASSWORD="#REPLACE_ME_WITH_YOUR_APP_PASSWORD#"MAIL_HOST="smtp.gmail.com"MAIL_PORT="465"MAIL_SECURE_CONNECTION="true"

  • 「GHOST_URL」変数の値を「#REPLACE_ME_WITH_DOMAIN_NAME#」から完全なドメイン名に変更します。
リモート Ghost インスタンスの URL を表示するターミナル。
  • 「MYSQL_ROOT_PASSWORD」の値を十分にランダムなパスワードに置き換えます。
  • 「MAIL_USER」と「MAIL_PASSWORD」の両方の値を、Gmail アカウントのメール アドレスとそのアプリケーション パスワードに変更します。

6. 次のコマンドを実行して、Ghost Docker コンテナを構築します。

sudo docker compose up -d

リバースプロキシの設定

Ghost がバックエンドで実行されている場合、Ghost にパブリックにアクセスできるようにリバース プロキシを設定する必要があります。この場合、Nginx のリバース プロキシを使用します。

1. Nginx Web サーバー パッケージをインストールします。これは、インターネットから接続を取得して Ghost にリダイレクトするリバース プロキシ デーモンとして機能します。

sudo apt install nginx

2. お気に入りのテキスト エディターを使用して、新しい Nginx サイト構成ファイルを作成します。

sudo nano /etc/nginx/sites-available/ghost

3. 次のコード ブロックを新しいサイト構成ファイル内に貼り付けます。

server {
listen 80;
listen [::]:80;

root /var/www/html;
server_name ghost.myvpsserver.top;


location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8080;
}}

4. Ghost サイト構成のシンボリック リンクを作成します。

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/

5. systemctl を使用して Nginx Web サーバー サービスを有効にします。

sudo systemctl enable --now nginx.service

Nginx リバース プロキシで SSL を有効にする

1. 「コア」スナップ パッケージがマシンに存在することを確認します。

sudo snap install core

2. certbot スナップ パッケージをインストールします。

sudo snap install certbot --classic

3. 次のコマンドを実行して、certbot インストールを電子メール アドレスに登録します。

sudo certbot register --agree-tos --email ramces@email.invalid

4. Ghost ブログ用の新しい SSL 証明書をリクエストします。

sudo certbot --nginx -d ghost.myvpsserver.top

5. Web ブラウザを開いてドメイン名をロードし、新しい Ghost インスタンスが SSL 経由でアクセスできるかどうかをテストします。

リモート サーバーからの動作中の Ghost インスタンスを示すスクリーンショット。

ローカルマシン上で Ghost を実行する

サーバーがなく、Ghost をローカル マシンにインストールしたい場合は、それも可能です。さらに、Tailscale を利用すると、ブラウザ上のどこからでもアクセスできます。

1. Tailscale VPN デーモンをマシンにインストールし、Tailscale アカウントにリンクします。Tailscale 管理者コンソールに移動し、コンソールの上部バーにある [DNS] タブをクリックします。

Tailscale 管理コンソールの [DNS] タブを強調表示したスクリーンショット。

2. 「テールネット名」サブカテゴリの下にある「テールネット名の変更…」ボタンをクリックします。

を強調表示するスクリーンショット

3. マシンのホスト名を「ghost」に設定し、その後に Tailscale ネットワークの新しいサブドメインを続けます。

sudo hostnamectl set-hostname ghost.your-tailnet.ts.net

テールスケールファネルの有効化

1. Tailscale 管理者コンソールを開き、「DNS」タブをクリックします。

2. ページの一番下までスクロールし、「HTTPS を有効にする…」をクリックします。

Tailscale ホストの HTTPS オプションを示すスクリーンショット。

3. ページの先頭までスクロールして戻り、「アクセス制御」タブをクリックします。

を強調表示するスクリーンショット

4. 「ポリシーにファネルを追加」ボタンをクリックします。

を強調表示するスクリーンショット

5. 次のコマンドを実行して、Tailscale とローカル Docker コンテナーの間にリバース プロキシを作成します。

sudo tailscale serve https / http://127.0.0.1:8080

6. 次のコマンドを実行して、リバース プロキシの Tailscale ファネルを有効にします。

sudo tailscale funnel 443 on

7. Web ブラウザを開いて Tailscale アドレスを読み込み、Tailscale ファネルを通じて新しい Ghost インスタンスにアクセスできるかどうかをテストします。

Tailscale 上で動作している Ghost インストールを示すスクリーンショット。

Ghost を初めて使用する場合

1. Web ブラウザを開き、Ghost インストール URL に移動し、続いてサブディレクトリ「/ghost」に移動します。

Ghost セットアップ ページの正しい URL を示す Web ブラウザのアドレス バーのスクリーンショット。

2. 最初のフィールドをクリックして、新しい Ghost ブログの名前を入力します。残りのフィールドに管理者ユーザーの詳細を入力し、「アカウントを作成して公開を開始」をクリックします。

を示すスクリーンショット

Ghost で最初の投稿を作成する

1. Ghost オンボーディング ページの [最初の投稿を書く] ボタンをクリックします。

Ghost の最初のステップのオンボーディング ページを示すスクリーンショット。

2. これにより、単純なテキスト投稿を作成できるプレーン テキスト エディターが表示されます。新しいテスト投稿を作成したら、「公開」をクリックします。

3. Ghost のフロント ページをチェックして、新しい投稿が通過したかどうかを確認します。

Ghost への新しいユーザーの追加

1. Ghost 管理者コンソールに戻り、ページの左側のサイドバーにある「メンバー」をクリックします。

2. ページの右上隅にある「新規メンバー」ボタンをクリックします。

現在の Ghost インスタンスのメンバーのリストを示すスクリーンショット。

3. 新しいメンバーの詳細を入力し、[保存] をクリックしてブログのニュースレター フィードに追加します。

よくある質問

Tailscale Funnel には制限がありますか?

はい。デフォルトでは、Tailscale でトラフィックを公開できるのは、TCP を使用した 3 つのポート (443、8443、および 10000) 経由のみです。これは、VoIP やゲーム サーバーなどのリアルタイム オンライン サービスを公開できなくなることを意味します。

Tailscale ドメイン名をパーソナライズできますか?

いいえ。これは、Tailscale の各 DNS アドレスが特定のアカウントに合わせて調整されているためです。これにより、サービスはより大きな Tailscale ネットワーク内の他のマシンから自分のマシンを識別できるようになります。

コンピューターがオフラインの場合、Ghost ブログの実行は停止しますか?

はい。独自のハードウェアでホスティングする場合の欠点の 1 つは、Web サイトの稼働時間がマシンの稼働時間に依存することです。これは、ホスト マシンがダウンすると、Ghost ブログもダウンすることを意味します。

画像クレジット: WORKING OFFICE COMMUNICATION PEOPLE USING COMPUTER BLOG CONCEPTと123RF による伝統的なハロウィーンのゴースト クッキー。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です